1---------------------------------------- 212 December 2025. Summary of changes for version 20251212: 3 4Major changes: 5 6Update many existing ACPI tables to follow the ACPI 6.6 Specification 7changes and/or newly approved ASWG ECRs - multiple contributors 8 9Add a few new ACPI tables: IOVT, SWFT, KEYP - multiple contributors 10 11Add many new UUIDs, Hardware/PnP/ACPI IDs - Armin Wolf and Pawel 12Chmielewski 13 14Support a few new special methods (_xxx format) and modify few existing 15ones to stay compliant with the latest ACPI Specification changes 16 17Improve existing tools/utilities and fix/clean up some problematic usages 18along with patching certain vulnerabilities 19 20 21---------------------------------------- 227 August 2025. Summary of changes for version 20250807: 23 24Major changes: 25 26Added option to skip the global lock for SMM - Huacai Chen 27 28Fixed non-NUL terminated string implementations - Ahmed Salem 29 30Fixed CCEL and CDAT templates - Ahmed Salem 31 32Fixed a major Linux kernel bug (UAF) that was triggered by unequal number 33of method parameters (definition) vs arguments (invocation) in different 34places - Peter Williams, Hans de Goede, Rafael Wysocki 35 36Define distinct D3 states (D3Hot and D3Cold) that help clarify the device 37behavior support - Aymeric Wibo 38 39A few cleanups, improvements to existing table supports, small fixes, 40spelling corrections etc. 41 42 43---------------------------------------- 444 April 2025. Summary of changes for version 20250404: 45 46Major changes: 47 48Update all the copyright continuation year to 2025 in the license header 49of all files 50 51Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony 52Luck & V L Sunil) 53 54Add a license file to the project which is a great improvement (Dionna 55Glaze) 56 57Update DMAR and TPM2 tables to support their latest versions (Alexey 58Neyman and Stuart Yoder) 59 60A few fixes including local cache allocation, FFixedHW Region, attribute 61packing, string vs. non-string char array, vsnprintf()etc. along with 62some comments, spelling errors and code alignment (multiple awesome 63contributors) 64 65 66---------------------------------------- 6712 December 2024. Summary of changes for version 20241212: 68 69Major changes: 70 71Fix 2 critical CVE addressing memory leaks - Seunghun Han 72 73EINJ V2 updates - Zaid Alali (Ampere Computing) 74 75CDAT updates - Ira Weiny (Intel Corporation) 76 77Fix mutex handling, do not release ones that were never acquired - Daniil 78Tatianin 79 80Experiment with new tag name format Ryyyy_mm_dd to solve chronological 81sorting problems 82 83 84---------------------------------------- 8527 September 2024. Summary of changes for version 20240927: 86 87Major changes: 88 89Fix the acpixf.h file which caused issues for the last release (before 90this) 20240827 91 92Fix the pointer offset for the SLIC table 93 94Verify the local environment and GitHub commits are all in sync which was 95a problem with the second from last release (before this)20240322 (aka 9620240323 - date issue) 97 98 99 100---------------------------------------- 10127 August 2024. Summary of changes for version 20240827: 102 103Major changes: 104 105Fix the PHAT table working: ensure that the PHAT firmware health record 106offset works correctly, fix various sub-table offsets, prevent 107segmentation faults when encountering invalid device paths. Contributed 108by: Armin Wolf <W_Armin@gmx.de> 109 110Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin 111<99danilt@gmail.com> 112 113Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone 114(Fedora) <ahs3@ahs3.net> 115 116Add support for QWordPCC and DWordPCC by Jose Marinho (ARM) 117 118Fix the integer to hex string conversions by Armin Wolf 119 120Detecting FACS in reduced HW mode and allowing setting waking vector 121thereby waking up from S3 state 122 123Fixing issues with crossing page boundaries when mapping operation 124regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD) 125 126Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables 127 128Fix multiple issues with table parsing, compilation and disassembly by 129Myra DeMere (Google) 130 131Allow for more flexibility in _DSM usage. 132 133 134---------------------------------------- 13522 March 2024. Summary of changes for version 20240322: 136 137Major changes: 138 139Update all the license header year from 2023 to 2024. 140 141Fix table argument ordering to work properly with iasl. 142 143Get rid of the annoying repeated warning types in MSVC and Windows. 144 145Fix a test in ASLTS with edge case failure. 146 147Fix a couple of issues with how GPEs are counted and enabled. 148 149Add new tables for various architectures/OS, mainly RISC-V and also 150update many more. 151 152Add an option to either make the output deterministic or non- 153deterministic. 154 155Remove redundant checks, duplicated code and fix spellings in various 156files. 157 158Fix flex arrays for C++ compilers and also make ACPICA overall more 159compatible with different compilers which throw warnings related to 160memory sanitization etc. 161 162 163---------------------------------------- 16428 June 2023. Summary of changes for version 20230628: 165 1660) Global changes: 167 168Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: 169?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of 170range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag 171to Timer (since there are no runtime arguments). Reported by: Abhishek 172Mainkar abmainkar@nvidia.com. 173 174Added a define for size of acpi_srat_generic_affinity DeviceHandle. 175Replaced a magic number with a define. The Linux kernel code will utilize 176this. Reported by Dave Jiang dave.jiang@intel.com. 177 178Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5. 179 1801) ACPICA kernel-resident subsystem: 181 182Added port definitions for CDAT SSLBIS. Add upstream port and any port 183definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com. 184 185Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> 186ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang 187dave.jiang@intel.com. 188 1891) ACPICA kernel-resident subsystem: 190 191Fix GCC 12 dangling-pointer warning. We're storing a persistent pointer 192to an ephemeral local variable which technically is a dangling pointer 193and the compiler is correct. However, since we never indirect the 194pointer, this is a safe operation and we can suppress the warning. 195 196Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly 197so we must include it explicitly or we won't have the type definition for 198uintptr_t. 199 2002) iASL Compiler/Disassembler and ACPICA tools:. 201 202IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table 203is updated with new nodes. Add compile and dump functionality for these 204new structures. 205 206AcpiExec: Added a new command, ?interrupt?. The Interrupt command 207simulates an interrupt with a IntID (GSIV) equal to the first argument of 208the call/invocation. The acpiexec code simulates the behavior by OSPM: 209execute the _EVT method of the GED device associated with that IntID. 210Submitted by: Jose Marinho jose.marinho@arm.com. 211 212AcpiExec: Detect GED device and keep track of _EVT. The GED device is 213described by a _HID of ACPI0013. This code traverses the namespace 214identifying all GED devices. For each GED device in the namespace we 215record the Interrupt object and the _EVT method. This information is used 216when an interrupt is simulated via the ?interrupt? command. Submitted by: 217Jose Marinho jose.marinho@arm.com. 218---------------------------------------- 21931 March 2023. Summary of changes for version 20230331: 220 221This release is available at https://acpica.org/downloads 222 2230) Global changes: 224 225 226Update all copyright notices to the year 2023. This effects all source 227modules, as well as utility signons. 228Add OS-specific support for Zephyr RTOS. 229Fix miscellaneous code that accesses various objects. 230Remove some dead code. 231Add C ?Flexible Array? support. 232Add support for 64 bit LoongArch compilation. 233Add first batch of RISC-V related definitions. 234Performed a global automated update to remove tabs, fix indentation 235issues, etc. 236 2371) ACPICA kernel-resident subsystem: 238 239hwvalid: Drop port I/O validation. 240 2412) ACPICA tools and utilities: 242 243iASL: Added full macro support in the preprocessor. Example: 244#define ABCD(a,b,c,d) a+b+c-d 245 246Known macro support limitations (at this time): 247 No support for multi-line #define macros (backslash continuation 248lines) 249 No support for the C-style ternary operator 250 No support for the stringizing operator (#) 251 No support for the concatenation (token pasting) operator (##) 252 No support for variable number of macro arguments 253 254Add support for AMD Secure Processor Table (ASPT) version 1. 255Add support for Arm's MPAM ACPI table version 2. 256ACPI 6.5: MADT: add support for trace buffer extension in GICC. 257Headers: Delete bogus NodeArray array of pointers from AEST table. 258PHAT table support is still ongoing. 259 260 261---------------------------------------- 26220 October 2022. Summary of changes for version 20221020: 263 264This release is available at https://acpica.org/downloads 265 2660) Global changes: 267 268Allow disabling of -Werror. For distro maintainers having `-Werror` can 269delay update of GCC. Since every GCC release might add new warnings that 270were not yet captured, it might break the build of packages. With this 271change, distros can now build with `NOWERROR=TRUE` instead of patching 272either the errors or the makefiles. The default behavior keeps on using 273`-Werror`. 274 2751) ACPICA kernel-resident subsystem: 276 277Added support for FFH Operation Region special context data. FFH(Fixed 278Function Hardware) Opregion is approved to be added in ACPI 6.5 via code 279first approach[1]. It requires special context data similar to GPIO and 280Generic Serial Bus as it needs to know platform specific offset and 281length. 282 283Reverted this commit "executer/exsystem: Warn about sleeps greater than 28410 ms." Due to user complaints about valid sleeps greater than 10ms seen 285in some existing machines -- generating lots of warnings. 286 287Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that 288EBDA region must be at least 1KiB in size. Because this is not 289guaranteed, it might happen that while scanning the memory for RSDP 290pointer, the kernel touches memory above 640KiB. This is unwanted as the 291VGA memory range may not be decoded or even present when running under 292virtualization. 293 294Check that EBDA pointer is in valid memory. If the memory at 0x40e is 295uninitialized, the retrieved physical memory address of EBDA may be 296beyond the low memory (i.e. above 640K). If so, the kernel may 297unintentionally access the VGA memory, that might not be decoded or even 298present in case of virtualization. 299 3002) iASL Compiler/Disassembler and ACPICA tools: 301 302Completed the existing partial support for the CDAT "table". Although 303this isn't technically an ACPI table (It doesn't go into the XSDT), it is 304possible to support this table in the Data Table compiler. Created one 305new file, "utilities/utcksum.c", used to centralize checksum 306generation/validation into one location. Includes changes to makefiles 307and MSVC project files. 308 309Updated support for the IORT table - update to version E.e 310 311Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table 312 313iASL: Added CCEL table to both compiler/disassembler. 314 315iASL: NHLT table: Fixed compilation of optional undocumented fields 316 317iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 318("iASL: Add CCEL table to both compiler/disassembler") introduced the 319iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL 320table member reference. To fix it, change ACPI_TDEL_OFFSET with 321ACPI_CCEL_OFFSET. 322 323---------------------------------------- 32431 March 2022. Summary of changes for version 20220331: 325 3260) Global changes: 327 328Update all copyright notices to the year 2022. This effects all source 329modules, as well as utility signons. 330 331 3321) ACPICA kernel-resident subsystem: 333 334For the ASL Sleep() operator, issue a warning if the sleep value is 335greater than 10 Milliseconds. Quick boottime is important, so warn about 336sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 337ms, so excessive delays should be called out. 10 ms is chosen randomly, 338but three of such delays would already make up ten percent of the 339boottime. 340 341Namespace: Avoid attempting to walk the Namespace if the Namespace does 342not exist. 343 344AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the 345LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a 346pass/fail integer. Now load returns a pass/fail integer, as well as 347storing the return value in an optional 2nd argument. 348 349Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid 350"performing pointer subtraction with a null pointer has undefined 351behavior" compiler warnings, use uintptr_t and offsetof() that are always 352available during Linux kernel builds to define ACPI_UINTPTR_T and the 353ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code 354in the Linux kernel. 355 356Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted 357by superm1. 358 359executer/exsystem: Inform users about ACPI spec violation for the Stall() 360operator. Values greater than 100 microseconds violate the ACPI 361specification, so warn users about it. From the ACPI Specification 362version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: 363> The implementation of Stall is OS-specific, but must not relinquish 364> control of the processor. Because of this, delays longer than 100 365> microseconds must use Sleep instead of Stall. 366 367 3682) iASL Compiler/Disassembler and ACPICA tools: 369 370Data Table Compiler/Disassembler: Add support for the APMT table - ARM 371Performance Monitoring Unit table. Submitted by @bwicaksononv. 372 373Data Table Compiler/Disassembler: For MADT, add support for the OEM- 374defined subtables (Types 0x80-0x7F). 375 376Data Table Compiler: Fixed a problem with support for the SDEV table, 377where a subtable Length was not computed correctly. 378 379Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT 380Acpi table support. 381 382Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and 383add template. Submitted by MasterDrogo. 384 385Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: 386iASL/NHLT: Rename linux specific structures to DeviceInfo to improve 387readability of the code. 388iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. 389Undocumented bytes at the end of Endpoint Descriptor can be present 390independently of Linux-specific structures. Their size can also vary. 391iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 392bytes of size and then an amount of bytes specified by size. All of the 393terminators that I've seen had a size equal to 4, but theoretically it 394can vary. 395 396iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C). 397 398iASL: Remove a remark due to excessive output. Removed a remark for 399duplicate Offset() operators, due to a user complaint. 400 401---------------------------------------- 40217 December 2021. Summary of changes for version 20211217: 403 4041) ACPICA kernel-resident subsystem: 405 406Hardware: Do not flush CPU cache when entering S4 and S5. According to 407ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to 408S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of 409the sleep state. Blind cache flush on entering S5 causes problems for 410TDX. 411 412Avoid subobject buffer overflow when validating RSDP signature. Since the 413Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to 414it is only to a 4-char array, and so trying to read past the 4th 415character, as will be done when it is an RSDP, reads beyond the bounds of 416the accessed member. Contributed by jrtc27. 417 418Add support for PCC Opregion special context data. PCC Opregion added in 419ACPIC 6.3 requires special context data similar to GPIO and Generic 420Serial Bus as it needs to know the internal PCC buffer and its length as 421well as the PCC channel index when the opregion handler is being executed 422by the OSPM. Adds support for the special context data needed by PCC 423Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com> 424 4252) iASL Compiler/Disassembler and ACPICA tools: 426 427iASL: Completed compiler support for the NHLT ACPI table. 428 429iASL/NHLT table: Fixed a reported problem where a fault would occur 430during disassembly of a "Linux-Specific" section if the "Specific Data" 431part was not present. 432 433iASL: Added full support (compiler and disassembler) for the AGDI ACPI 434table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>. 435 436iASL: Added full support for the TDEL ACPI table. 437 438iASL table compiler: FADT support updates: 4391) Allow the 32-bit DSDT address to be zero. 4402) Issue error if both the 32-bit and 64-bit DSDT addresses are zero. 441 442iASL: Fix unaligned accesses to local cache allocations. Contributed by 443jrtc27. 444 445iASL: Open binary input files in binary mode, not text mode Affects 446binary input AML files, as well as binary data table files, for 447disassembly. 448 449---------------------------------------- 45030 September 2021. Summary of changes for version 20210930: 451 452This release is available at https://acpica.org/downloads 453 4541) ACPICA kernel-resident subsystem: 455 456Hardware: Avoid evaluating methods too early during system resume. During 457wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called 458and it tries to get memory from the OS in order to evaluate a control 459method, but if KFENCE is enabled in the Linux kernel, the memory 460allocation attempt causes an IRQ work to be queued and a self-IPI to be 461sent to the CPU running the code which requires the memory controller to 462be ready, so if that happens too early in the wakeup path, it doesn't 463work. 464 465Prevent that from taking place by calling AcpiGetSleepTypeData() for S0 466upfront, when preparing to enter a given sleep state, and saving the data 467obtained by it for later use during system wakeup. 468 469Added a new _OSI string, "Windows 2020". Posted by superm1. 470 4712) iASL Compiler/Disassembler and ACPICA tools: 472 473iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS 474objects: 475New/latest rules: Under a Device Object: 476 1) If _PRS is present, must have _CRS and _SRS 477 2) If _SRS is present, must have _PRS (_PRS requires _CRS and 478_SRS) 479 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS 480requires _CRS and _SRS) 481 4) If _SRS is present, probably should have a _DIS (Remark only) 482 483iASL table disassembler: Added disassembly support for the NHLT ACPI 484table. Note: support for Vendor-defined microphone arrays and SNR 485extensions are not supported at this time -- mostly due to a lack of 486example tables. Actual compiler support for NHLT is forthcoming. 487 488Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It 489uses the same subtable structure as the existing Generic Initiator 490Affinity type. 491 492Added the flag for online capable in the MADT, introduced in ACPI 6.3. 493Posted by superm1. 494 4953) ACPICA documentation: Updated the legal info (that appears at the 496start of the Documents) to clarify distribution rights that are granted. 497 498 499---------------------------------------- 50030 July 2021. Summary of changes for version 20210730: 501 502This release is available at https://acpica.org/downloads 503 5041) ACPICA kernel-resident subsystem: 505 5062) iASL Compiler/Disassembler and ACPICA tools: 507 508iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). 509 Under the Device Object: 510 1) If _DIS is present, must have a _CRS and _SRS 511 2) If _PRS is present, must have a _CRS, _DIS, and _SRS 512 3) If _SRS is present, must have a _CRS and _DIS 513A warning will be issued for each of these cases. 514Note: For existing ASL/projects, these warnings may be disabled by 515specifying this on the command line: 516"-vw 3141" 517 518iASL Table Disassembler/Table compiler: Fix for WPBT table with no 519command-line arguments. Handle the case where the Command-line 520Arguments table field does not exist (zero). 521 522Headers: Add new DBG2 Serial Port Subtypes 523The Microsoft Debug Port Table 2 (DBG2) specification revision 524September 21, 2020 comprises additional Serial Port Subtypes [1]. 525Reflect that in the actbl1.h header file. Submitted by: 526semihalf-wojtas-marcin 527 528iASL: Add full support for the AEST table (data compiler) 529Includes support in the table compiler and the disassembler. 530 531Add PRMT module header to facilitate parsing. 532This structure is used in to parse PRMT in other Operating Systems 533that relies on using subtable headers in order to parse ACPI tables. 534Although the PRMT doesn't have "subtables" it has a list of module 535information structures that act as subtables. 536 537iASL: Table disassembler: Add missing strings to decode subtable types. 538Includes the MADT and CEDT tables. 539 540 541---------------------------------------- 54204 June 2021. Summary of changes for version 20210604: 543 5441) ACPICA kernel-resident subsystem: 545 546Cleaned up (delete) the context mutex during local address handler object 547deletion. 548 549Fixed a memory leak caused by the _CID repair function. 550 551Added support for PlatformRtMechanism OperationRegion handler. Adds a new 552utility function, AcpiUtConvertUuidToString. Writing a buffer to a 553PlatformRtMechanism fieldunit invokes a bidirectional transaction. The 554input buffer contains 26 bytes containing 9 bytes of status, a command 555byte and a 16-byte UUID. This change will simply pass this incoming 556buffer to a handler registered by the OS. 557 5582) iASL Compiler/Disassembler and ACPICA tools: 559 560Added full support for the PRMT ACPI table (Platform Runtime Mechanism 561Table). Includes support in the iASL compiler, the disassembler, and the 562template generator. 563 564Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. 565 566Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI 567table. 568 569Added full support for the SVKL (Storage Volume Key Location Table) ACPI 570table. Header file support from Kuppuswamy Sathyanarayanan 571<sathyanarayanan.kuppuswamy@linux.intel.com>. 572 573Completed full support for the IVRS (I/O Virtualization Reporting 574Structure) ACPI table. Added compiler support for IVRS, updated 575disassembler support. Adds a new utility, UtIsIdInteger, to determine if 576a HID/CID is an integer or a string. 577 578Headers: Added more structs to the CEDT table: CXL fixed memory window 579structure. 580 581ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. 582 583---------------------------------------- 58431 March 2021. Summary of changes for version 20210331: 585 586This release is available at https://acpica.org/downloads, and includes 587all ACPI 6.4 support 588 5891) ACPICA kernel-resident subsystem: 590ACPI 6.4: iASL: deprecate DDBHandleObj keyword 591Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 592allocating an object using kmalloc(), but then frees it 593using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 594Fixed a race condition in generic serial bus operation region handler. 595Fixed by Hans de Goede. 596 5972) iASL Compiler/Disassembler and ACPICA tools: 598 599ACPI 6.4: NFIT: add Location Cookie field 600ACPI 6.4: HMAT: add new fields/flags 601ACPI 6.4: Add new flags in SRAT 602ACPI 6.4: add SDEV secure access components 603ACPI 6.4: add Csi2Bus resource template 604ACPI 6.4: add support for PHAT table 605ACPI 6.4: add support for PMTT table 606Add disassembly support for the IVRS table. Compilation of the table is 607not yet complete. 608Fixed a potential infinite loop due to type mismatch. The for-loop is 609using a UINT8 counter and comparing the upper 610limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 611the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 612will wrap around to zero and the loop will never exit. I suspect 613the AslGbl_ExpectedMessagesIndex is never that high, but fixing 614this does future proof the code and cleans up static analysis 615warnings.Colin King. 616iASL/TableCompiler: update it with IORT table E.b revision changes. From 617shamiali2008. 618iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 619off-by: Jean-Philippe Brucker. 620iASL/TableCompiler: Add compilation support for CEDT table. Also, update 621the CEDT template. 622 623---------------------------------------- 62405 January 2021. Summary of changes for version 20210105: 625 626This release is available at https://acpica.org/downloads 627 628 6291) ACPICA kernel-resident subsystem: 630 631Updated all copyrights to 2021. This affects all ACPICA source code 632modules. 633 6342) iASL Compiler/Disassembler and ACPICA tools: 635 636ASL test suite (ASLTS): Updated all copyrights to 2021. 637 638Tools and utilities: Updated all signon copyrights to 2021. 639 640iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 641MTMR. Al Stone. 642 643 644---------------------------------------- 64517 December 2020. Summary of changes for version 20201217: 646 647This release is available at https://acpica.org/downloads 648 649 6501) ACPICA kernel-resident subsystem: 651 652Note: The implementation of ACPI 6.4 is underway, and is expected to be 653mostly finished next month, when ACPI 6.4 is released. 654 655From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 656several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 657enable this. 658 659AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 660These included a few casts, as well as a null pointer check. 661 662Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 663implicit fallthrough, as well as __attribute__((__fallthrough__)) and 664comments to explicitly denote that cases of fallthrough were intentional. 665Clang also supports this warning and statement attribute, but not the 666comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 667of GCC. With assistance from @nickdesaulniers. 668 6692) iASL Compiler/Disassembler and ACPICA tools: 670 671Added improvement to method call analysis by saving the return type and 672relaxing certain cases of type checking. 673 674iASL Table Compiler: Improved info messages. Added a message to the -T 675option for when the default template (DSDT) is used. 676Also added a note for when multiple SSDTs are created with a DSDT that 677the SSDTs are created in the same file as the DSDT. 678 679 680---------------------------------------- 681 68213 November 2020. Summary of changes for version 20201113: 683 684This release is available at https://acpica.org/downloads 685 686 6871) ACPICA kernel-resident subsystem: 688 689Interpreter: fixed a memory leak by using use existing buffer in _HID 690repair. There was a memory leak that occurred when a _CID object is 691defined as a package containing string objects. When _CID is checked for 692any possible repairs, it calls a helper function to repair _HID (because 693_CID basically contains multiple _HID entries). The _HID repair function 694assumes that string objects are standalone objects that are not contained 695inside of any packages. The _HID repair function replaced the string 696object with a brand new object and attempted to delete the old object by 697decrementing the reference count of the old object. Strings inside of 698packages have a reference count of 2 so the _HID repair function leaves 699this object in a dangling state and causes a memory leak. Instead of 700allocating a brand new object and removing the old object, use the 701existing object when repairing the _HID object. 702 703Added function trace macros to improve namespace debugging. The namespace 704repair mechanism does not have function tracing macros. Add several trace 705macros to improve debuggability. 706 707Handle "orphan" _REG methods for GPIO OpRegions. Before this change 708AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 709matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 710Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 711The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 712UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 713to potential issues with checks for OpRegion availability, or in other 714words checks if _REG has been called for the OpRegion which the ACPI code 715wants to use. Except for the "orphan" EC handling, ACPICA core does not 716call _REG on an ACPI node which does not define an OpRegion matching the 717type being registered; and the reference design DSDT, from which most 718Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 719UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 720were assigned ACPI controlled functions in the reference design. Together 721this leads to the perfect storm, at least on the Cherry Trail based 722Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 723and has added the Cherry Trail specific UserDefined(0x93) opregion to its 724GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 725availability check for the standard GeneralPurposeIo OpRegion. This 726clearly is a bug in the DSDT, but this does work under Windows. This 727issue leads to the intel vbtn driver reporting the device always being in 728tablet-mode at boot, even if it is in laptop mode. Which in turn causes 729userspace to ignore touchpad events. So in other words, this issue causes 730the touchpad to not work at boot. This change fixes this by extending the 731"orphan" _REG method handling to also apply to GPIO address-space 732handlers. 733 734 7352) iASL Compiler/Disassembler and ACPICA tools: 736 737iASL: Added more info to namespace dump file (-ln option). In a separate 738section of the dump file (after the main namespace dump), emit the full 739pathname for each namespace node, its type, and the ASL filename and line 740number where it is declared. 741 742AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 743x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 744is omitted, all iASL exceptions are displayed. 745 746iASL: Use StringLiteral instead of StringData for some ASL macros. The 747use of the stringData rule allows for some "string" oriented opcodes 748(Such as ToString, ToHexString, etc.) None of which make sense with the 749macros in question. This change modifies the StringData part of the rule 750for these macros to a simple string literal - thus disallowing the use 751of ToString, ToHexString, etc. 752The following ASL operators (macros) are affected: 753EisaId 754Fprintf 755Printf 756ToUuid 757Unicode 758Note: The MS compiler requires the use of string literals for these 759operators also. 760 761iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 762the list of "known" UUIDs for the input to the ToUUID macro. 763 764Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 765NFIT table. 766 767 768---------------------------------------- 769 77025 September 2020. Summary of changes for version 20200925: 771 772This release is available at https://acpica.org/downloads 773 774 7751) ACPICA kernel-resident subsystem: 776 777Preserve memory opregion mappings. The ACPICA's strategy with respect to 778the handling of memory mappings associated with memory operation regions 779is to avoid mapping the entire region at once which may be problematic at 780least in principle (for example, it may lead to conflicts with 781overlapping mappings having different attributes created by drivers). It 782may also be wasteful, because memory opregions on some systems take up 783vastchunks of address space while the fields in those regions actually 784accessed by AML are sparsely distributed. 785 786For this reason, a one-page "window" is mapped for a given opregion on 787the first memory access through it and if that "window" does not cover an 788address range accessed through that opregion subsequently, it is unmapped 789and a new "window" is mapped to replace it. Next, if the new "window" is 790not sufficient to access memory through the opregion in question in the 791future, it will be replaced with yet another "window" and so on. That 792may lead to a suboptimal sequence of memory mapping and unmapping 793operations, for example if two fields in one opregion separated from each 794other by a sufficiently wide chunk of unused address space are accessed 795in an alternating pattern. 796 797Added support for 64 bit risc-v compilation. Useful for acpica tools and 798incorporating ACPICA into the Firmware Test Suite. Colin Ian King 799<colin.king@canonical.com>. 800 801Added support for SMBus predefined names (from SMBus Control Method 802Interface Specification, Version 1.0, December 10, 1999. New predefined 803names: 804 _SBA 805 _SBI 806 _SBR 807 _SBT 808 _SBW 809 810AML Disassembler: Added a new command, "All <NameSeg>". This command will 811evaluate all objects in the current namespace whose NameString contains 812the input NameSeg as the last element of the NameString. Useful for 813debugging. 814 815 8162) iASL Compiler/Disassembler and ACPICA tools: 817 818iASL: fixed a crash that occurred when predefined objects return packages 819with lengths that exceed the initializer list. 820 821iASL: added more detail to external resolution error message when 822compiling multiple definition blocks. 823 824iASL: added a remark for an attempt to create a nameseg or namestring 825containing lower-case letters. This should prevent declaring multiple 826namesegs or namestrings in an attempt to refer to different objects (with 827different cases), but actually refer to the same object(s). 828 829iASL: improve alias analysis by saving object type. If the alias is a 830method type, the parameter count is also recorded. 831 832AcpiExec: Increase the default loop timeout value. Was 1 second, is now 83310 seconds. Prevents unnecessary timeouts when executing control methods 834from the command line. 835 836AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 837list. Includes: 838 Memory Device 839 Generic Buttons Device 840 NVDIMM Root Device 841 Control Method Battery 842 Device Graphs for _DSD method 843 Hierarchical Data Extension 844....ARM CoreSight Graph 845 846---------------------------------------- 847 848 84917 July 2020. Summary of changes for version 20200717: 850 851This release is available at https://acpica.org/downloads 852 853 8541) ACPICA kernel-resident subsystem: 855 856Do not increment OperationRegion reference counts for field units. Recent 857server firmware has revealed that this reference count can overflow on 858large servers that declare many field units (thousands) under the same 859OperationRegion. This occurs because each field unit declaration will add 860a reference count to the source OperationRegion. This release solves the 861reference count overflow for OperationRegion objects by preventing 862fieldUnits from incrementing their parent OperationRegion's reference 863count. 864 865Replaced one-element arrays with flexible-arrays, which were introduced 866in C99. 867 868Restored the readme file containing the directions for generation of 869ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 870located at: generate/msvc2017/readme.txt 871 8722) iASL Compiler/Disassembler and ACPICA tools: 873 874iASL: Fixed a regression found in version 20200214. Prevent iASL from 875emitting an extra byte of garbage data when control methods declared a 876single parameter type without using braces. This extra byte is known to 877cause a blue screen on the Windows AML interpreter. 878 879iASL: Made a change to allow external declarations to specify the type of 880a named object even when some name segments are not defined. 881This change allows the following ASL code to compile (When DEV0 is not 882defined or not defined yet): 883 884 External (\_SB.DEV0.OBJ1, IntObj) 885 External (\_SB.DEV0, DeviceObj) 886 887iASL: Fixed a problem where method names in "Alias ()" statement could be 888misinterpreted. They are now interpreted correctly as method invocations. 889 890iASL: capture a method parameter count (Within the Method info segment, 891as well as the argument node) when using parameter type lists. 892 893---------------------------------------- 894 895 89628 May 2020. Summary of changes for version 20200528: 897 898 8991) ACPICA kernel-resident subsystem: 900 901Removed old/obsolete Visual Studio files which were used to build the 902Windows versions of the ACPICA tools. Since we have moved to Visual 903Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 904project files. The new subdirectory and solution file are located at: 905 906 acpica/generate/msvc2017/AcpiComponents.sln 907 908 9092) iASL Compiler/Disassembler and ACPICA tools: 910 911iASL: added support for a new OperationRegion Address Space (subtype): 912PlatformRtMechanism. Support for this new keyword is being released for 913early prototyping. It will appear in the next release of the ACPI 914specification. 915 916iASL: do not optimize the NameString parameter of the CondRefOf operator. 917In the previous iASL compiler release, the NameString parameter of the 918CondRefOf was optimized. There is evidence that some implementations of 919the AML interpreter do not perform the recursive search-to-parent search 920during the execution of the CondRefOf operator. Therefore, the CondRefOf 921operator behaves differently when the NameString parameter is a single 922name segment (a NameSeg) as opposed to a full NamePath (starting at the 923root scope) or a NameString containing parent prefixes. 924 925iASL: Prevent an inadvertent remark message. This change prevents a 926remark if within a control method the following exist: 9271) An Operation Region is defined, and 9282) A Field operator is defined that refers to the region. 929This happens because at the top level, the Field operator does not 930actually create a new named object, it simply references the operation 931region. 932 933Removed support for the acpinames utility. The acpinames was a simple 934utility used to populate and display the ACPI namespace without executing 935any AML code. However, ACPICA now supports executable opcodes outside of 936control methods. This means that executable AML opcodes such as If and 937Store opcodes need to be executed during table load. Therefore, acpinames 938would need to be updated to match the same behavior as the acpiexec 939utility and since acpiexec can already dump the entire namespace (via the 940'namespace' command), we no longer have the need to maintain acpinames. 941 942 In order to dump the contents of the ACPI namespace using acpiexec, 943execute the following command from the command line: 944 945 acpiexec -b "n" [aml files] 946 947---------------------------------------- 948 949 95030 April 2020. Summary of changes for version 20200430: 951 9521) ACPICA kernel-resident subsystem: 953 954Cleaned up the coding style of a couple of global variables 955(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 956AcpiProtocolLengths was made static, and the definition of 957AcpiGbl_NextCmdNum was moved to acglobal.h. 958 959 9602) iASL Compiler/Disassembler and ACPICA tools: 961 962iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 963associated with a field. 964 965Disassembler: has been made more resilient so that it will continue to 966parse AML even if the AML generates ACPI namespace errors. This enables 967iASL to disassemble some AML that may have been compiled using older 968versions of iASL that no longer compile with newer versions of iASL. 969 970iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 971was a mixup where _NIG required one parameter and _NIH required zero 972parameters. This change swaps these parameter requirements. Now it is 973required that _NIH must be called with one parameter and _NIG requires 974zero parameters. 975 976iASL: Allow use of undefined externals as long as they are protected by 977an if (CondRefOf (...)) block when compiling multiple definition blocks. 978 979iASL: Fixed the type override behavior of named objects that are declared 980as External. External declarations will no longer override the type of 981the actual definition if it already exists. 982 983AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 984command line wildcard support on Windows. Note: the AcpiNames utility is 985essentially redundant with the AcpiExec utility (using the "namespace" 986command) and is therefore deprecated. It will be removed in future 987releases of ACPICA. 988 989Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 990operators. The disassembler is intended to emit existing ASL code as-is. 991Therefore, error messages emitted during disassembly should be ignored or 992handled in a way such that the disassembler can continue to parse the 993AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 994parsing for create operators in order to complete parsing ASL termlists. 995 996iASL DataTable Compiler: IVRS table: fix potentially uninitialized 997variable warning. Some compilers catch potential uninitialized variables. 998This is done by examining branches of if/else statements. This change 999replaces an "else if" with an "else" to fix the uninitialized variable 1000warning. 1001 1002 1003---------------------------------------- 100426 March 2020. Summary of changes for version 20200326: 1005 1006 10071) ACPICA kernel-resident subsystem: 1008 1009Performed a code clean-up to prevent build errors on early versions of 1010GCC-10. 1011 1012Added the NHLT table signature. iASL data table compiler/disassembler 1013support for this table is coming soon. 1014 1015 10162) iASL Compiler/Disassembler and ACPICA tools: 1017 1018AcpiExec: Fixed several problems with the namespace initialization file 1019(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 1020errors, several seg faults, and enhancements to line parsing within the 1021init file. In addition, each object found in the init file and it's new 1022value is displayed, as well as any such entries that do not have a 1023corresponding name in the namespace. For reference, the syntax for the 1024various supported data types are presented below: 1025 PCHG 0x777788889999BBBB // Integer 1026 \DEV1.STR1 "XYZ" // String 1027 BUF1 (88 99 AA) // Buffer 1028 PKG1 [0x1111 0x2222] // Package 1029 \BF1 0x7980 // BufferField 1030 RCRV 0x0123456789ABCDEF // Field Unit 1031 1032iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 1033can be used anywhere in a given ASL file to configure iASL to expect an 1034iASL compiler error code on the line where this macro was placed. If the 1035error code does not exist, an error is generated. This is intended to be 1036used for ACPICA's ASL test suite, but can be used by ASL developers as 1037well. 1038 1039iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 1040IVRS table parsing supported only IVHD type 10h structures. Parsing an 1041IVHD type 11h caused the iasl to report unknown subtable type. Add 1042necessary structure definition for IVHD type 11h and apply correct 1043parsing method based on subtable type. Micha? ?ygowski. 1044 1045iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 1046According to AMD IOMMU Specification Revision 3.05 the reserved field 1047should be IOMMU Feature Reporting. Change the name of the field to the 1048correct one. Micha? ?ygowski. 1049 1050acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 1051based on suggestions by David Seifert and Benjamin Berg. 1052 1053iASL: table compiler: removed an unused variable (DtCompilerParserResult) 1054causing linking errors. Patch based on suggestions by David Seifert and 1055Benjamin Berg. 1056 1057iASL: table compiler: make LexBuffer static to avoid linking errors in 1058newer compilers. Patch based on suggestions by David Seifert and Benjamin 1059Berg. 1060 1061iASL: fixed type matching between External and Named objects. External 1062object types can only be expressed with ACPI object type values that are 1063defined in the ACPI spec. However, iASL uses ACPI object type values that 1064are local to ACPICA in addition to the values defined in the ACPI spec. 1065This change implements type matching to map some object type values 1066specific to ACPICA to ones that are defined in the ACPI spec. 1067 1068iASL: Dropped the type mismatch compiler error that can arise from 1069External declarations to a warning. This warning can occur when there is 1070a type difference between the external declaration and the actual object 1071declaration (when compiling multiple files/modules simultaneously). 1072 1073iASL: removed an incorrect error message regarding externals. This change 1074removes an incorrect error that is emitted when a duplicate external 1075declaration does not contain a type that opens a scope. This is incorrect 1076because the duplicate external with conflicting types are already caught 1077by iASL and it doesn't make any sense to enforce what this conflicting 1078type should be. 1079 1080AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 1081surrounded by parens. Otherwise, a logical statement that applies a 1082logical not operator to this macro could result in a computation that 1083applies the operator to the left side of the logical and but not the 1084right. Reported-by: John Levon <john.levon@joyent.com> 1085 1086Fixed a problem with the local version of sprint(): On 32-bit, the 1087provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 1088String + Size will wrap, meaning End < Start, and 1089AcpiUtBoundStringOutput() will never output anything as a result. The 1090symptom seen of this was acpixtract failing to output anything -- with a 1091custom build that included utprint.c. Signed-off-by: John Levon 1092<john.levon@joyent.com> 1093 1094iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 1095ACPI specification. 1096 1097 1098---------------------------------------- 109914 February 2020. Summary of changes for version 20200214: 1100 1101 11021) ACPICA kernel-resident subsystem: 1103 1104Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 1105in a guest when it receives a sleep trigger from the hypervisor. When the 1106guest resumes from this power state, it does not see the SleepEnabled 1107bit. In other words, the sleepHibernation (S4) is triggered in a guest 1108when it receives a sleep trigger from the hypervisor. When the guest 1109resumes from this power state, it does not see the SleepEnabled bit. In 1110other words, the sleep button is not enabled on waking from an S4 state. 1111This causes subsequent invocation of sleep state to fail since the 1112guest.button is not enabled on waking from an S4 state. This causes 1113subsequent invocation of sleep state to fail in the guest. Fix this 1114problem by enabling the sleep button in ACPI legacy wake. From Anchal 1115Agarwal <anchalag@amazon.com>. 1116 1117Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 1118for checking the status bits of all enabled GPEs in one go. It is needed 1119to distinguish spurious SCIs from genuine ones when deciding whether or 1120not to wake up the system from suspend-to-idle. 1121 1122Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 1123using HOST in their environment to represent the host name for their 1124machines. Avoid this problem by renaming this variable from HOST to 1125ACPI_HOST. 1126 1127MSVC 2017 project files: Enable multiprocessor generation to improve 1128build performance. 1129 1130Added a macro to get the byte width of a Generic Address structure. New 1131ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 1132ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 1133 1134 11352) iASL Compiler/Disassembler and ACPICA tools: 1136 1137iASL: Implemented full support for the (optional, rarely used) ReturnType 1138and ParameterTypesList for the Method, Function, and External operators. 1139For Method declarations, the number of individual ParameterTypes must 1140match the declaration of the number of arguments (NumArgs). This also 1141Fixes a problem with the External operator where extra/extraneous bytes 1142were emitted in the AML code if the optional ReturnType/ParameterTypes 1143were specified for a MethodObj declaration. 1144New error message: 11451) Method NumArgs count does not match length of ParameterTypes list 1146 1147iASL: Implemented detection of type mismatches between External 1148declarations and named object declarations. Also, detect type mismatches 1149between multiple External declarations of the same Name. 1150New error messages: 11511) Type mismatch between external declaration and actual object 1152declaration detected 11532) Type mismatch between multiple external declarations detected 1154 1155iASL: Implemented new error messages for External operators that specify 1156a ReturnType and/or ParameterTypesList for any object type other than 1157control methods (MethodObj). 1158New error messages: 11591) Return type is only allowed for Externals declared as MethodObj 11602) Parameter type is only allowed for Externals declared as MethodObj 1161 1162iASL: Implemented two new remark/warning messages for ASL code that 1163creates named objects from within a control method. This is very 1164inefficient since the named object must be created and deleted each time 1165the method is executed. 1166New messages: 11671) Creation of named objects within a method is highly inefficient, use 1168globals or method local variables instead (remark) 11692) Static OperationRegion should be declared outside control method 1170(warning) 1171 1172iASL: Improved illegal forward reference detection by adding support to 1173detect forward-reference method invocations. 1174 1175iASL: Detect and issue an error message for NameStrings that contain too 1176many individual NameSegs (>255). This is an AML limitation that is 1177defined in the ACPI specification. 1178New message: 11791) NameString contains too many NameSegs (>255) 1180 1181acpidump: windows: use GetSystemFirmwareTable API for all tables except 1182SSDT. By using this API, acpidump is able to get all tables in the XSDT 1183 1184iASL: Removed unused parser file and updated msvc2017 project files. 1185Removed the obsolete AslCompiler.y from the repository. 1186 1187iASL: msvc2017: Fixed macros in the file dependency list to prevent 1188unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 1189 1190Disassembler: Prevent spilling error messages to the output file. All 1191errors are directed to the console instead. These error messages 1192prevented re-compilation of the resulting disassembled ASL output file 1193(.DSL). 1194 1195 1196---------------------------------------- 119710 January 2020. Summary of changes for version 20200110: 1198 1199 12001) ACPICA kernel-resident subsystem: 1201 1202Updated all copyrights to 2020. This affects all ACPICA source code 1203modules. 1204 1205 12062) iASL Compiler/Disassembler and ACPICA tools: 1207 1208ASL test suite (ASLTS): Updated all copyrights to 2020. 1209 1210Tools and utilities: Updated all signon copyrights to 2020. 1211 1212iASL: fix forward reference analysis for field declarations. Fixes 1213forward reference analysis for field declarations by searching the 1214parent scope for the named object when the object is not present in 1215the current scope. 1216 1217iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 1218full pathname of the name that already exists is printed. 1219 1220iASL: Enhance duplicate Case() detection for buffers. Add check for 1221buffers with no initializer list (these buffers will be filled with 1222zeros at runtime.) 1223 1224 1225---------------------------------------- 122613 December 2019. Summary of changes for version 20191213: 1227 1228 12291) ACPICA kernel-resident subsystem: 1230 1231Return a Buffer object for all fields created via the CreateField 1232operator. Previously, an Integer would be returned if the size of 1233the field was less than or equal to the current size of an Integer. 1234Although this goes against the ACPI specification, it provides 1235compatibility with other ACPI implementations. Also updated the 1236ASLTS test suite to reflect this new behavior. 1237 12382) iASL Compiler/Disassembler and ACPICA tools: 1239 1240iASL: Implemented detection of (and throw an error for) duplicate 1241values for Case statements within a single Switch statement. Duplicate 1242Integers, Strings, and Buffers are supported. 1243 1244iASL: Fix error logging issue during multiple file compilation -- 1245Switch to the correct input file during error node creation. 1246 1247iASL: For duplicate named object creation, now emit an error instead 1248of a warning - since this will cause a runtime error. 1249 1250AcpiSrc: Add unix line-ending support for non-Windows builds. 1251 1252iASL: Add an error condition for an attempt to create a NameString 1253with > 255 NameSegs (the max allowable via the AML definition). 1254 1255 1256---------------------------------------- 125718 October 2019. Summary of changes for version 20191018: 1258 1259 12601) ACPICA kernel-resident subsystem: 1261 1262Debugger: added a new command: ?Fields [address space ID]?. This command 1263dumps the contents of all field units that are defined within the 1264namespace with a particular address space ID. 1265 1266Modified the external interface AcpiLoadTable() to return a table index. 1267This table index can be used for unloading a table for debugging. 1268 ACPI_STATUS 1269 AcpiLoadTable ( 1270 ACPI_TABLE_HEADER *Table, 1271 UINT32 *TableIndex)) 1272 1273Implemented a new external interface: AcpiUnloadTable() This new function 1274takes a table index as an argument and unloads the table. Useful for 1275debugging only. 1276 ACPI_STATUS 1277 AcpiUnloadTable ( 1278 UINT32 TableIndex)) 1279 1280Ported the AcpiNames utility to use the new table initialization 1281sequence. The utility was broken before this change. Also, it was 1282required to include most of the AML interpreter into the utility in order 1283to process table initialization (module-level code execution.) 1284 1285Update for results from running Clang V8.0.1. This fixes all "dead 1286assignment" warnings. There are still several "Dereference of NULL 1287pointer" warnings, but these have been found to be false positive 1288warnings. 1289 1290 12912) iASL Compiler/Disassembler and ACPICA tools: 1292 1293iASL: numerous table compiler changes to ensure that the usage of 1294yacc/bison syntax is POSIX-compliant. 1295 1296iASL/disassembler: several simple bug fixes in the data table 1297disassembler. 1298 1299Acpiexec: expanded the initialization file (the -fi option) to initialize 1300strings, buffers, packages, and field units. 1301 1302 1303---------------------------------------- 130416 August 2019. Summary of changes for version 20190816: 1305 1306This release is available at https://acpica.org/downloads 1307 1308 13091) ACPICA kernel-resident subsystem: 1310 1311Modified the OwnerId mechanism to allow for more Owner Ids. The previous 1312limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 1313exceptions on machines with a large number of initialization threads, 1314many CPU cores and nested initialization control methods. 1315 1316Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 1317checking if the given GPE (as represented by a GPE device handle and a 1318GPE number) is currently active and dispatching it (if that's the case) 1319outside of interrupt context. 1320 1321Table load: exit the interpreter before initializing objects within the 1322new table This prevents re-acquiring the interpreter lock when loading 1323tables 1324 1325Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 1326uk Kim 1327 1328Macros: removed pointer math on a null pointer. Causes warnings on some 1329compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 1330instead of using arithmetic. 1331 1332Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 1333across all "printf-like" internal functions. Also, cleanup all calls to 1334such functions (both in 32-bit mode and 64-bit mode) now that they are 1335analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 1336 1337 13382) iASL Compiler/Disassembler and ACPICA tools: 1339 1340iASL: implemented a new data table compiler flex/bison front-end. This 1341change is internal and is not intended to result in changes to the 1342compiled code. This new compiler front-end can be invoked using the -tp 1343option for now, until the old mechanism is removed. 1344 1345ASLTS: Implemented a new data table compiler test suite. This test suite 1346generates all table templates and compile/disassemble/re-compile/binary- 1347compare each file. 1348 1349iASL: return -1 if AML files were not generated due to compiler errors 1350 1351iASL: added a warning on use of the now-legacy ASL Processor () keyword. 1352 1353iASL: added an error on _UID object declaration that returns a String 1354within a Processor () declaration. A _UID for a processor must be an 1355Integer. 1356 1357iASL: added a null terminator to name strings that consist only of 1358multiple parent prefixes (^) 1359 1360iASL: added support to compile both ASL and data table files in a single 1361command. 1362 1363Updated the tool generation project files that were recently migrated to 1364MSVC 2017 to eliminate all new warnings. The new project files appear in 1365the directory \acpica\generate\msvc2017. This change effectively 1366deprecates the older project files in \acpica\generate\msvc9. 1367 1368 1369---------------------------------------- 137003 July 2019. Summary of changes for version 20190703: 1371 1372 13731) ACPICA kernel-resident subsystem: 1374 1375Remove legacy module-level support code. There were still some remnants 1376of the legacy module-level code executions. Since we no longer support 1377this option, this is essentially dead code and has been removed from the 1378ACPICA source. 1379 1380iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1381scope. If these named objects are declared outside the root scope, they 1382will not be invoked by any host Operating System. 1383 1384Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 1385one) can be enabled in two situations. First, the GPEs with existing _Lxx 1386and _Exx methods are enabled implicitly by ACPICA during system 1387initialization. Second, the GPEs without these methods (like GPEs listed 1388by _PRW objects for wakeup devices) need to be enabled directly by the 1389code that is going to use them (e.g. ACPI power management or device 1390drivers). 1391 1392In the former case, if the status of a given GPE is set to start with, 1393its handler method (either _Lxx or _Exx) needs to be invoked to take care 1394of the events (possibly) signaled before the GPE was enabled. In the 1395latter case, however, the first caller of AcpiEnableGpe() for a given GPE 1396should not be expected to care about any events that might be signaled 1397through it earlier. In that case, it is better to clear the status of 1398the GPE before enabling it, to prevent stale events from triggering 1399unwanted actions (like spurious system resume, for example). 1400 1401For this reason, modify AcpiEvAddGpeReference() to take an additional 1402boolean argument indicating whether or not the GPE status needs to be 1403cleared when its reference counter changes from zero to one and make 1404AcpiEnableGpe() pass TRUE to it through that new argument. 1405 1406 14072) iASL Compiler/Disassembler and ACPICA tools: 1408 1409The tool generation process has been migrated to MSVC 2017, and all 1410project files have been upgraded. The new project files appear in the 1411directory \acpica\generate\msvc2017. This change effectively deprecates 1412the older project files in \acpica\generate\msvc9. 1413 1414iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1415scope. If these named objects are declared outside the root scope, they 1416will not be invoked by any host Operating System 1417 1418---------------------------------------- 141909 May 2019. Summary of changes for version 20190509: 1420 1421 14221) ACPICA kernel-resident subsystem: 1423 1424Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 1425them") that causes problems with Thunderbolt controllers to occur if a 1426dock device is connected at init time (the xhci_hcd and thunderbolt 1427modules crash which prevents peripherals connected through them from 1428working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 1429Dispatch active GPEs at init time") to get undone, so the problem 1430addressed by commit ecc1165b8b74 appears again as a result of it. 1431 1432 14332) iASL Compiler/Disassembler and ACPICA tools: 1434 1435Reverted iASL: Additional forward reference detection. This change 1436reverts forward reference detection for field declarations. The feature 1437unintentionally emitted AML bytecode with incorrect package lengths for 1438some ASL code related to Fields and OperationRegions. This malformed AML 1439can cause systems to crash 1440during boot. The malformed AML bytecode is emitted in iASL version 144120190329 and 20190405. 1442 1443iASL: improve forward reference detection. This change improves forward 1444reference detection for named objects inside of scopes. If a parse object 1445has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 1446a named object that is declared later in the AML bytecode. This is 1447allowed if the reference is inside of a method and the declaration is 1448outside of a method like so: 1449 1450DefinitionBlock(...) 1451{ 1452 Method (TEST) 1453 { 1454 Return (NUM0) 1455 } 1456 Name (NUM0,0) 1457} 1458 1459However, if the declaration and reference are both in the same method or 1460outside any methods, this is a forward reference and should be marked as 1461an error because it would result in runtime errors. 1462 1463DefinitionBlock(...) 1464{ 1465 Name (BUFF, Buffer (NUM0) {}) // Forward reference 1466 Name (NUM0, 0x0) 1467 1468 Method (TEST) 1469 { 1470 Local0 = NUM1 1471 Name (NUM1, 0x1) // Forward reference 1472 return (Local0) 1473 } 1474} 1475 1476iASL: Implemented additional buffer overflow analysis for BufferField 1477declarations. Check if a buffer index argument to a create buffer field 1478operation is beyond the end of the target buffer. 1479 1480This affects these AML operators: 1481 1482 AML_CREATE_FIELD_OP 1483 AML_CREATE_BIT_FIELD_OP 1484 AML_CREATE_BYTE_FIELD_OP 1485 AML_CREATE_WORD_FIELD_OP 1486 AML_CREATE_DWORD_FIELD_OP 1487 AML_CREATE_QWORD_FIELD_OP 1488 1489 There are three conditions that must be satisfied in order to allow this 1490validation at compile time: 1491 1492 1) The length of the target buffer must be an integer constant 1493 2) The index specified in the create* must be an integer constant 1494 3) For CreateField, the bit length argument must be non-zero. 1495 1496Example: 1497 Name (BUF1, Buffer() {1,2}) 1498 CreateField (BUF1, 7, 9, CF03) // 3: ERR 1499 1500dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 1501Error 6165 - ^ Buffer index beyond end of 1502target buffer 1503 1504 1505---------------------------------------- 150605 April 2019. Summary of changes for version 20190405: 1507 1508 15091) ACPICA kernel-resident subsystem: 1510 1511Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 1512unconditionally clearing ACPI IRQs during suspend/resume") was added 1513earlier to stop clearing of event status bits unconditionally on suspend 1514and resume paths. Though this change fixed an issue on suspend path, it 1515introduced regressions on several resume paths. In the case of S0ix, 1516events are enabled as part of device suspend path. If status bits for the 1517events are set when they are enabled, it could result in premature wake 1518from S0ix. If status is cleared for any event that is being enabled so 1519that any stale events are cleared out. In case of S0ix, events are 1520enabled as part of device suspend path. If status bits for the events are 1521set when they are enabled, it could result in premature wake from S0ix. 1522 1523This change ensures that status is cleared for any event that is being 1524enabled so that any stale events are cleared out. 1525 1526 15272) iASL Compiler/Disassembler and ACPICA tools: 1528 1529iASL: Implemented an enhanced multiple file compilation that combines 1530named objects from all input files to a single namespace. With this 1531feature, any unresolved external declarations as well as duplicate named 1532object declarations can be detected during compilation rather than 1533generating errors much later at runtime. The following commands are 1534examples that utilize this feature: 1535 iasl dsdt.asl ssdt.asl 1536 iasl dsdt.asl ssdt1.asl ssdt2.asl 1537 iasl dsdt.asl ssdt*.asl 1538 1539---------------------------------------- 154029 March 2019. Summary of changes for version 20190329: 1541 1542 15431) ACPICA kernel-resident subsystem: 1544 1545Namespace support: Remove the address nodes from global list after method 1546termination. The global address list contains pointers to namespace nodes 1547that represent Operation Regions. This change properly removes Operation 1548Region namespace nodes that are declared dynamically during method 1549execution. 1550 1551Linux: Use a different debug default than ACPICA. There was a divergence 1552between Linux and the ACPICA codebases. In order to resolve this 1553divergence, Linux now declares its own debug default in aclinux.h 1554 1555Renamed some internal macros to improve code understanding and 1556maintenance. The macros below all operate on single 4-character ACPI 1557NameSegs, not generic strings (old -> new): 1558 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 1559 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 1560 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 1561 1562Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 1563table. 1564 1565Test suite: Update makefiles, add PCC operation region support 1566 1567 15682) iASL Compiler/Disassembler and Tools: 1569 1570iASL: Implemented additional illegal forward reference detection. Now 1571detect and emit an error upon detection of a forward reference from a 1572Field to an Operation Region. This will fail at runtime if allowed to 1573pass the compiler. 1574 1575AcpiExec: Add an address list check for dynamic Operation Regions. This 1576feature performs a sanity test for each node the global address list. 1577This is done in order to ensure that all dynamic operation regions are 1578properly removed from the global address list and no dangling pointers 1579are left behind. 1580 1581Disassembler: Improved generation of resource pathnames. This change 1582improves the code that generates resource descriptor and resource tag 1583pathnames. The original code used a bunch of str* C library functions 1584that caused warnings on some compilers. 1585 1586iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1587function can overwrite buffers if the calling code is not very careful. 1588In the case of generating a module/table header, use of memmove is a 1589better implementation. 1590 1591 15923) Status of new features that have not been completed at this time: 1593 1594iASL: Implementing an enhanced multiple file compilation into a single 1595namespace feature (Status): This feature will be released soon, and 1596allows multiple ASL files to be compiled into the same single namespace. 1597By doing so, any unresolved external declarations as well as duplicate 1598named object declarations can be detected during compilation (rather than 1599later during runtime). The following commands are examples that utilize 1600this feature: 1601 iasl dsdt.asl ssdt.asl 1602 iasl dsdt.asl ssdt1.asl ssdt2.asl 1603 iasl dsdt.asl ssdt*.asl 1604 1605ASL tutorial status: Feedback is being gathered internally and the 1606current plan is to publish this tutorial on the ACPICA website after a 1607final review by a tech writer. 1608 1609---------------------------------------- 161015 February 2019. Summary of changes for version 20190215: 1611 1612 16130) Support for ACPI specification version 6.3: 1614 1615Add PCC operation region support for the AML interpreter. This adds PCC 1616operation region support in the AML interpreter and a default handler for 1617acpiexec. The change also renames the PCC region address space keyword to 1618PlatformCommChannel. 1619 1620Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1621These methods provide OSPM with health information and device boot 1622status. 1623 1624PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1625defines if the trigger needs to be invoked by OSPM before or at the end 1626of kernel crash dump processing/handling operation. 1627 1628SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1629is used for describing devices such as heterogeneous processors, 1630accelerators, GPUs, and IO devices with integrated compute or DMA 1631engines. 1632 1633MADT: Add support for statistical profiling in GICC. Statistical 1634profiling extension (SPE) is an architecture-specific feature for ARM. 1635 1636MADT: Add online capable flag. If this bit is set, system hardware 1637supports enabling this processor during OS runtime. 1638 1639New Error Disconnect Recover Notification value. There are a number of 1640scenarios where system Firmware in collaboration with hardware may 1641disconnect one or more devices from the rest of the system for purposes 1642of error containment. Firmware can use this new notification value to 1643alert OSPM of such a removal. 1644 1645PPTT: New additional fields in Processor Structure Flags. These flags 1646provide more information about processor topology. 1647 1648NFIT/Disassembler: Change a field name from "Address Range" to "Region 1649Type". 1650 1651HMAT updates: make several existing fields to be reserved as well as 1652rename subtable 0 to "memory proximity domain attributes". 1653 1654GTDT: Add support for new GTDT Revision 3. This revision adds information 1655for the EL2 timer. 1656 1657iASL: Update the HMAT example template for new fields. 1658 1659iASL: Add support for the new revision of the GTDT (Rev 3). 1660 1661 16621) ACPICA kernel-resident subsystem: 1663 1664AML Parser: fix the main AML parse loop to correctly skip erroneous 1665extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1666byte extended opcodes. If an error occurs during an AML table load, the 1667AML parser will continue loading the table by skipping the offending 1668opcode. This implements a "load table at any cost" philosophy. 1669 1670 16712) iASL Compiler/Disassembler and Tools: 1672 1673iASL: Add checks for illegal object references, such as a reference 1674outside of method to an object within a method. Such an object is only 1675temporary. 1676 1677iASL: Emit error for creation of a zero-length operation region. Such a 1678region is rather pointless. If encountered, a runtime error is also 1679implemented in the interpreter. 1680 1681Debugger: Fix a possible fault with the "test objects" command. 1682 1683iASL: Makefile: support parent directory filenames containing embedded 1684spaces. 1685 1686iASL: Update the TPM2 template to revision 4. 1687 1688iASL: Add the ability to report specific warnings or remarks as errors. 1689 1690Disassembler: Disassemble OEMx tables as actual AML byte code. 1691Previously, these tables were treated as "unknown table". 1692 1693iASL: Add definition and disassembly for TPM2 revision 3. 1694 1695iASL: Add support for TPM2 rev 3 compilation. 1696 1697 1698---------------------------------------- 169908 January 2019. Summary of changes for version 20190108: 1700 1701 17021) ACPICA kernel-resident subsystem: 1703 1704Updated all copyrights to 2019. This affects all source code modules. 1705 1706 17072) iASL Compiler/Disassembler and Tools: 1708 1709ASL test suite (ASLTS): Updated all copyrights to 2019. 1710 1711Tools: Updated all signon copyrights to 2019. 1712 1713AcpiExec: Added a new option to dump extra information concerning any 1714memory leaks detected by the internal object/cache tracking mechanism. - 1715va 1716 1717iASL: Updated the table template for the TPM2 table to the newest version 1718of the table (Revision 4) 1719 1720 1721---------------------------------------- 172213 December 2018. Summary of changes for version 20181213: 1723 1724 17251) ACPICA Kernel-resident Subsystem: 1726 1727Fixed some buffer length issues with the GenericSerialBus, related to two 1728of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1729which are rarely seen in the field. For these, the LEN field of the ASL 1730buffer is now ignored. Hans de Goede 1731 1732Implemented a new object evaluation trace mechanism for control methods 1733and data objects. This includes nested control methods. It is 1734particularly useful for examining the ACPI execution during system 1735initialization since the output is relatively terse. The flag below 1736enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1737 #define ACPI_LV_EVALUATION 0x00080000 1738 1739Examples: 1740 Enter evaluation : _SB.PCI0._INI (Method) 1741 Exit evaluation : _SB.PCI0._INI 1742 Enter evaluation : _OSI (Method) 1743 Exit evaluation : _OSI 1744 Enter evaluation : _SB.PCI0.TEST (Method) 1745 Nested method call : _SB.PCI0.NST1 1746 Exit nested method : _SB.PCI0.NST1 1747 Exit evaluation : _SB.PCI0.TEST 1748 1749Added two recently-defined _OSI strings. See 1750https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1751osi. 1752 "Windows 2018" 1753 "Windows 2018.2" 1754 1755Update for buffer-to-string conversions via the ToHexString ASL operator. 1756A "0x" is now prepended to each of the hex values in the output string. 1757This provides compatibility with other ACPI implementations. The ACPI 1758specification is somewhat vague on this issue. 1759 Example output string after conversion: 1760"0x01,0x02,0x03,0x04,0x05,0x06" 1761 1762Return a run-time error for TermArg expressions within individual package 1763elements. Although this is technically supported by the ASL grammar, 1764other ACPI implementations do not support this either. Also, this fixes a 1765fault if this type of construct is ever encountered (it never has been). 1766 1767 17682) iASL Compiler/Disassembler and Tools: 1769 1770iASL: Implemented a new compile option (-ww) that will promote individual 1771warnings and remarks to errors. This is intended to enhance the firmware 1772build process. 1773 1774AcpiExec: Implemented a new command-line option (-eo) to support the new 1775object evaluation trace mechanism described above. 1776 1777Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1778instead of a "unknown table" message. 1779 1780AcpiHelp: Improved support for the "special" predefined names such as 1781_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1782used for "xx" and "x". 1783 1784---------------------------------------- 178531 October 2018. Summary of changes for version 20181031: 1786 1787 1788An Operation Region regression was fixed by properly adding address 1789ranges to a global list during initialization. This allows OS to 1790accurately check for overlapping regions between native devices (such as 1791PCI) and Operation regions as well as checking for region conflicts 1792between two Operation Regions. 1793 1794Added support for the 2-byte extended opcodes in the code/feature that 1795attempts to continue parsing during the table load phase. Skip parsing 1796Device declarations (and other extended opcodes) when an error occurs 1797during parsing. Previously, only single-byte opcodes were supported. 1798 1799Cleanup: Simplified the module-level code support by eliminating a 1800useless global variable (AcpiGbl_GroupModuleLeveCode). 1801 1802 18032) iASL Compiler/Disassembler and Tools: 1804 1805iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1806could cause a fault in the preprocessor. This was an inadvertent side- 1807effect from moving more allocations/frees to the local cache/memory 1808mechanism. 1809 1810iASL: Enhanced error detection by validating that all NameSeg elements 1811within a NamePatch actually exist. The previous behavior was spotty at 1812best, and such errors could be improperly ignored at compiler time (never 1813at runtime, however. There are two new error messages, as shown in the 1814examples below: 1815 1816dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1817Error 6161 - ^ One or more objects within 1818the Pathname do not exist (TTTT.BXXX) 1819 1820dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1821Error 6160 - One or more prefix Scopes do not exist ^ 1822(BBBB.CBF1) 1823 1824iASL: Disassembler/table-compiler: Added support for the static data 1825table TPM2 revision 3 (an older version of TPM2). The support has been 1826added for the compiler and the disassembler. 1827 1828Fixed compilation of DOS format data table file on Unix/Linux systems. 1829iASL now properly detects line continuations (\) for DOS format data 1830table definition language files on when executing on Unix/Linux. 1831 1832---------------------------------------- 183303 October 2018. Summary of changes for version 20181003: 1834 1835 18362) iASL Compiler/Disassembler and Tools: 1837 1838Fixed a regression introduced in version 20180927 that could cause the 1839compiler to fault, especially with NamePaths containing one or more 1840carats (^). Such as: ^^_SB_PCI0 1841 1842Added a new remark for the Sleep() operator when the sleep time operand 1843is larger than one second. This is a very long time for the ASL/BIOS code 1844and may not be what was intended by the ASL writer. 1845 1846---------------------------------------- 184727 September 2018. Summary of changes for version 20180927: 1848 1849 18501) ACPICA kernel-resident subsystem: 1851 1852Updated the GPE support to clear the status of all ACPI events when 1853entering any/all sleep states in order to avoid premature wakeups. In 1854theory, this may cause some wakeup events to be missed, but the 1855likelihood of this is small. This change restores the original behavior 1856of the ACPICA code in order to fix a regression seen from the previous 1857"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1858This regression could cause some systems to incorrectly wake immediately. 1859 1860Updated the execution of the _REG methods during initialization and 1861namespace loading to bring the behavior into closer conformance to the 1862ACPI specification and other ACPI implementations: 1863 1864From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1865 "Control methods must assume all operation regions are inaccessible 1866until the _REG(RegionSpace, 1) method is executed" 1867 1868 "The exceptions to this rule are: 18691. OSPM must guarantee that the following operation regions are always 1870accessible: 1871 SystemIO operation regions. 1872 SystemMemory operation regions when accessing memory returned by the 1873System Address Map reporting interfaces." 1874 1875Since the state of both the SystemIO and SystemMemory address spaces are 1876defined by the specification to never change, this ACPICA change ensures 1877that now _REG is never called on them. This solves some problems seen in 1878the field and provides compatibility with other ACPI implementations. An 1879update to the upcoming new version of the ACPI specification will help 1880clarify this behavior. 1881 1882Updated the implementation of support for the Generic Serial Bus. For the 1883"bidirectional" protocols, the internal implementation now automatically 1884creates a return data buffer of the maximum size (255). This handles the 1885worst-case for data that is returned from the serial bus handler, and 1886fixes some problems seen in the field. This new buffer is directly 1887returned to the ASL. As such, there is no true "bidirectional" buffer, 1888which matches the ACPI specification. This is the reason for the "double 1889store" seen in the example ASL code in the specification, shown below: 1890 1891Word Process Call (AttribProcessCall): 1892 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1893 Field(TOP1, BufferAcc, NoLock, Preserve) 1894 { 1895 FLD1, 8, // Virtual register at command value 1. 1896 } 1897 1898 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1899 // as BUFF 1900 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1901 1902 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1903 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1904transaction 1905 // This is the "double store". The write to 1906 // FLD1 returns a new buffer, which is stored 1907 // back into BUFF with the second Store. 1908 1909 19102) iASL Compiler/Disassembler and Tools: 1911 1912iASL: Implemented detection of extraneous/redundant uses of the Offset() 1913operator within a Field Unit list. A remark is now issued for these. For 1914example, the first two of the Offset() operators below are extraneous. 1915Because both the compiler and the interpreter track the offsets 1916automatically, these Offsets simply refer to the current offset and are 1917unnecessary. Note, when optimization is enabled, the iASL compiler will 1918in fact remove the redundant Offset operators and will not emit any AML 1919code for them. 1920 1921 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1922 Field (OPR1) 1923 { 1924 Offset (0), // Never needed 1925 FLD1, 32, 1926 Offset (4), // Redundant, offset is already 4 (bytes) 1927 FLD2, 8, 1928 Offset (64), // OK use of Offset. 1929 FLD3, 16, 1930 } 1931dsdt.asl 14: Offset (0), 1932Remark 2158 - ^ Unnecessary/redundant use of Offset 1933operator 1934 1935dsdt.asl 16: Offset (4), 1936Remark 2158 - ^ Unnecessary/redundant use of Offset 1937operator 1938 1939---------------------------------------- 194010 August 2018. Summary of changes for version 20180810: 1941 1942 19431) ACPICA kernel-resident subsystem: 1944 1945Initial ACPI table loading: Attempt to continue loading ACPI tables 1946regardless of malformed AML. Since migrating table initialization to the 1947new module-level code support, the AML interpreter rejected tables upon 1948any ACPI error encountered during table load. This is a problem because 1949non-serious ACPI errors during table load do not necessarily mean that 1950the entire definition block (DSDT or SSDT) is invalid. This change 1951improves the table loading by ignoring some types of errors that can be 1952generated by incorrect AML. This can range from object type errors, scope 1953errors, and index errors. 1954 1955Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1956during suspend/resume. The status of ACPI events is no longer cleared 1957when entering the ACPI S5 system state (power off) which caused some 1958systems to power up immediately after turning off power in certain 1959situations. This was a functional regression. It was fixed by clearing 1960the status of all ACPI events again when entering S5 (for system-wide 1961suspend or hibernation the clearing of the status of all events is not 1962desirable, as it might cause the kernel to miss wakeup events sometimes). 1963Rafael Wysocki. 1964 1965 19662) iASL Compiler/Disassembler and Tools: 1967 1968AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1969elements listed in the initialization file were previously initialized 1970after the table load and before executing module-level code blocks. 1971Recent changes in the module-level code support means that the table load 1972becomes a large control method execution. If fields are used within 1973module-level code and we are executing with the -fi option, the 1974initialization values were used to initialize the namespace object(s) 1975only after the table was finished loading. This change Provides an early 1976initialization of objects specified in the initialization file so that 1977field unit values are populated during the table load (not after the 1978load). 1979 1980AcpiExec: Fixed a small memory leak regression that could result in 1981warnings during exit of the utility. These warnings were similar to 1982these: 1983 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1984 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1985 1986---------------------------------------- 198729 June 2018. Summary of changes for version 20180629: 1988 1989 19901) iASL Compiler/Disassembler and Tools: 1991 1992iASL: Fixed a regression related to the use of the ASL External 1993statement. Error checking for the use of the External() statement has 1994been relaxed. Previously, a restriction on the use of External meant that 1995the referenced named object was required to be defined in a different 1996table (an SSDT). Thus it would be an error to declare an object as an 1997external and then define the same named object in the same table. For 1998example: 1999 DefinitionBlock (...) 2000 { 2001 External (DEV1) 2002 Device (DEV1){...} // This was an error 2003 } 2004However, this behavior has caused regressions in some existing ASL code, 2005because there is code that depends on named objects and externals (with 2006the same name) being declared in the same table. This change will allow 2007the ASL code above to compile without errors or warnings. 2008 2009iASL: Implemented ASL language extensions for four operators to make some 2010of their arguments optional instead of required: 2011 1) Field (RegionName, AccessType, LockRule, UpdateRule) 2012 2) BankField (RegionName, BankName, BankValue, 2013 AccessType, LockRule, UpdateRule) 2014 3) IndexField (IndexName, DataName, 2015 AccessType, LockRule, UpdateRule) 2016For the Field operators above, the AccessType, LockRule, and UpdateRule 2017are now optional arguments. The default values are: 2018 AccessType: AnyAcc 2019 LockRule: NoLock 2020 UpdateRule: Preserve 2021 4) Mutex (MutexName, SyncLevel) 2022For this operator, the SyncLevel argument is now optional. This argument 2023is rarely used in any meaningful way by ASL code, and thus it makes sense 2024to make it optional. The default value is: 2025 SyncLevel: 0 2026 2027iASL: Attempted use of the ASL Unload() operator now results in the 2028following warning: 2029 "Unload is not supported by all operating systems" 2030This is in fact very true, and the Unload operator may be completely 2031deprecated in the near future. 2032 2033AcpiExec: Fixed a regression for the -fi option (Namespace initialization 2034file. Recent changes in the ACPICA module-level code support altered the 2035table load/initialization sequence . This means that the table load has 2036become a large method execution of the table itself. If Operation Region 2037Fields are used within any module-level code and the -fi option was 2038specified, the initialization values were populated only after the table 2039had completely finished loading (and thus the module-level code had 2040already been executed). This change moves the initialization of objects 2041listed in the initialization file to before the table is executed as a 2042method. Field unit values are now initialized before the table execution 2043is performed. 2044 2045---------------------------------------- 204631 May 2018. Summary of changes for version 20180531: 2047 2048 20491) ACPICA kernel-resident Subsystem: 2050 2051Implemented additional support to help ensure that a DSDT or SSDT is 2052fully loaded even if errors are incurred during the load. The majority of 2053the problems that are seen is the failure of individual AML operators 2054that occur during execution of any module-level code (MLC) existing in 2055the table. This support adds a mechanism to abort the current ASL 2056statement (AML opcode), emit an error message, and to simply move on to 2057the next opcode -- instead of aborting the entire table load. This is 2058different than the execution of a control method where the entire method 2059is aborted upon any error. The goal is to perform a very "best effort" to 2060load the ACPI tables. The most common MLC errors that have been seen in 2061the field are direct references to unresolved ASL/AML symbols (referenced 2062directly without the use of the CondRefOf operator to validate the 2063symbol). This new ACPICA behavior is now compatible with other ACPI 2064implementations. 2065 2066Interpreter: The Unload AML operator is no longer supported for the 2067reasons below. An AE_NOT_IMPLEMENTED exception is returned. 20681) A correct implementation on at least some hosts may not be possible. 20692) Other ACPI implementations do not correctly/fully support it. 20703) It requires host device driver support which is not known to exist. 2071 (To properly support namespace unload out from underneath.) 20724) This AML operator has never been seen in the field. 2073 2074Parser: Added a debug option to dump AML parse sub-trees as they are 2075being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 2076ACPI_DB_PARSE_TREES. 2077 2078Debugger: Reduced the verbosity for errors incurred during table load and 2079module-level code execution. 2080 2081Completed an investigation into adding a namespace node "owner list" 2082instead of the current "owner ID" associated with namespace nodes. This 2083list would link together all nodes that are owned by an individual 2084control method. The purpose would be to enhance control method execution 2085by speeding up cleanup during method exit (all namespace nodes created by 2086a method are deleted upon method termination.) Currently, the entire 2087namespace must be searched for matching owner IDs if (and only if) the 2088method creates named objects outside of the local scope. However, by far 2089the most common case is that methods create objects locally, not outside 2090the method scope. There is already an ACPICA optimization in place that 2091only searches the entire namespace in the rare case of a method creating 2092objects elsewhere in the namespace. Therefore, it is felt that the 2093overhead of adding an additional pointer to each namespace node to 2094implement the owner list makes this feature unnecessary. 2095 2096 20972) iASL Compiler/Disassembler and Tools: 2098 2099iASL, Disassembler, and Template generator: Implemented support for 2100Revision D of the IORT table. Adds a new subtable that is used to specify 2101SMMUv3 PMCGs. rmurphy-arm. 2102 2103Disassembler: Restored correct table header validation for the "special" 2104ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 2105table header and must be special-cased. This was a regression that has 2106been present for apparently a long time. 2107 2108AcpiExec: Reduced verbosity of the local exception handler implemented 2109within acpiexec. This handler is invoked by ACPICA upon any exceptions 2110generated during control method execution. A new option was added: -vh 2111restores the original verbosity level if desired. 2112 2113AcpiExec: Changed the default base from decimal to hex for the -x option 2114(set debug level). This simplifies the use of this option and matches the 2115behavior of the corresponding iASL -x option. 2116 2117AcpiExec: Restored a force-exit on multiple control-c (sigint) 2118interrupts. This allows program termination even if other issues cause 2119the control-c to fail. 2120 2121ASL test suite (ASLTS): Added tests for the recently implemented package 2122element resolution mechanism that allows forward references to named 2123objects from individual package elements (this mechanism provides 2124compatibility with other ACPI implementations.) 2125 2126 2127---------------------------------------- 21288 May 2018. Summary of changes for version 20180508: 2129 2130 21311) ACPICA kernel-resident subsystem: 2132 2133Completed the new (recently deployed) package resolution mechanism for 2134the Load and LoadTable ASL/AML operators. This fixes a regression that 2135was introduced in version 20180209 that could result in an 2136AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 2137(SSDT) that contains package objects. 2138 2139 21402) iASL Compiler/Disassembler and Tools: 2141 2142AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 21431 MB. This change allows for table offsets within the acpidump file to be 2144up to 8 characters. These changes are backwards compatible with existing 2145acpidump files. 2146 2147 2148---------------------------------------- 214927 April 2018. Summary of changes for version 20180427: 2150 2151 21521) ACPICA kernel-resident subsystem: 2153 2154Debugger: Added support for Package objects in the "Test Objects" 2155command. This command walks the entire namespace and evaluates all named 2156data objects (Integers, Strings, Buffers, and now Packages). 2157 2158Improved error messages for the namespace root node. Originally, the root 2159was referred to by the confusing string "\___". This has been replaced by 2160"Namespace Root" for clarification. 2161 2162Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 2163Ian King <colin.king@canonical.com>. 2164 2165 21662) iASL Compiler/Disassembler and Tools: 2167 2168iASL: Implemented support to detect and flag illegal forward references. 2169For compatibility with other ACPI implementations, these references are 2170now illegal at the root level of the DSDT or SSDTs. Forward references 2171have always been illegal within control methods. This change should not 2172affect existing ASL/AML code because of the fact that these references 2173have always been illegal in the other ACPI implementation. 2174 2175iASL: Added error messages for the case where a table OEM ID and OEM 2176TABLE ID strings are longer than the ACPI-defined length. Previously, 2177these strings were simply silently truncated. 2178 2179iASL: Enhanced the -tc option (which creates an AML hex file in C, 2180suitable for import into a firmware project): 2181 1) Create a unique name for the table, to simplify use of multiple 2182SSDTs. 2183 2) Add a protection #ifdef in the file, similar to a .h header file. 2184With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 2185evan.lloyd@arm.com 2186 2187AcpiExec: Added a new option, -df, to disable the local fault handler. 2188This is useful during debugging, where it may be desired to drop into a 2189debugger on a fault. 2190 2191---------------------------------------- 219213 March 2018. Summary of changes for version 20180313: 2193 2194 21951) ACPICA kernel-resident subsystem: 2196 2197Implemented various improvements to the GPE support: 2198 21991) Dispatch all active GPEs at initialization time so that no GPEs are 2200lost. 22012) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 2202before devices are enumerated. 22033) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 2204IRQs are not lost. 22054) Add parallel GPE handling to eliminate the possibility of dispatching 2206the same GPE twice. 22075) Dispatch any pending GPEs after enabling for the first time. 2208 2209AcpiGetObjectInfo - removed support for the _STA method. This was causing 2210problems on some platforms. 2211 2212Added a new _OSI string, "Windows 2017.2". 2213 2214Cleaned up and simplified the module-level code support. These changes 2215are in preparation for the eventual removal of the legacy MLC support 2216(deferred execution), replaced by the new MLC architecture which executes 2217the MLC as a table is loaded (DSDT/SSDTs). 2218 2219Changed a compile-time option to a runtime option. Changes the option to 2220ignore ACPI table load-time package resolution errors into a runtime 2221option. Used only for platforms that generate many AE_NOT_FOUND errors 2222during boot. AcpiGbl_IgnorePackageResolutionErrors. 2223 2224Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 2225ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 2226compilation errors from unused variables (seen with some compilers). 2227 2228 22292) iASL Compiler/Disassembler and Tools: 2230 2231ASLTS: parallelized execution in order to achieve an (approximately) 2X 2232performance increase. 2233 2234ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 2235error reporting. 2236 2237---------------------------------------- 223809 February 2018. Summary of changes for version 20180209: 2239 2240 22411) ACPICA kernel-resident subsystem: 2242 2243Completed the final integration of the recent changes to Package Object 2244handling and the module-level AML code support. This allows forward 2245references from individual package elements when the package object is 2246declared from within module-level code blocks. Provides compatibility 2247with other ACPI implementations. 2248 2249The new architecture for the AML module-level code has been completed and 2250is now the default for the ACPICA code. This new architecture executes 2251the module-level code in-line as the ACPI table is loaded/parsed instead 2252of the previous architecture which deferred this code until after the 2253table was fully loaded. This solves some ASL code ordering issues and 2254provides compatibility with other ACPI implementations. At this time, 2255there is an option to fallback to the earlier architecture, but this 2256support is deprecated and is planned to be completely removed later this 2257year. 2258 2259Added a compile-time option to ignore AE_NOT_FOUND exceptions during 2260resolution of named reference elements within Package objects. Although 2261this is potentially a serious problem, it can generate a lot of 2262noise/errors on platforms whose firmware carries around a bunch of unused 2263Package objects. To disable these errors, define 2264ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 2265errors are always reported for ACPICA applications such as AcpiExec. 2266 2267Fixed a regression related to the explicit type-conversion AML operators 2268(ToXXXX). The regression was introduced early in 2017 but was not seen 2269until recently because these operators are not fully supported by other 2270ACPI implementations and are thus rarely used by firmware developers. The 2271operators are defined by the ACPI specification to not implement the 2272"implicit result object conversion". The regression incorrectly 2273introduced this object conversion for the following explicit conversion 2274operators: 2275 ToInteger 2276 ToString 2277 ToBuffer 2278 ToDecimalString 2279 ToHexString 2280 ToBCD 2281 FromBCD 2282 2283 22842) iASL Compiler/Disassembler and Tools: 2285 2286iASL: Fixed a problem with the compiler constant folding feature as 2287related to the ToXXXX explicit conversion operators. These operators do 2288not support the "implicit result object conversion" by definition. Thus, 2289ASL expressions that use these operators cannot be folded to a simple 2290Store operator because Store implements the implicit conversion. This 2291change uses the CopyObject operator for the ToXXXX operator folding 2292instead. CopyObject is defined to not implement implicit result 2293conversions and is thus appropriate for folding the ToXXXX operators. 2294 2295iASL: Changed the severity of an error condition to a simple warning for 2296the case where a symbol is declared both locally and as an external 2297symbol. This accommodates existing ASL code. 2298 2299AcpiExec: The -ep option to enable the new architecture for module-level 2300code has been removed. It is replaced by the -dp option which instead has 2301the opposite effect: it disables the new architecture (the default) and 2302enables the legacy architecture. When the legacy code is removed in the 2303future, the -dp option will be removed also. 2304 2305---------------------------------------- 230605 January 2018. Summary of changes for version 20180105: 2307 2308 23091) ACPICA kernel-resident subsystem: 2310 2311Updated all copyrights to 2018. This affects all source code modules. 2312 2313Fixed a possible build error caused by an unresolved reference to the 2314AcpiUtSafeStrncpy function. 2315 2316Removed NULL pointer arithmetic in the various pointer manipulation 2317macros. All "(void *) NULL" constructs are converted to "(void *) 0". 2318This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 2319 2320Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 2321Mittal. 2322 2323 23242) iASL Compiler/Disassembler and Tools: 2325 2326ASLTS: Updated all copyrights to 2018. 2327 2328Tools: Updated all signon copyrights to 2018. 2329 2330AcpiXtract: Fixed a regression related to ACPI table signatures where the 2331signature was truncated to 3 characters (instead of 4). 2332 2333AcpiExec: Restore the original terminal mode after the use of the -v and 2334-vd options. 2335 2336ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 2337 2338---------------------------------------- 233914 December 2017. Summary of changes for version 20171214: 2340 2341 23421) ACPICA kernel-resident subsystem: 2343 2344Fixed a regression in the external (public) AcpiEvaluateObjectTyped 2345interface where the optional "pathname" argument had inadvertently become 2346a required argument returning an error if omitted (NULL pointer 2347argument). 2348 2349Fixed two possible memory leaks related to the recently developed "late 2350resolution" of reference objects within ASL Package Object definitions. 2351 2352Added two recently defined _OSI strings: "Windows 2016" and "Windows 23532017". Mario Limonciello. 2354 2355Implemented and deployed a safer version of the C library function 2356strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 2357creation of unterminated strings as a possible result of a standard 2358strncpy. 2359 2360Cleaned up and restructured the global variable file (acglobal.h). There 2361are many changes, but no functional changes. 2362 2363 23642) iASL Compiler/Disassembler and Tools: 2365 2366iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 2367optional OemData field at the end of the table was incorrectly required 2368for proper compilation. It is now correctly an optional field. 2369 2370ASLTS: The entire suite was converted from standard ASL to the ASL+ 2371language, using the ASL-to-ASL+ converter which is integrated into the 2372iASL compiler. A binary compare of all output files has verified the 2373correctness of the conversion. 2374 2375iASL: Fixed the source code build for platforms where "char" is unsigned. 2376This affected the iASL lexer only. Jung-uk Kim. 2377 2378---------------------------------------- 237910 November 2017. Summary of changes for version 20171110: 2380 2381 23821) ACPICA kernel-resident subsystem: 2383 2384This release implements full support for ACPI 6.2A: 2385 NFIT - Added a new subtable, "Platform Capabilities Structure" 2386No other changes to ACPICA were required, since ACPI 6.2A is primarily an 2387errata release of the specification. 2388 2389Other ACPI table changes: 2390 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 2391 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 2392Linton 2393 2394Utilities: Modified the string/integer conversion functions to use 2395internal 64-bit divide support instead of a native divide. On 32-bit 2396platforms, a 64-bit divide typically requires a library function which 2397may not be present in the build (kernel or otherwise). 2398 2399Implemented a targeted error message for timeouts returned from the 2400Embedded Controller device driver. This is seen frequently enough to 2401special-case an AE_TIME returned from an EC operation region access: 2402 "Timeout from EC hardware or EC device driver" 2403 2404Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 2405runtime error messages have the identical prefix. 2406 2407 24082) iASL Compiler/Disassembler and Tools: 2409 2410AcpiXtract: Fixed a problem with table header detection within the 2411acpidump file. Processing a table could be ended early if a 0x40 (@) 2412appears in the original binary table, resulting in the @ symbol appearing 2413in the decoded ASCII field at the end of the acpidump text line. The 2414symbol caused acpixtract to incorrectly think it had reached the end of 2415the current table and the beginning of a new table. 2416 2417AcpiXtract: Added an option (-f) to ignore some errors during table 2418extraction. This initial implementation ignores non-ASCII and non- 2419printable characters found in the acpidump text file. 2420 2421TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 2422for ASLTS. This feature is used to track memory allocations from 2423different memory caches within the ACPICA code. At the end of an ASLTS 2424run, these memory statistics are recorded and stored in a log file. 2425 2426Debugger (user-space version): Implemented a simple "Background" command. 2427Creates a new thread to execute a control method in the background, while 2428control returns to the debugger prompt to allow additional commands. 2429 Syntax: Background <Namepath> [Arguments] 2430 2431---------------------------------------- 243229 September 2017. Summary of changes for version 20170929: 2433 2434 24351) ACPICA kernel-resident subsystem: 2436 2437Redesigned and implemented an improved ASL While() loop timeout 2438mechanism. This mechanism is used to prevent infinite loops in the kernel 2439AML interpreter caused by either non-responsive hardware or incorrect AML 2440code. The new implementation uses AcpiOsGetTimer instead of a simple 2441maximum loop count, and is thus more accurate and constant across 2442different machines. The default timeout is currently 30 seconds, but this 2443may be adjusted later. 2444 2445Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 2446better reflect the new implementation of the loop timeout mechanism. 2447 2448Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 2449and to fix an off-by-one error. Jung-uk Kim. 2450 2451Fixed an EFI build problem by updating the makefiles to for a new file 2452that was added, utstrsuppt.c 2453 2454 24552) iASL Compiler/Disassembler and Tools: 2456 2457Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 2458includes support in the table disassembler, compiler, and template 2459generator. 2460 2461iASL: Added an exception for an illegal type of recursive method 2462invocation. If a method creates named objects, the first recursive call 2463will fail at runtime. This change adds an error detection at compile time 2464to catch the problem up front. Note: Marking such a method as 2465"serialized" will not help with this problem, because the same thread can 2466acquire the method mutex more than once. Example compiler and runtime 2467output: 2468 2469 Method (MTH1) 2470 { 2471 Name (INT1, 1) 2472 MTH1 () 2473 } 2474 2475 dsdt.asl 22: MTH1 () 2476 Error 6152 - ^ Illegal recursive call to method 2477 that creates named objects (MTH1) 2478 2479Previous runtime exception: 2480 ACPI Error: [INT1] Namespace lookup failure, 2481 AE_ALREADY_EXISTS (20170831/dswload2-465) 2482 2483iASL: Updated support for External() opcodes to improve namespace 2484management and error detection. These changes are related to issues seen 2485with multiple-segment namespace pathnames within External declarations, 2486such as below: 2487 2488 External(\_SB.PCI0.GFX0, DeviceObj) 2489 External(\_SB.PCI0.GFX0.ALSI) 2490 2491iASL: Implemented support for multi-line error/warning messages. This 2492enables more detailed and helpful error messages as below, from the 2493initial deployment for the duplicate names error: 2494 2495 DSDT.iiii 1692: Device(PEG2) { 2496 Error 6074 - ^ Name already exists in scope 2497(PEG2) 2498 2499 Original name creation/declaration below: 2500 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 2501 2502AcpiXtract: Added additional flexibility to support differing input hex 2503dump formats. Specifically, hex dumps that contain partial disassembly 2504and/or comments within the ACPI table data definition. There exist some 2505dump utilities seen in the field that create this type of hex dump (such 2506as Simics). For example: 2507 2508 DSDT @ 0xdfffd0c0 (10999 bytes) 2509 Signature DSDT 2510 Length 10999 2511 Revision 1 2512 Checksum 0xf3 (Ok) 2513 OEM_ID BXPC 2514 OEM_table_id BXDSDT 2515 OEM_revision 1 2516 Creator_id 1280593481 2517 Creator_revision 537399345 2518 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 2519 ... 2520 2af0: 5f 4c 30 46 00 a4 01 2521 2522Test suite: Miscellaneous changes/fixes: 2523 More cleanup and simplification of makefiles 2524 Continue compilation of test cases after a compile failure 2525 Do not perform binary compare unless both files actually exist 2526 2527iASL: Performed some code/module restructuring. Moved all memory 2528allocation functions to new modules. Two new files, aslallocate.c and 2529aslcache.c 2530 2531---------------------------------------- 253231 August 2017. Summary of changes for version 20170831: 2533 2534 25351) ACPICA kernel-resident subsystem: 2536 2537Implemented internal support for full 64-bit addresses that appear in all 2538Generic Address Structure (GAS) structures. Previously, only the lower 32 2539bits were used. Affects the use of GAS structures in the FADT and other 2540tables, as well as the GAS structures passed to the AcpiRead and 2541AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 2542 2543Added header support for the PDTT ACPI table (Processor Debug Trigger 2544Table). Full support in the iASL Data Table Compiler and disassembler is 2545forthcoming. 2546 2547 25482) iASL Compiler/Disassembler and Tools: 2549 2550iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 2551Properties Topology Table) where a flag bit was specified in the wrong 2552bit position ("Line Size Valid", bit 6). 2553 2554iASL: Implemented support for Octal integer constants as defined by the 2555ASL language grammar, per the ACPI specification. Any integer constant 2556that starts with a zero is an octal constant. For example, 2557 Store (037777, Local0) /* Octal constant */ 2558 Store (0x3FFF, Local0) /* Hex equivalent */ 2559 Store (16383, Local0) /* Decimal equivalent */ 2560 2561iASL: Improved overflow detection for 64-bit string conversions during 2562compilation of integer constants. "Overflow" in this case means a string 2563that represents an integer that is too large to fit into a 64-bit value. 2564Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 2565the low-order 32 bits with a warning, as previously implemented. Several 2566new exceptions are defined that indicate a 64-bit overflow, as well as 2567the base (radix) that was used during the attempted conversion. Examples: 2568 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 2569 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 2570 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 2571 2572iASL: Added a warning for the case where a ResourceTemplate is declared 2573with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 2574this case, the resulting template is created with a single END_TAG 2575descriptor, which is essentially useless. 2576 2577iASL: Expanded the -vw option (ignore specific warnings/remarks) to 2578include compilation error codes as well. 2579 2580---------------------------------------- 258128 July 2017. Summary of changes for version 20170728: 2582 2583 25841) ACPICA kernel-resident subsystem: 2585 2586Fixed a regression seen with small resource descriptors that could cause 2587an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2588 2589AML interpreter: Implemented a new feature that allows forward references 2590from individual named references within package objects that are 2591contained within blocks of "module-level code". This provides 2592compatibility with other ACPI implementations and supports existing 2593firmware that depends on this feature. Example: 2594 2595 Name (ABCD, 1) 2596 If (ABCD) /* An If() at module-level */ 2597 { 2598 Name (PKG1, Package() 2599 { 2600 INT1 /* Forward reference to object INT1 2601*/ 2602 }) 2603 Name (INT1, 0x1234) 2604 } 2605 2606AML Interpreter: Fixed a problem with the Alias() operator where aliases 2607to some ASL objects were not handled properly. Objects affected are: 2608Mutex, Event, and OperationRegion. 2609 2610AML Debugger: Enhanced to properly handle AML Alias objects. These 2611objects have one level of indirection which was not fully supported by 2612the debugger. 2613 2614Table Manager: Added support to detect and ignore duplicate SSDTs within 2615the XSDT/RSDT. This error in the XSDT has been seen in the field. 2616 2617EFI and EDK2 support: 2618 Enabled /WX flag for MSVC builds 2619 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2620 Added local support for 64-bit multiply and shift operations 2621 Added support to compile acpidump.efi on Windows 2622 Added OSL function stubs for interfaces not used under EFI 2623 2624Added additional support for the _DMA predefined name. _DMA returns a 2625buffer containing a resource template. This change add support within the 2626resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2627resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2628 2629 26302) iASL Compiler/Disassembler and Tools: 2631 2632iASL: Fixed a problem where the internal input line buffer(s) could 2633overflow if there are very long lines in the input ASL source code file. 2634Implemented buffer management that automatically increases the size of 2635the buffers as necessary. 2636 2637iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2638errors. If the specified exception is not raised during compilation, the 2639compiler emits an error. This is intended to support the ASL test suite, 2640but may be useful in other contexts. 2641 2642iASL: Implemented a new predefined macro, __METHOD__, which returns a 2643string containing the name of the current control method that is being 2644compiled. 2645 2646iASL: Implemented debugger and table compiler support for the SDEI ACPI 2647table (Software Delegated Exception Interface). James Morse 2648<james.morse@arm.com> 2649 2650Unix/Linux makefiles: Added an option to disable compile optimizations. 2651The disable occurs when the NOOPT flag is set to TRUE. 2652theracermaster@gmail.com 2653 2654Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2655when there are different tables for 32-bit versus 64-bit. 2656 2657Enhanced error reporting for the ASL test suite (ASLTS) by removing 2658unnecessary/verbose text, and emit the actual line number where an error 2659has occurred. These changes are intended to improve the usefulness of the 2660test suite. 2661 2662---------------------------------------- 266329 June 2017. Summary of changes for version 20170629: 2664 2665 26661) ACPICA kernel-resident subsystem: 2667 2668Tables: Implemented a deferred ACPI table verification. This is useful 2669for operating systems where the tables cannot be verified in the early 2670initialization stage due to early memory mapping limitations on some 2671architectures. Lv Zheng. 2672 2673Tables: Removed the signature validation for dynamically loaded tables. 2674Provides compatibility with other ACPI implementations. Previously, only 2675SSDT tables were allowed, as per the ACPI specification. Now, any table 2676signature can be used via the Load() operator. Lv Zheng. 2677 2678Tables: Fixed several mutex issues that could cause errors during table 2679acquisition. Lv Zheng. 2680 2681Tables: Fixed a problem where an ACPI warning could be generated if a 2682null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2683 2684Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2685AcpiPutTable interfaces. This applies to the "late stage" table loading 2686when the use of AcpiPutTable is no longer required (since the system 2687memory manager is fully running and available). Lv Zheng. 2688 2689Fixed/Reverted a regression during processing of resource descriptors 2690that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2691exception in this case. 2692 2693Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2694I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2695 2696Interpreter: Fixed a possible fault if an Alias operator with an invalid 2697or duplicate target is encountered during Alias creation in 2698AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2699 2700Added an option to use designated initializers for function pointers. 2701Kees Cook <keescook@google.com> 2702 2703 27042) iASL Compiler/Disassembler and Tools: 2705 2706iASL: Allow compilation of External declarations with target pathnames 2707that refer to existing named objects within the table. Erik Schmauss. 2708 2709iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2710FieldUnit name also is declared via External in the same table. Erik 2711Schmauss. 2712 2713iASL: Allow existing scope names within pathnames used in External 2714statements. For example: 2715 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2716 Device (ABCD) 2717 2718iASL: IORT ACPI table: Implemented changes required to decode the new 2719Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2720compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2721 2722Disassembler: Don't abort disassembly on errors from External() 2723statements. Erik Schmauss. 2724 2725Disassembler: fixed a possible fault when one of the Create*Field 2726operators references a Resource Template. ACPICA Bugzilla 1396. 2727 2728iASL: In the source code, resolved some naming inconsistences across the 2729parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2730Adds a new file, aslparseop.c 2731 2732---------------------------------------- 273331 May 2017. Summary of changes for version 20170531: 2734 2735 27360) ACPI 6.2 support: 2737 2738The ACPI specification version 6.2 has been released and is available at 2739http://uefi.org/specifications 2740 2741This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2742are summarized below. 2743 2744New ACPI tables (Table Compiler/Disassembler/Templates): 2745 HMAT (Heterogeneous Memory Attributes Table) 2746 WSMT (Windows SMM Security Mitigation Table) 2747 PPTT (Processor Properties Topology Table) 2748 2749New subtables for existing ACPI tables: 2750 HEST (New subtable, Arch-deferred machine check) 2751 SRAT (New subtable, Arch-specific affinity structure) 2752 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2753 2754Simple updates for existing ACPI tables: 2755 BGRT (two new flag bits) 2756 HEST (New bit defined for several subtables, GHES_ASSIST) 2757 2758New Resource Descriptors and Resource macros (Compiler/Disassembler): 2759 PinConfig() 2760 PinFunction() 2761 PinGroup() 2762 PinGroupConfig() 2763 PinGroupFunction() 2764 New type for hardware error notification (section 18.3.2.9) 2765 2766New predefined names/methods (Compiler/Interpreter): 2767 _HMA (Heterogeneous Memory Attributes) 2768 _LSI (Label Storage Information) 2769 _LSR (Label Storage Read) 2770 _LSW (Label Storage Write) 2771 2772ASL grammar/macro changes (Compiler): 2773 For() ASL macro, implemented with the AML while operator 2774 Extensions to Concatenate operator 2775 Support for multiple definition blocks in same ASL file 2776 Clarification for Buffer operator 2777 Allow executable AML code underneath all scopes (Devices, etc.) 2778 Clarification/change for the _OSI return value 2779 ASL grammar update for reference operators 2780 Allow a zero-length string for AML filename in DefinitionBlock 2781 2782Miscellaneous: 2783 New device object notification value 2784 Remove a notify value (0x0C) for graceful shutdown 2785 New UUIDs for processor/cache properties and 2786 physical package property 2787 New _HID, ACPI0014 (Wireless Power Calibration Device) 2788 2789 27901) ACPICA kernel-resident subsystem: 2791 2792Added support to disable ACPI events on hardware-reduced platforms. 2793Eliminates error messages of the form "Could not enable fixed event". Lv 2794Zheng 2795 2796Fixed a problem using Device/Thermal objects with the ObjectType and 2797DerefOf ASL operators. This support had not been fully/properly 2798implemented. 2799 2800Fixed a problem where if a Buffer object containing a resource template 2801was longer than the actual resource template, an error was generated -- 2802even though the AML is legal. This case has been seen in the field. 2803 2804Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2805The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2806 2807Added header file changes for the TPM2 ACPI table. Update to new version 2808of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2809 2810Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2811These interfaces are intended to be used only in conjunction with the 2812predefined _DLM method (Device Lock Method). "This object appears in a 2813device scope when AML access to the device must be synchronized with the 2814OS environment". 2815 2816Example Code and Data Size: These are the sizes for the OS-independent 2817acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2818debug version of the code includes the debug output trace mechanism and 2819has a much larger code and data size. 2820 2821 Current Release: 2822 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2823 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2824 Previous Release: 2825 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2826 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2827 2828 28292) iASL Compiler/Disassembler and Tools: 2830 2831iASL: Fixed a problem where an External() declaration could not refer to 2832a Field Unit. Erik Schmauss. 2833 2834Disassembler: Improved support for the Switch/Case operators. This 2835feature will disassemble AML code back to the original Switch operators 2836when possible, instead of an If..Else sequence. David Box 2837 2838iASL and disassembler: Improved the handling of multiple extraneous 2839parentheses for both ASL input and disassembled ASL output. 2840 2841Improved the behavior of the iASL compiler and disassembler to detect 2842improper use of external declarations 2843 2844Disassembler: Now aborts immediately upon detection of an unknown AML 2845opcode. The AML parser has no real way to recover from this, and can 2846result in the creation of an ill-formed parse tree that causes errors 2847later during the disassembly. 2848 2849All tools: Fixed a problem where the Unix application OSL did not handle 2850control-c correctly. For example, a control-c could incorrectly wake the 2851debugger. 2852 2853AcpiExec: Improved the Control-C handling and added a handler for 2854segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2855environments. 2856 2857Reduced the verbosity of the generic unix makefiles. Previously, each 2858compilation displayed the full set of compiler options. This has been 2859eliminated as the options are easily inspected within the makefiles. Each 2860compilation now results in a single line of output. 2861 2862---------------------------------------- 286303 March 2017. Summary of changes for version 20170303: 2864 2865 28660) ACPICA licensing: 2867 2868The licensing information at the start of each source code module has 2869been updated. In addition to the Intel license, the dual GPLv2/BSD 2870license has been added for completeness. Now, a single version of the 2871source code should be suitable for all ACPICA customers. This is the 2872major change for this release since it affects all source code modules. 2873 2874 28751) ACPICA kernel-resident subsystem: 2876 2877Fixed two issues with the common asltypes.h header that could cause 2878problems in some environments: (Kim Jung-uk) 2879 Removed typedef for YY_BUFFER_STATE ? 2880 Fixes an error with earlier versions of Flex. 2881 Removed use of FILE typedef (which is only defined in stdio.h) 2882 2883 28842) iASL Compiler/Disassembler and Tools: 2885 2886Disassembler: fixed a regression introduced in 20170224. A fix for a 2887memory leak related to resource descriptor tags (names) could fault when 2888the disassembler was generated with 64-bit compilers. 2889 2890The ASLTS test suite has been updated to implement a new testing 2891architecture. During generation of the suite from ASL source, both the 2892ASL and ASL+ compilers are now validated, as well as the disassembler 2893itself (Erik Schmauss). The architecture executes as follows: 2894 2895 For every ASL source module: 2896 Compile (legacy ASL compilation) 2897 Disassemble the resulting AML to ASL+ source code 2898 Compile the new ASL+ module 2899 Perform a binary compare on the legacy AML and the new ASL+ AML 2900 The ASLTS suite then executes normally using the AML binaries. 2901 2902---------------------------------------- 290324 February 2017. Summary of changes for version 20170224: 2904 2905 29061) ACPICA kernel-resident subsystem: 2907 2908Interpreter: Fixed two issues with the control method return value auto- 2909repair feature, where an attempt to double-delete an internal object 2910could result in an ACPICA warning (for _CID repair and others). No fault 2911occurs, however, because the attempted deletion (actually a release to an 2912internal cache) is detected and ignored via object poisoning. 2913 2914Debugger: Fixed an AML interpreter mutex issue during the single stepping 2915of control methods. If certain debugger commands are executed during 2916stepping, a mutex acquire/release error could occur. Lv Zheng. 2917 2918Fixed some issues generating ACPICA with the Intel C compiler by 2919restoring the original behavior and compiler-specific include file in 2920acenv.h. Lv Zheng. 2921 2922Example Code and Data Size: These are the sizes for the OS-independent 2923acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2924debug version of the code includes the debug output trace mechanism and 2925has a much larger code and data size. 2926 2927 Current Release: 2928 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2929 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2930 Previous Release: 2931 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2932 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2933 2934 29352) iASL Compiler/Disassembler and Tools: 2936 2937iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2938tool has been designed, implemented, and included in this release. The 2939key feature of this utility is that the original comments within the 2940input ASL file are preserved during the conversion process, and included 2941within the converted ASL+ file -- thus creating a transparent conversion 2942of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2943 2944 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2945converted code 2946 2947iASL/Disassembler: Improved the detection and correct disassembly of 2948Switch/Case operators. This feature detects sequences of if/elseif/else 2949operators that originated from ASL Switch/Case/Default operators and 2950emits the original operators. David Box. 2951 2952iASL: Improved the IORT ACPI table support in the following areas. Lv 2953Zheng: 2954 Clear MappingOffset if the MappingCount is zero. 2955 Fix the disassembly of the SMMU GSU interrupt offset. 2956 Update the template file for the IORT table. 2957 2958Disassembler: Enhanced the detection and disassembly of resource 2959template/descriptor within a Buffer object. An EndTag descriptor is now 2960required to have a zero second byte, since all known ASL compilers emit 2961this. This helps eliminate incorrect decisions when a buffer is 2962disassembled (false positives on resource templates). 2963 2964---------------------------------------- 296519 January 2017. Summary of changes for version 20170119: 2966 2967 29681) General ACPICA software: 2969 2970Entire source code base: Added the 2017 copyright to all source code 2971legal/licensing module headers and utility/tool signons. This includes 2972the standard Linux dual-license header. This affects virtually every file 2973in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2974the ACPICA test suite. 2975 2976 29772) iASL Compiler/Disassembler and Tools: 2978 2979iASL: Removed/fixed an inadvertent remark when a method argument 2980containing a reference is used as a target operand within the method (and 2981never used as a simple argument), as in the example below. Jeffrey Hugo. 2982 2983 dsdt.asl 1507: Store(0x1, Arg0) 2984 Remark 2146 - ^ Method Argument is never used (Arg0) 2985 2986All tools: Removed the bit width of the compiler that generated the tool 2987from the common signon for all user space tools. This proved to be 2988confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2989from the generic makefiles (Thomas Petazzoni). Example below. 2990 2991 Old: 2992 ASL+ Optimizing Compiler version 20170119-32 2993 ASL+ Optimizing Compiler version 20170119-64 2994 2995 New: 2996 ASL+ Optimizing Compiler version 20170119 2997 2998---------------------------------------- 299922 December 2016. Summary of changes for version 20161222: 3000 3001 30021) ACPICA kernel-resident subsystem: 3003 3004AML Debugger: Implemented a new mechanism to simplify and enhance 3005debugger integration into all environments, including kernel debuggers 3006and user-space utilities, as well as remote debug services. This 3007mechanism essentially consists of new OSL interfaces to support debugger 3008initialization/termination, as well as wait/notify interfaces to perform 3009the debugger handshake with the host. Lv Zheng. 3010 3011 New OSL interfaces: 3012 AcpiOsInitializeDebugger (void) 3013 AcpiOsTerminateDebugger (void) 3014 AcpiOsWaitCommandReady (void) 3015 AcpiOsNotifyCommandComplete (void) 3016 3017 New OS services layer: 3018 osgendbg.c -- Example implementation, and used for AcpiExec 3019 3020Update for Generic Address Space (GAS) support: Although the AccessWidth 3021and/or BitOffset fields of the GAS are not often used, this change now 3022fully supports these fields. This affects the internal support for FADT 3023registers, registers in other ACPI data tables, and the AcpiRead and 3024AcpiWrite public interfaces. Lv Zheng. 3025 3026Sleep support: In order to simplify integration of ACPI sleep for the 3027various host operating systems, a new OSL interface has been introduced. 3028AcpiOsEnterSleep allows the host to perform any required operations 3029before the final write to the sleep control register(s) is performed by 3030ACPICA. Lv Zheng. 3031 3032 New OSL interface: 3033 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 3034 3035 Called from these internal interfaces: 3036 AcpiHwLegacySleep 3037 AcpiHwExtendedSleep 3038 3039EFI support: Added a very small EFI/ACPICA example application. Provides 3040a simple demo for EFI integration, as well as assisting with resolution 3041of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 3042 3043 source/tools/efihello/efihello.c 3044 3045Local C library: Implemented several new functions to enhance ACPICA 3046portability, for environments where these clib functions are not 3047available (such as EFI). Lv Zheng: 3048 putchar 3049 getchar 3050 strpbrk 3051 strtok 3052 memmove 3053 3054Fixed a regression where occasionally a valid resource descriptor was 3055incorrectly detected as invalid at runtime, and a 3056AE_AML_NO_RESOURCE_END_TAG was returned. 3057 3058Fixed a problem with the recently implemented support that enables 3059control method invocations as Target operands to many ASL operators. 3060Warnings of this form: "Needed type [Reference], found [Processor]" were 3061seen at runtime for some method invocations. 3062 3063Example Code and Data Size: These are the sizes for the OS-independent 3064acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3065debug version of the code includes the debug output trace mechanism and 3066has a much larger code and data size. 3067 3068 Current Release: 3069 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 3070 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 3071 Previous Release: 3072 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 3073 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3074 3075 30762) iASL Compiler/Disassembler and Tools: 3077 3078Disassembler: Enhanced output by adding the capability to detect and 3079disassemble ASL Switch/Case statements back to the original ASL source 3080code instead of if/else blocks. David Box. 3081 3082AcpiHelp: Split a large file into separate files based upon 3083functionality/purpose. New files are: 3084 ahaml.c 3085 ahasl.c 3086 3087---------------------------------------- 308817 November 2016. Summary of changes for version 20161117: 3089 3090 30911) ACPICA kernel-resident subsystem: 3092 3093Table Manager: Fixed a regression introduced in 20160729, "FADT support 3094cleanup". This was an attempt to remove all references in the source to 3095the FADT version 2, which never was a legal version number. It was 3096skipped because it was an early version of 64-bit support that was 3097eventually abandoned for the current 64-bit support. 3098 3099Interpreter: Fixed a problem where runtime implicit conversion was 3100incorrectly disabled for the ASL operators below. This brings the 3101behavior into compliance with the ACPI specification: 3102 FromBCD 3103 ToBCD 3104 ToDecimalString 3105 ToHexString 3106 ToInteger 3107 ToBuffer 3108 3109Table Manager: Added a new public interface, AcpiPutTable, used to 3110release and free an ACPI table returned by AcpiGetTable and related 3111interfaces. Lv Zheng. 3112 3113Example Code and Data Size: These are the sizes for the OS-independent 3114acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3115debug version of the code includes the debug output trace mechanism and 3116has a much larger code and data size. 3117 3118 Current Release: 3119 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 3120 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3121 Previous Release: 3122 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3123 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3124 3125 31262) iASL Compiler/Disassembler and Tools: 3127 3128Disassembler: Fixed a regression for disassembly of Resource Template. 3129Detection of templates in the AML stream missed some types of templates. 3130 3131iASL: Fixed a problem where an Access Size error was returned for the PCC 3132address space when the AccessSize of the GAS register is greater than a 3133DWORD. Hoan Tran. 3134 3135iASL: Implemented several grammar changes for the operators below. These 3136changes are slated for the next version of the ACPI specification: 3137 RefOf - Disallow method invocation as an operand 3138 CondRefOf - Disallow method invocation as an operand 3139 DerefOf - Disallow operands that use the result from operators 3140that 3141 do not return a reference (Changed TermArg to 3142SuperName). 3143 3144iASL: Control method invocations are now allowed for Target operands, as 3145per the ACPI specification. Removed error for using a control method 3146invocation as a Target operand. 3147 3148Disassembler: Improved detection of Resource Templates, Unicode, and 3149Strings within Buffer objects. These subtypes do not contain a specific 3150opcode to indicate the originating ASL code, and they must be detected by 3151other means within the disassembler. 3152 3153iASL: Implemented an optimization improvement for 32-bit ACPI tables 3154(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 3155only after 64-bit to 32-bit truncation. A truncation warning message is 3156still emitted, however. 3157 3158AcpiXtract: Implemented handling for both types of line terminators (LF 3159or CR/LF) so that it can accept AcpiDump output files from any system. 3160Peter Wu. 3161 3162AcpiBin: Added two new options for comparing AML files: 3163 -a: compare and display ALL mismatches 3164 -o: start compare at this offset into the second file 3165 3166---------------------------------------- 316730 September 2016. Summary of changes for version 20160930: 3168 3169 31701) ACPICA kernel-resident subsystem: 3171 3172Fixed a regression in the internal AcpiTbFindTable function where a non 3173AE_OK exception could inadvertently be returned even if the function did 3174not fail. This problem affects the following operators: 3175 DataTableRegion 3176 LoadTable 3177 3178Fixed a regression in the LoadTable operator where a load to any 3179namespace location other than the root no longer worked properly. 3180 3181Increased the maximum loop count value that will result in the 3182AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 3183prevent infinite loops within the AML interpreter and thus the host OS 3184kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 31851,048,575). 3186 3187Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 3188acpixf.h file. This allows hosts to easily configure the maximum loop 3189count at runtime. 3190 3191Removed an illegal character in the strtoul64.c file. This character 3192caused errors with some C compilers. 3193 3194Example Code and Data Size: These are the sizes for the OS-independent 3195acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3196debug version of the code includes the debug output trace mechanism and 3197has a much larger code and data size. 3198 3199 Current Release: 3200 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3201 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3202 Previous Release: 3203 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 3204 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3205 3206 32072) iASL Compiler/Disassembler and Tools: 3208 3209Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 3210the simpler ASL ElseIf keyword. During the conversion, a trailing If 3211block could be lost and missing from the disassembled output. 3212 3213iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 3214the missing rule caused a parse error when using the Index operator as an 3215operand to ObjectType. This construct now compiles properly. Example: 3216 ObjectType(PKG1[4]). 3217 3218iASL: Correctly handle unresolved symbols in the hardware map file (-lm 3219option). Previously, unresolved symbols could cause a protection fault. 3220Such symbols are now marked as unresolved in the map file. 3221 3222iASL: Implemented support to allow control method invocations as an 3223operand to the ASL DeRefOf operator. Example: 3224 DeRefOf(MTH1(Local0)) 3225 3226Disassembler: Improved support for the ToPLD ASL macro. Detection of a 3227possible _PLD buffer now includes examination of both the normal buffer 3228length (16 or 20) as well as the surrounding AML package length. 3229 3230Disassembler: Fixed a problem with the decoding of complex expressions 3231within the Divide operator for ASL+. For the case where both the quotient 3232and remainder targets are specified, the entire statement cannot be 3233disassembled. Previously, the output incorrectly contained a mix of ASL- 3234and ASL+ operators. This mixed statement causes a syntax error when 3235compiled. Example: 3236 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 3237disassembled to: 3238 Divide (INT1 + 6, 128, RSLT, QUOT) 3239 3240iASL/Tools: Added support to process AML and non-AML ACPI tables 3241consistently. For the disassembler and AcpiExec, allow all types of ACPI 3242tables (AML and data tables). For the iASL -e option, allow only AML 3243tables (DSDT/SSDT). 3244 3245---------------------------------------- 324631 August 2016. Summary of changes for version 20160831: 3247 3248 32491) ACPICA kernel-resident subsystem: 3250 3251Improve support for the so-called "module-level code", which is defined 3252to be math, logical and control AML opcodes that appear outside of any 3253control method. This change improves the support by adding more opcodes 3254that can be executed in the manner. Some other issues have been solved, 3255and the ASL grammar changes to support such code under all scope 3256operators (Device, etc.) are complete. Lv Zheng. 3257 3258UEFI support: these OSL functions have been implemented. This is an 3259additional step toward supporting the AcpiExec utility natively (with 3260full hardware access) under UEFI. Marcelo Ferreira. 3261 AcpiOsReadPciConfiguration 3262 AcpiOsWritePciConfiguration 3263 3264Fixed a possible mutex error during control method auto-serialization. Lv 3265Zheng. 3266 3267Updated support for the Generic Address Structure by fully implementing 3268all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 3269Zheng. 3270 3271Updated the return value for the internal _OSI method. Instead of 32720xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 3273for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 3274implementations, and will be reflected and clarified in the next version 3275of the ACPI specification. 3276 3277Implemented two new table events that can be passed to an ACPICA table 3278handler. These events are used to indicate a table installation or 3279uninstallation. These events are used in addition to existed table load 3280and unload events. Lv Zheng. 3281 3282Implemented a cleanup for all internal string-to-integer conversions. 3283Consolidate multiple versions of this functionality and limit possible 3284bases to either 10 or 16 to simplify the code. Adds a new file, 3285utstrtoul64. 3286 3287Cleanup the inclusion order of the various compiler-specific headers. 3288This simplifies build configuration management. The compiler-specific 3289headers are now split out from the host-specific headers. Lv Zheng. 3290 3291Example Code and Data Size: These are the sizes for the OS-independent 3292acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3293debug version of the code includes the debug output trace mechanism and 3294has a much larger code and data size. 3295 3296 Current Release: 3297 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 3298 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3299 3300 33012) iASL Compiler/Disassembler and Tools: 3302 3303iASL/AcpiExec: Added a command line option to display the build date/time 3304of the tool (-vd). This can be useful to verify that the correct version 3305of the tools are being used. 3306 3307AML Debugger: Implemented a new subcommand ("execute predef") to execute 3308all predefined control methods and names within the current namespace. 3309This can be useful for debugging problems with ACPI tables and the ACPI 3310namespace. 3311 3312---------------------------------------- 331329 July 2016. Summary of changes for version 20160729: 3314 3315 33161) ACPICA kernel-resident subsystem: 3317 3318Implemented basic UEFI support for the various ACPICA tools. This 3319includes: 33201) An OSL to implement the various AcpiOs* interfaces on UEFI. 33212) Support to obtain the ACPI tables on UEFI. 33223) Local implementation of required C library functions not available on 3323UEFI. 33244) A front-end (main) function for the tools for UEFI-related 3325initialization. 3326 3327The initial deployment of this support is the AcpiDump utility executing 3328as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 3329Current environments supported are Linux/Unix. MSVC generation is not 3330supported at this time. See the generate/efi/README file for build 3331instructions. Lv Zheng. 3332 3333Future plans include porting the AcpiExec utility to execute natively on 3334the platform with I/O and memory access. This will allow viewing/dump of 3335the platform namespace and native execution of ACPI control methods that 3336access the actual hardware. To fully implement this support, the OSL 3337functions below must be implemented with UEFI interfaces. Any community 3338help in the implementation of these functions would be appreciated: 3339 AcpiOsReadPort 3340 AcpiOsWritePort 3341 AcpiOsReadMemory 3342 AcpiOsWriteMemory 3343 AcpiOsReadPciConfiguration 3344 AcpiOsWritePciConfiguration 3345 3346Restructured and standardized the C library configuration for ACPICA, 3347resulting in the various configuration options below. This includes a 3348global restructuring of the compiler-dependent and platform-dependent 3349include files. These changes may affect the existing platform-dependent 3350configuration files on some hosts. Lv Zheng. 3351 3352The current C library configuration options appear below. For any issues, 3353it may be helpful to examine the existing compiler-dependent and 3354platform-dependent files as examples. Lv Zheng. 3355 33561) Linux kernel: 3357 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3358library. 3359 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 33602) Unix/Windows/BSD applications: 3361 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 3362library. 3363 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 33643) UEFI applications: 3365 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3366library. 3367 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 33684) UEFI applications (EDK2/StdLib): 3369 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 3370 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 3371 3372 3373AML interpreter: "module-level code" support. Allows for execution of so- 3374called "executable" AML code (math/logical operations, etc.) outside of 3375control methods not just at the module level (top level) but also within 3376any scope declared outside of a control method - Scope{}, Device{}, 3377Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 3378 3379Simplified the configuration of the "maximum AML loops" global option by 3380adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 3381modified at runtime. 3382 3383 3384Example Code and Data Size: These are the sizes for the OS-independent 3385acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3386debug version of the code includes the debug output trace mechanism and 3387has a much larger code and data size. 3388 3389 Current Release: 3390 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 3391 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 3392 3393 33942) iASL Compiler/Disassembler and Tools: 3395 3396iASL: Add full support for the RASF ACPI table (RAS Features Table). 3397Includes disassembler, data table compiler, and header support. 3398 3399iASL Expand "module-level code" support. Allows for 3400compilation/disassembly of so-called "executable" AML code (math/logical 3401operations, etc.) outside of control methods not just at the module level 3402(top level) but also within any scope declared outside of a control 3403method - Scope{}, Device{}, Processor{}, PowerResource{}, and 3404ThermalZone{}. 3405 3406AcpiDump: Added support for dumping all SSDTs on newer versions of 3407Windows. These tables are now easily available -- SSDTs are not available 3408through the registry on older versions. 3409 3410---------------------------------------- 341127 May 2016. Summary of changes for version 20160527: 3412 3413 34141) ACPICA kernel-resident subsystem: 3415 3416Temporarily reverted the new arbitrary bit length/alignment support in 3417AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 3418a number of regressions with the new code that need to be fully resolved 3419and tested before this support can be finally integrated into ACPICA. 3420Apologies for any inconveniences these issues may have caused. 3421 3422The ACPI message macros are not configurable (ACPI_MSG_ERROR, 3423ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 3424and ACPI_MSG_BIOS_WARNING). Lv Zheng. 3425 3426Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 3427option. Adds a new return macro, return_STR. Junk-uk Kim. 3428 3429Example Code and Data Size: These are the sizes for the OS-independent 3430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3431debug version of the code includes the debug output trace mechanism and 3432has a much larger code and data size. 3433 3434 Current Release: 3435 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 3436 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3437 Previous Release: 3438 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3439 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 3440 3441---------------------------------------- 344222 April 2016. Summary of changes for version 20160422: 3443 34441) ACPICA kernel-resident subsystem: 3445 3446Fixed a regression in the GAS (generic address structure) arbitrary bit 3447support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 3448and incorrect return values. Lv Zheng. ACPICA BZ 1270. 3449 3450ACPI 6.0: Added support for new/renamed resource macros. One new argument 3451was added to each of these macros, and the original name has been 3452deprecated. The AML disassembler will always disassemble to the new 3453names. Support for the new macros was added to iASL, disassembler, 3454resource manager, and the acpihelp utility. ACPICA BZ 1274. 3455 3456 I2cSerialBus -> I2cSerialBusV2 3457 SpiSerialBus -> SpiSerialBusV2 3458 UartSerialBus -> UartSerialBusV2 3459 3460ACPI 6.0: Added support for a new integer field that was appended to the 3461package object returned by the _BIX method. This adds iASL compile-time 3462and AML runtime error checking. ACPICA BZ 1273. 3463 3464ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 3465Subspace Type2" (Headers, Disassembler, and data table compiler). 3466 3467Example Code and Data Size: These are the sizes for the OS-independent 3468acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3469debug version of the code includes the debug output trace mechanism and 3470has a much larger code and data size. 3471 3472 Current Release: 3473 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3474 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3475 Previous Release: 3476 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3477 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3478 3479 34802) iASL Compiler/Disassembler and Tools: 3481 3482iASL: Implemented an ASL grammar extension to allow/enable executable 3483"module-level code" to be created and executed under the various 3484operators that create new scopes. This type of AML code is already 3485supported in all known AML interpreters, and the grammar change will 3486appear in the next version of the ACPI specification. Simplifies the 3487conditional runtime creation of named objects under these object types: 3488 3489 Device 3490 PowerResource 3491 Processor 3492 Scope 3493 ThermalZone 3494 3495iASL: Implemented a new ASL extension, a "For" loop macro to add greater 3496ease-of-use to the ASL language. The syntax is similar to the 3497corresponding C operator, and is implemented with the existing AML While 3498opcode -- thus requiring no changes to existing AML interpreters. 3499 3500 For (Initialize, Predicate, Update) {TermList} 3501 3502Grammar: 3503 ForTerm := 3504 For ( 3505 Initializer // Nothing | TermArg => ComputationalData 3506 Predicate // Nothing | TermArg => ComputationalData 3507 Update // Nothing | TermArg => ComputationalData 3508 ) {TermList} 3509 3510 3511iASL: The _HID/_ADR detection and validation has been enhanced to search 3512under conditionals in order to allow these objects to be conditionally 3513created at runtime. 3514 3515iASL: Fixed several issues with the constant folding feature. The 3516improvement allows better detection and resolution of statements that can 3517be folded at compile time. ACPICA BZ 1266. 3518 3519iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 3520conversion to the ASL ElseIf operator where incorrect ASL code could be 3521generated. 3522 3523iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 3524sometimes an extra (and extraneous) set of parentheses were emitted for 3525some combinations of operators. Although this did not cause any problems 3526with recompilation of the disassembled code, it made the code more 3527difficult to read. David Box. ACPICA BZ 1231. 3528 3529iASL: Changed to ignore the unreferenced detection for predefined names 3530of resource descriptor elements, when the resource descriptor is 3531created/defined within a control method. 3532 3533iASL: Disassembler: Fix a possible fault with externally declared Buffer 3534objects. 3535 3536---------------------------------------- 353718 March 2016. Summary of changes for version 20160318: 3538 35391) ACPICA kernel-resident subsystem: 3540 3541Added support for arbitrary bit lengths and bit offsets for registers 3542defined by the Generic Address Structure. Previously, only aligned bit 3543lengths of 8/16/32/64 were supported. This was sufficient for many years, 3544but recently some machines have been seen that require arbitrary bit- 3545level support. ACPICA BZ 1240. Lv Zheng. 3546 3547Fixed an issue where the \_SB._INI method sometimes must be evaluated 3548before any _REG methods are evaluated. Lv Zheng. 3549 3550Implemented several changes related to ACPI table support 3551(Headers/Disassembler/TableCompiler): 3552NFIT: For ACPI 6.1, updated to add some additional new fields and 3553constants. 3554FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 35556). 3556DMAR: Added new constants per the 10/2014 DMAR spec. 3557IORT: Added new subtable per the 10/2015 IORT spec. 3558HEST: For ACPI 6.1, added new constants and new subtable. 3559DBG2: Added new constants per the 12/2015 DBG2 spec. 3560FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 3561ACPICA BZ 1249. 3562ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 3563 3564Updated header support for the DMAR table to match the current version of 3565the related spec. 3566 3567Added extensions to the ASL Concatenate operator to allow any ACPI object 3568to be passed as an operand. Any object other than Integer/String/Buffer 3569simply returns a string containing the object type. This extends the 3570usefulness of the Printf macros. Previously, Concatenate would abort the 3571control method if a non-data object was encountered. 3572 3573ACPICA source code: Deployed the C "const" keyword across the source code 3574where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 3575 3576Example Code and Data Size: These are the sizes for the OS-independent 3577acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3578debug version of the code includes the debug output trace mechanism and 3579has a much larger code and data size. 3580 3581 Current Release: 3582 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3583 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3584 Previous Release: 3585 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3586 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3587 3588 35892) iASL Compiler/Disassembler and Tools: 3590 3591iASL/Disassembler: Improved the heuristic used to determine the number of 3592arguments for an externally defined control method (a method in another 3593table). Although this is an improvement, there is no deterministic way to 3594"guess" the number of method arguments. Only the ACPI 6.0 External opcode 3595will completely solve this problem as it is deployed (automatically) in 3596newer BIOS code. 3597 3598iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3599statements that could cause errors when the disassembled file is 3600compiled. ACPICA BZ 1243. David Box. 3601 3602iASL: Fixed a regression caused by the merger of the two versions of the 3603local strtoul64. Because of a dependency on a global variable, strtoul64 3604could return an error for integers greater than a 32-bit value. ACPICA BZ 36051260. 3606 3607iASL: Fixed a regression where a fault could occur for an ASL Return 3608statement if it invokes a control method that is not resolved. ACPICA BZ 36091264. 3610 3611AcpiXtract: Improved input file validation: detection of binary files and 3612non-acpidump text files. 3613 3614---------------------------------------- 361512 February 2016. Summary of changes for version 20160212: 3616 36171) ACPICA kernel-resident subsystem: 3618 3619Implemented full support for the ACPI 6.1 specification (released in 3620January). This version of the specification is available at: 3621http://www.uefi.org/specifications 3622 3623Only a relatively small number of changes were required in ACPICA to 3624support ACPI 6.1, in these areas: 3625- New predefined names 3626- New _HID values 3627- A new subtable for HEST 3628- A few other header changes for new values 3629 3630Ensure \_SB_._INI is executed before any _REG methods are executed. There 3631appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3632 3633Reverted a change made in version 20151218 which enabled method 3634invocations to be targets of various ASL operators (SuperName and Target 3635grammar elements). While the new behavior is supported by the ACPI 3636specification, other AML interpreters do not support this behavior and 3637never will. The ACPI specification will be updated for ACPI 6.2 to remove 3638this support. Therefore, the change was reverted to the original ACPICA 3639behavior. 3640 3641ACPICA now supports the GCC 6 compiler. 3642 3643Current Release: (Note: build changes increased sizes) 3644 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3645 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3646Previous Release: 3647 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3648 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3649 3650 36512) iASL Compiler/Disassembler and Tools: 3652 3653Completed full support for the ACPI 6.0 External() AML opcode. The 3654compiler emits an external AML opcode for each ASL External statement. 3655This opcode is used by the disassembler to assist with the disassembly of 3656external control methods by specifying the required number of arguments 3657for the method. AML interpreters do not use this opcode. To ensure that 3658interpreters do not even see the opcode, a block of one or more external 3659opcodes is surrounded by an "If(0)" construct. As this feature becomes 3660commonly deployed in BIOS code, the ability of disassemblers to correctly 3661disassemble AML code will be greatly improved. David Box. 3662 3663iASL: Implemented support for an optional cross-reference output file. 3664The -lx option will create a the cross-reference file with the suffix 3665"xrf". Three different types of cross-reference are created in this file: 3666- List of object references made from within each control method 3667- Invocation (caller) list for each user-defined control method 3668- List of references to each non-method object in the namespace 3669 3670iASL: Method invocations as ASL Target operands are now disallowed and 3671flagged as errors in preparation for ACPI 6.2 (see the description of the 3672problem above). 3673 3674---------------------------------------- 36758 January 2016. Summary of changes for version 20160108: 3676 36771) ACPICA kernel-resident subsystem: 3678 3679Updated all ACPICA copyrights and signons to 2016: Added the 2016 3680copyright to all source code module headers and utility/tool signons. 3681This includes the standard Linux dual-license header. This affects 3682virtually every file in the ACPICA core subsystem, iASL compiler, all 3683ACPICA utilities, and the ACPICA test suite. 3684 3685Fixed a regression introduced in version 20151218 concerning the 3686execution of so-called module-level ASL/AML code. Namespace objects 3687created under a module-level If() construct were not properly/fully 3688entered into the namespace and could cause an interpreter fault when 3689accessed. 3690 3691Example Code and Data Size: These are the sizes for the OS-independent 3692acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3693debug version of the code includes the debug output trace mechanism and 3694has a much larger code and data size. 3695 3696Current Release: 3697 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3698 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3699 Previous Release: 3700 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3701 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3702 3703 37042) iASL Compiler/Disassembler and Tools: 3705 3706Fixed a problem with the compilation of the GpioIo and GpioInt resource 3707descriptors. The _PIN field name was incorrectly defined to be an array 3708of 32-bit values, but the _PIN values are in fact 16 bits each. This 3709would cause incorrect bit width warnings when using Word (16-bit) fields 3710to access the descriptors. 3711 3712 3713---------------------------------------- 371418 December 2015. Summary of changes for version 20151218: 3715 37161) ACPICA kernel-resident subsystem: 3717 3718Implemented per-AML-table execution of "module-level code" as individual 3719ACPI tables are loaded into the namespace during ACPICA initialization. 3720In other words, any module-level code within an AML table is executed 3721immediately after the table is loaded, instead of batched and executed 3722after all of the tables have been loaded. This provides compatibility 3723with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3724David Box. 3725 3726To fully support the feature above, the default operation region handlers 3727for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3728installed before any ACPI tables are loaded. This enables module-level 3729code to access these address spaces during the table load and module- 3730level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3731Box. 3732 3733Implemented several changes to the internal _REG support in conjunction 3734with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3735utilities for the changes above. Although these tools were changed, host 3736operating systems that simply use the default handlers for SystemMemory, 3737SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3738 3739For example, in the code below, DEV1 is conditionally added to the 3740namespace by the DSDT via module-level code that accesses an operation 3741region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3742created immediately after the DSDT is loaded in order for the SSDT to 3743successfully reference DEV1. Previously, this code would cause an 3744AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3745fully supported by ACPICA. 3746 3747 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3748 { 3749 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3750 Field (OPR1, AnyAcc, NoLock, Preserve) 3751 { 3752 FLD1, 1 3753 } 3754 If (FLD1) 3755 { 3756 Device (\DEV1) 3757 { 3758 } 3759 } 3760 } 3761 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3762 { 3763 External (\DEV1, DeviceObj) 3764 Scope (\DEV1) 3765 { 3766 } 3767 } 3768 3769Fixed an AML interpreter problem where control method invocations were 3770not handled correctly when the invocation was itself a SuperName argument 3771to another ASL operator. In these cases, the method was not invoked. 3772ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3773argument: 3774 Store 3775 Acquire, Wait 3776 CondRefOf, RefOf 3777 Decrement, Increment 3778 Load, Unload 3779 Notify 3780 Signal, Release, Reset 3781 SizeOf 3782 3783Implemented automatic String-to-ObjectReference conversion support for 3784packages returned by predefined names (such as _DEP). A common BIOS error 3785is to add double quotes around an ObjectReference namepath, which turns 3786the reference into an unexpected string object. This support detects the 3787problem and corrects it before the package is returned to the caller that 3788invoked the method. Lv Zheng. 3789 3790Implemented extensions to the Concatenate operator. Concatenate now 3791accepts any type of object, it is not restricted to simply 3792Integer/String/Buffer. For objects other than these 3 basic data types, 3793the argument is treated as a string containing the name of the object 3794type. This expands the utility of Concatenate and the Printf/Fprintf 3795macros. ACPICA BZ 1222. 3796 3797Cleaned up the output of the ASL Debug object. The timer() value is now 3798optional and no longer emitted by default. Also, the basic data types of 3799Integer/String/Buffer are simply emitted as their values, without a data 3800type string -- since the data type is obvious from the output. ACPICA BZ 38011221. 3802 3803Example Code and Data Size: These are the sizes for the OS-independent 3804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3805debug version of the code includes the debug output trace mechanism and 3806has a much larger code and data size. 3807 3808 Current Release: 3809 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3810 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3811 Previous Release: 3812 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3813 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3814 3815 38162) iASL Compiler/Disassembler and Tools: 3817 3818iASL: Fixed some issues with the ASL Include() operator. This operator 3819was incorrectly defined in the iASL parser rules, causing a new scope to 3820be opened for the code within the include file. This could lead to 3821several issues, including allowing ASL code that is technically illegal 3822and not supported by AML interpreters. Note, this does not affect the 3823related #include preprocessor operator. ACPICA BZ 1212. 3824 3825iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3826operator is essentially an ASL macro since there is no AML opcode 3827associated with it. The code emitted by the iASL compiler for ElseIf is 3828an Else opcode followed immediately by an If opcode. The disassembler 3829will now emit an ElseIf if it finds an Else immediately followed by an 3830If. This simplifies the decoded ASL, especially for deeply nested 3831If..Else and large Switch constructs. Thus, the disassembled code more 3832closely follows the original source ASL. ACPICA BZ 1211. Example: 3833 3834 Old disassembly: 3835 Else 3836 { 3837 If (Arg0 == 0x02) 3838 { 3839 Local0 = 0x05 3840 } 3841 } 3842 3843 New disassembly: 3844 ElseIf (Arg0 == 0x02) 3845 { 3846 Local0 = 0x05 3847 } 3848 3849AcpiExec: Added support for the new module level code behavior and the 3850early region installation. This required a small change to the 3851initialization, since AcpiExec must install its own operation region 3852handlers. 3853 3854AcpiExec: Added support to make the debug object timer optional. Default 3855is timer disabled. This cleans up the debug object output -- the timer 3856data is rarely used. 3857 3858AcpiExec: Multiple ACPI tables are now loaded in the order that they 3859appear on the command line. This can be important when there are 3860interdependencies/references between the tables. 3861 3862iASL/Templates. Add support to generate template files with multiple 3863SSDTs within a single output file. Also added ommand line support to 3864specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 38651223, 1225. 3866 3867 3868---------------------------------------- 386924 November 2015. Summary of changes for version 20151124: 3870 38711) ACPICA kernel-resident subsystem: 3872 3873Fixed a possible regression for a previous update to FADT handling. The 3874FADT no longer has a fixed table ID, causing some issues with code that 3875was hardwired to a specific ID. Lv Zheng. 3876 3877Fixed a problem where the method auto-serialization could interfere with 3878the current SyncLevel. This change makes the auto-serialization support 3879transparent to the SyncLevel support and management. 3880 3881Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3882interface is intended for early access to the namespace during the 3883initial namespace device discovery walk. The _SUB method has been seen to 3884access operation regions in some cases, causing errors because the 3885operation regions are not fully initialized. 3886 3887AML Debugger: Fixed some issues with the terminate/quit/exit commands 3888that can cause faults. Lv Zheng. 3889 3890AML Debugger: Add thread ID support so that single-step mode only applies 3891to the AML Debugger thread. This prevents runtime errors within some 3892kernels. Lv Zheng. 3893 3894Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3895methods that are invoked by this interface are optional, removed warnings 3896emitted for the case where one or more of these methods do not exist. 3897ACPICA BZ 1208, original change by Prarit Bhargava. 3898 3899Made a major pass through the entire ACPICA source code base to 3900standardize formatting that has diverged a bit over time. There are no 3901functional changes, but this will of course cause quite a few code 3902differences from the previous ACPICA release. 3903 3904Example Code and Data Size: These are the sizes for the OS-independent 3905acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3906debug version of the code includes the debug output trace mechanism and 3907has a much larger code and data size. 3908 3909 Current Release: 3910 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3911 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3912 Previous Release: 3913 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3914 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3915 3916 39172) iASL Compiler/Disassembler and Tools: 3918 3919iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3920definition blocks within a single ASL file and the resulting AML file. 3921Support for this type of file was also added to the various tools that 3922use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3923example code below shows two definition blocks within the same file: 3924 3925 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 39260x12345678) 3927 { 3928 } 3929 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3930 { 3931 } 3932 3933iASL: Enhanced typechecking for the Name() operator. All expressions for 3934the value of the named object must be reduced/folded to a single constant 3935at compile time, as per the ACPI specification (the AML definition of 3936Name()). 3937 3938iASL: Fixed some code indentation issues for the -ic and -ia options (C 3939and assembly headers). Now all emitted code correctly begins in column 1. 3940 3941iASL: Added an error message for an attempt to open a Scope() on an 3942object defined in an SSDT. The DSDT is always loaded into the namespace 3943first, so any attempt to open a Scope on an SSDT object will fail at 3944runtime. 3945 3946 3947---------------------------------------- 394830 September 2015. Summary of changes for version 20150930: 3949 39501) ACPICA kernel-resident subsystem: 3951 3952Debugger: Implemented several changes and bug fixes to assist support for 3953the in-kernel version of the AML debugger. Lv Zheng. 3954- Fix the "predefined" command for in-kernel debugger. 3955- Do not enter debug command loop for the help and version commands. 3956- Disallow "execute" command during execution/single-step of a method. 3957 3958Interpreter: Updated runtime typechecking for all operators that have 3959target operands. The operand is resolved and validated that it is legal. 3960For example, the target cannot be a non-data object such as a Device, 3961Mutex, ThermalZone, etc., as per the ACPI specification. 3962 3963Debugger: Fixed the double-mutex user I/O handshake to work when local 3964deadlock detection is enabled. 3965 3966Debugger: limited display of method locals and arguments (LocalX and 3967ArgX) to only those that have actually been initialized. This prevents 3968lines of extraneous output. 3969 3970Updated the definition of the NFIT table to correct the bit polarity of 3971one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3972 3973Example Code and Data Size: These are the sizes for the OS-independent 3974acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3975debug version of the code includes the debug output trace mechanism and 3976has a much larger code and data size. 3977 3978 Current Release: 3979 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3980 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3981 Previous Release: 3982 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3983 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3984 3985 39862) iASL Compiler/Disassembler and Tools: 3987 3988iASL: Improved the compile-time typechecking for operands of many of the 3989ASL operators: 3990 3991-- Added an option to disable compiler operand/operator typechecking (- 3992ot). 3993 3994-- For the following operators, the TermArg operands are now validated 3995when possible to be Integer data objects: BankField, OperationRegion, 3996DataTableRegion, Buffer, and Package. 3997 3998-- Store (Source, Target): Both the source and target operands are 3999resolved and checked that the operands are both legal. For example, 4000neither operand can be a non-data object such as a Device, Mutex, 4001ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 4002operator can be used to store an object to any type of target object. 4003 4004-- Store (Source, Target): If the source is a Package object, the target 4005must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 4006is a Package, the source must also be a Package. 4007 4008-- Store (Source, Target): A warning is issued if the source and target 4009resolve to the identical named object. 4010 4011-- Store (Source, <method invocation>): An error is generated for the 4012target method invocation, as this construct is not supported by the AML 4013interpreter. 4014 4015-- For all ASL math and logic operators, the target operand must be a 4016data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 4017includes the function return value also. 4018 4019-- External declarations are also included in the typechecking where 4020possible. External objects defined using the UnknownObj keyword cannot be 4021typechecked, however. 4022 4023iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 4024operator: 4025- Legacy code: Index(PKG1, 3) 4026- New ASL+ code: PKG1[3] 4027This completes the ACPI 6.0 ASL+ support as it was the only operator not 4028supported. 4029 4030iASL: Fixed the file suffix for the preprocessor output file (.i). Two 4031spaces were inadvertently appended to the filename, causing file access 4032and deletion problems on some systems. 4033 4034ASL Test Suite (ASLTS): Updated the master makefile to generate all 4035possible compiler output files when building the test suite -- thus 4036exercising these features of the compiler. These files are automatically 4037deleted when the test suite exits. 4038 4039 4040---------------------------------------- 404118 August 2015. Summary of changes for version 20150818: 4042 40431) ACPICA kernel-resident subsystem: 4044 4045Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 4046Zheng. ACPICA BZ 1186. 4047 4048Completed development to ensure that the ACPICA Disassembler and Debugger 4049are fully standalone components of ACPICA. Removed cross-component 4050dependences. Lv Zheng. 4051 4052The max-number-of-AML-loops is now runtime configurable (previously was 4053compile-time only). This is essentially a loop timeout to force-abort 4054infinite AML loops. ACPCIA BZ 1192. 4055 4056Debugger: Cleanup output to dump ACPI names and namepaths without any 4057trailing underscores. Lv Zheng. ACPICA BZ 1135. 4058 4059Removed unnecessary conditional compilations across the Debugger and 4060Disassembler components where entire modules could be left uncompiled. 4061 4062The aapits test is deprecated and has been removed from the ACPICA git 4063tree. The test has never been completed and has not been maintained, thus 4064becoming rather useless. ACPICA BZ 1015, 794. 4065 4066A batch of small changes to close bugzilla and other reports: 4067- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 4068- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 4069- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 4070- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 4071Moore. 4072- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 4073ACPICA BZ 1184. 4074- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 4075operators. 4076- Debugger: Split debugger initialization/termination interfaces. Lv 4077Zheng. 4078- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 4079identification. 4080- AcpiExec: Add debug message during _REG method phase during table 4081load/init. 4082- AcpiNames: Fix a regression where some output was missing and no longer 4083emitted. 4084- Debugger: General cleanup and simplification. Lv Zheng. 4085- Disassembler: Cleanup use of several global option variables. Lv Zheng. 4086 4087Example Code and Data Size: These are the sizes for the OS-independent 4088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4089debug version of the code includes the debug output trace mechanism and 4090has a much larger code and data size. 4091 4092 Current Release: 4093 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 4094 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 4095 Previous Release: 4096 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4097 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4098 4099 41002) iASL Compiler/Disassembler and Tools: 4101 4102AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 4103were not handled properly and caused load errors. Now, properly invoke 4104and use the ACPICA auto-reallocate mechanism for ACPI table data 4105structures. ACPICA BZ 1188 4106 4107AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 4108BZ 1190. 4109 4110AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 4111AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 4112executed during initialization. ACPICA BZ 1187, 1189. 4113 4114iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 4115that corresponds to each disassembled ASL statement, to simplify 4116debugging. ACPICA BZ 1191. 4117 4118Debugger: Add option to the "objects" command to display a summary of the 4119current namespace objects (Object type and count). This is displayed if 4120the command is entered with no arguments. 4121 4122AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 4123 4124 4125---------------------------------------- 412617 July 2015. Summary of changes for version 20150717: 4127 41281) ACPICA kernel-resident subsystem: 4129 4130Improved the partitioning between the Debugger and Disassembler 4131components. This allows the Debugger to be used standalone within kernel 4132code without the Disassembler (which is used for single stepping also). 4133This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 4134 4135Debugger: Implemented a new command to trace the execution of control 4136methods (Trace). This is especially useful for the in-kernel version of 4137the debugger when file I/O may not be available for method trace output. 4138See the ACPICA reference for more information. Lv Zheng. 4139 4140Moved all C library prototypes (used for the local versions of these 4141functions when requested) to a new header, acclib.h 4142Cleaned up the use of non-ANSI C library functions. These functions are 4143implemented locally in ACPICA. Moved all such functions to a common 4144source file, utnonansi.c 4145 4146Debugger: Fixed a problem with the "!!" command (get last command 4147executed) where the debugger could enter an infinite loop and eventually 4148crash. 4149 4150Removed the use of local macros that were used for some of the standard C 4151library functions to automatically cast input parameters. This mostly 4152affected the is* functions where the input parameter is defined to be an 4153int. This required a few modifications to the main ACPICA source code to 4154provide casting for these functions and eliminate possible compiler 4155warnings for these parameters. 4156 4157Across the source code, added additional status/error checking to resolve 4158issues discovered by static source code analysis tools such as Coverity. 4159 4160Example Code and Data Size: These are the sizes for the OS-independent 4161acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4162debug version of the code includes the debug output trace mechanism and 4163has a much larger code and data size. 4164 4165 Current Release: 4166 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4167 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4168 Previous Release: 4169 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4170 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4171 4172 41732) iASL Compiler/Disassembler and Tools: 4174 4175iASL: Fixed a regression where the device map file feature no longer 4176worked properly when used in conjunction with the disassembler. It only 4177worked properly with the compiler itself. 4178 4179iASL: Implemented a new warning for method LocalX variables that are set 4180but never used (similar to a C compiler such as gcc). This also applies 4181to ArgX variables that are not defined by the parent method, and are 4182instead (legally) used as local variables. 4183 4184iASL/Preprocessor: Finished the pass-through of line numbers from the 4185preprocessor to the compiler. This ensures that compiler errors/warnings 4186have the correct original line numbers and filenames, regardless of any 4187#include files. 4188 4189iASL/Preprocessor: Fixed a couple of issues with comment handling and the 4190pass-through of comments to the preprocessor output file (which becomes 4191the compiler input file). Also fixed a problem with // comments that 4192appear after a math expression. 4193 4194iASL: Added support for the TCPA server table to the table compiler and 4195template generator. (The client table was already previously supported) 4196 4197iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 4198identify the iASL compiler. 4199 4200Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 4201multiple times. The new names are ACPI_SIGN_NEGATIVE and 4202ACPI_SIGN_POSITIVE. 4203 4204AcpiHelp: Update to expand help messages for the iASL preprocessor 4205directives. 4206 4207 4208---------------------------------------- 420919 June 2015. Summary of changes for version 20150619: 4210 4211Two regressions in version 20150616 have been addressed: 4212 4213Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 4214etc.) This update changes ACPICA to only use the standard headers for 4215functions, or the prototypes for the local versions of the C library 4216functions. Across the source code, this required some additional casts 4217for some Clib invocations for portability. Moved all local prototypes to 4218a new file, acclib.h 4219 4220Fixes several problems with recent changes to the handling of the FACS 4221table that could cause some systems not to boot. 4222 4223 4224---------------------------------------- 422516 June 2015. Summary of changes for version 20150616: 4226 4227 42281) ACPICA kernel-resident subsystem: 4229 4230Across the entire ACPICA source code base, the various macros for the C 4231library functions (such as ACPI_STRLEN, etc.) have been removed and 4232replaced by the standard C library names (strlen, etc.) The original 4233purpose for these macros is no longer applicable. This simplification 4234reduces the number of macros used in the ACPICA source code 4235significantly, improving readability and maintainability. 4236 4237Implemented support for a new ACPI table, the OSDT. This table, the 4238"override" SDT, can be loaded directly by the host OS at boot time. It 4239enables the replacement of existing namespace objects that were installed 4240via the DSDT and/or SSDTs. The primary purpose for this is to replace 4241buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 4242for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 4243Moore. 4244 4245Added support for systems with (improperly) two FACS tables -- a "32-bit" 4246table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 4247X field). This change will support both automatically. There continues to 4248be systems found with this issue. This support requires a change to the 4249AcpiSetFirmwareWakingVector interface. Also, a public global variable has 4250been added to allow the host to select which FACS is desired 4251(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 4252details Lv Zheng. 4253 4254Added a new feature to allow for systems that do not contain an FACS. 4255Although this is already supported on hardware-reduced platforms, the 4256feature has been extended for all platforms. The reasoning is that we do 4257not want to abort the entire ACPICA initialization just because the 4258system is seriously buggy and has no FACS. 4259 4260Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 4261not correctly transcribed from the ACPI specification in ACPICA version 426220150515. 4263 4264Implemented support for the _CLS object in the AcpiGetObjectInfo external 4265interface. 4266 4267Updated the definitions of the TCPA and TPM2 ACPI tables to the more 4268recent TCG ACPI Specification, December 14, 2014. Table disassembler and 4269compiler also updated. Note: The TCPA "server" table is not supported by 4270the disassembler/table-compiler at this time. 4271 4272ACPI 6.0: Added definitions for the new GIC version field in the MADT. 4273 4274Example Code and Data Size: These are the sizes for the OS-independent 4275acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4276debug version of the code includes the debug output trace mechanism and 4277has a much larger code and data size. 4278 4279 Current Release: 4280 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4281 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4282 Previous Release: 4283 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4284 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4285 4286 42872) iASL Compiler/Disassembler and Tools: 4288 4289Disassembler: Fixed a problem with the new symbolic operator disassembler 4290where incorrect ASL code could be emitted in some cases for the "non- 4291commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 4292ShiftRight. The actual problem cases seem to be rather unusual in common 4293ASL code, however. David Box. 4294 4295Modified the linux version of acpidump to obtain ACPI tables from not 4296just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 4297Zheng. 4298 4299iASL: Fixed a problem where the user preprocessor output file (.i) 4300contained extra data that was not expected. The compiler was using this 4301file as a temporary file and passed through #line directives in order to 4302keep compiler error messages in sync with the input file and line number 4303across multiple include files. The (.i) is no longer a temporary file as 4304the compiler uses a new, different file for the original purpose. 4305 4306iASL: Fixed a problem where comments within the original ASL source code 4307file were not passed through to the preprocessor output file, nor any 4308listing files. 4309 4310iASL: Fixed some issues for the handling of the "#include" preprocessor 4311directive and the similar (but not the same) "Include" ASL operator. 4312 4313iASL: Add support for the new OSDT in both the disassembler and compiler. 4314 4315iASL: Fixed a problem with the constant folding support where a Buffer 4316object could be incorrectly generated (incorrectly formed) during a 4317conversion to a Store() operator. 4318 4319AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 4320description text for the _REV predefined name. _REV now permanently 4321returns 2, as per the ACPI 6.0 specification. 4322 4323Debugger: Enhanced the output of the Debug ASL object for references 4324produced by the Index operator. For Buffers and strings, only output the 4325actual byte pointed to by the index. For packages, only print the single 4326package element decoded by the index. Previously, the entire 4327buffer/string/package was emitted. 4328 4329iASL/Table-compiler: Fixed a regression where the "generic" data types 4330were no longer recognized, causing errors. 4331 4332 4333---------------------------------------- 433415 May 2015. Summary of changes for version 20150515: 4335 4336This release implements most of ACPI 6.0 as described below. 4337 43381) ACPICA kernel-resident subsystem: 4339 4340Implemented runtime argument checking and return value checking for all 4341new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 4342_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 4343 4344Example Code and Data Size: These are the sizes for the OS-independent 4345acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4346debug version of the code includes the debug output trace mechanism and 4347has a much larger code and data size. 4348 4349 Current Release: 4350 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4351 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4352 Previous Release: 4353 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4354 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4355 4356 43572) iASL Compiler/Disassembler and Tools: 4358 4359iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 4360names (argument count validation and return value typechecking.) 4361 4362iASL disassembler and table compiler: implemented support for all new 4363ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 4364 4365iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 4366tables: FADT, MADT. 4367 4368iASL preprocessor: Added a new directive to enable inclusion of binary 4369blobs into ASL code. The new directive is #includebuffer. It takes a 4370binary file as input and emits a named ascii buffer object into the ASL 4371code. 4372 4373AcpiHelp: Added support for all new ACPI 6.0 predefined names. 4374 4375AcpiHelp: Added a new option, -d, to display all iASL preprocessor 4376directives. 4377 4378AcpiHelp: Added a new option, -t, to display all known/supported ACPI 4379tables. 4380 4381 4382---------------------------------------- 438310 April 2015. Summary of changes for version 20150410: 4384 4385Reverted a change introduced in version 20150408 that caused 4386a regression in the disassembler where incorrect operator 4387symbols could be emitted. 4388 4389 4390---------------------------------------- 439108 April 2015. Summary of changes for version 20150408: 4392 4393 43941) ACPICA kernel-resident subsystem: 4395 4396Permanently set the return value for the _REV predefined name. It now 4397returns 2 (was 5). This matches other ACPI implementations. _REV will be 4398deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 4399for ACPI 2.0 and later. It should never be used to differentiate or 4400identify operating systems. 4401 4402Added the "Windows 2015" string to the _OSI support. ACPICA will now 4403return TRUE to a query with this string. 4404 4405Fixed several issues with the local version of the printf function. 4406 4407Added the C99 compiler option (-std=c99) to the Unix makefiles. 4408 4409 Current Release: 4410 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 4411 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 4412 Previous Release: 4413 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4414 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4415 4416 44172) iASL Compiler/Disassembler and Tools: 4418 4419iASL: Implemented an enhancement to the constant folding feature to 4420transform the parse tree to a simple Store operation whenever possible: 4421 Add (2, 3, X) ==> is converted to: Store (5, X) 4422 X = 2 + 3 ==> is converted to: Store (5, X) 4423 4424Updated support for the SLIC table (Software Licensing Description Table) 4425in both the Data Table compiler and the disassembler. The SLIC table 4426support now conforms to "Microsoft Software Licensing Tables (SLIC and 4427MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 4428following the ACPI header is now defined to be "Proprietary Data", and as 4429such, can only be entered or displayed as a hex data block. 4430 4431Implemented full support for the MSDM table as described in the document 4432above. Note: The format of MSDM is similar to SLIC. Any MSDM data 4433following the ACPI header is defined to be "Proprietary Data", and can 4434only be entered or displayed as a hex data block. 4435 4436Implemented the -Pn option for the iASL Table Compiler (was only 4437implemented for the ASL compiler). This option disables the iASL 4438preprocessor. 4439 4440Disassembler: For disassembly of Data Tables, added a comment field 4441around the Ascii equivalent data that is emitted as part of the "Raw 4442Table Data" block. This prevents the iASL Preprocessor from possible 4443confusion if/when the table is compiled. 4444 4445Disassembler: Added an option (-df) to force the disassembler to assume 4446that the table being disassembled contains valid AML. This feature is 4447useful for disassembling AML files that contain ACPI signatures other 4448than DSDT or SSDT (such as OEMx or other signatures). 4449 4450Changes for the EFI version of the tools: 44511) Fixed a build error/issue 44522) Fixed a cast warning 4453 4454iASL: Fixed a path issue with the __FILE__ operator by making the 4455directory prefix optional within the internal SplitInputFilename 4456function. 4457 4458Debugger: Removed some unused global variables. 4459 4460Tests: Updated the makefile for proper generation of the AAPITS suite. 4461 4462 4463---------------------------------------- 446404 February 2015. Summary of changes for version 20150204: 4465 4466ACPICA kernel-resident subsystem: 4467 4468Updated all ACPICA copyrights and signons to 2014. Added the 2014 4469copyright to all module headers and signons, including the standard Linux 4470header. This affects virtually every file in the ACPICA core subsystem, 4471iASL compiler, all ACPICA utilities, and the test suites. 4472 4473Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 4474A raw gpe handling mechanism was created to allow better handling of GPE 4475storms that aren't easily managed by the normal handler. The raw handler 4476allows disabling/renabling of the GPE so that interrupt storms can be 4477avoided in cases where events cannot be timely serviced. In this 4478scenario, handlers should use the AcpiSetGpe() API to disable/enable the 4479GPE. This API will leave the reference counts undisturbed, thereby 4480preventing unintentional clearing of the GPE when the intent in only to 4481temporarily disable it. Raw handlers allow enabling and disabling of a 4482GPE by removing GPE register locking. As such, raw handlers much provide 4483their own locks while using GPE API's to protect access to GPE data 4484structures. 4485Lv Zheng 4486 4487Events: Always modify GPE registers under the GPE lock. 4488Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 4489values. Reported as bug by joe.liu@apple.com. 4490 4491Unix makefiles: Separate option to disable optimizations and 4492_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 4493NOOPT disable option and creates a separate flag (NOFORTIFY) for this 4494purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 4495errors when building ACPICA. This allows disabling the option without 4496also having to disable optimazations. 4497David Box 4498 4499 Current Release: 4500 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4501 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 4502 4503-- 4504-------------------------------------- 450507 November 2014. Summary of changes for version 20141107: 4506 4507This release is available at https://acpica.org/downloads 4508 4509This release introduces and implements language extensions to ASL that 4510provide support for symbolic ("C-style") operators and expressions. These 4511language extensions are known collectively as ASL+. 4512 4513 45141) iASL Compiler/Disassembler and Tools: 4515 4516Disassembler: Fixed a problem with disassembly of the UartSerialBus 4517macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 4518Box. 4519 4520Disassembler: Fixed the Unicode macro support to add escape sequences. 4521All non-printable ASCII values are emitted as escape sequences, as well 4522as the standard escapes for quote and backslash. Ensures that the 4523disassembled macro can be correctly recompiled. 4524 4525iASL: Added Printf/Fprintf macros for formatted output. These macros are 4526translated to existing AML Concatenate and Store operations. Printf 4527writes to the ASL Debug object. Fprintf allows the specification of an 4528ASL name as the target. Only a single format specifier is required, %o, 4529since the AML interpreter dynamically converts objects to the required 4530type. David E. Box. 4531 4532 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4533 (Concatenate (Concatenate (Concatenate ("", Arg0), 4534 ": Unexpected value for "), Arg1), ", "), Arg2), 4535 " at line "), Arg3), Debug) 4536 4537 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 4538 Arg0, Arg1, Arg2, Arg3) 4539 4540 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4541 ("", Arg1), ": "), Arg0), " Successful"), STR1) 4542 4543 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 4544 4545iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 4546ASL parse tree before the AML code is generated. This allows blocks of 4547ASL code to be removed in order to help locate and identify problem 4548devices and/or code. David E. Box. 4549 4550AcpiExec: Added support (-fi) for an optional namespace object 4551initialization file. This file specifies initial values for namespace 4552objects as necessary for debugging and testing different ASL code paths 4553that may be taken as a result of BIOS options. 4554 4555 45562) Overview of symbolic operator support for ASL (ASL+) 4557------------------------------------------------------- 4558 4559As an extension to the ASL language, iASL implements support for symbolic 4560(C-style) operators for math and logical expressions. This can greatly 4561simplify ASL code as well as improve both readability and 4562maintainability. These language extensions can exist concurrently with 4563all legacy ASL code and expressions. 4564 4565The symbolic extensions are 100% compatible with existing AML 4566interpreters, since no new AML opcodes are created. To implement the 4567extensions, the iASL compiler transforms the symbolic expressions into 4568the legacy ASL/AML equivalents at compile time. 4569 4570Full symbolic expressions are supported, along with the standard C 4571precedence and associativity rules. 4572 4573Full disassembler support for the symbolic expressions is provided, and 4574creates an automatic migration path for existing ASL code to ASL+ code 4575via the disassembly process. By default, the disassembler now emits ASL+ 4576code with symbolic expressions. An option (-dl) is provided to force the 4577disassembler to emit legacy ASL code if desired. 4578 4579Below is the complete list of the currently supported symbolic operators 4580with examples. See the iASL User Guide for additional information. 4581 4582 4583ASL+ Syntax Legacy ASL Equivalent 4584----------- --------------------- 4585 4586 // Math operators 4587 4588Z = X + Y Add (X, Y, Z) 4589Z = X - Y Subtract (X, Y, Z) 4590Z = X * Y Multiply (X, Y, Z) 4591Z = X / Y Divide (X, Y, , Z) 4592Z = X % Y Mod (X, Y, Z) 4593Z = X << Y ShiftLeft (X, Y, Z) 4594Z = X >> Y ShiftRight (X, Y, Z) 4595Z = X & Y And (X, Y, Z) 4596Z = X | Y Or (X, Y, Z) 4597Z = X ^ Y Xor (X, Y, Z) 4598Z = ~X Not (X, Z) 4599X++ Increment (X) 4600X-- Decrement (X) 4601 4602 // Logical operators 4603 4604(X == Y) LEqual (X, Y) 4605(X != Y) LNotEqual (X, Y) 4606(X < Y) LLess (X, Y) 4607(X > Y) LGreater (X, Y) 4608(X <= Y) LLessEqual (X, Y) 4609(X >= Y) LGreaterEqual (X, Y) 4610(X && Y) LAnd (X, Y) 4611(X || Y) LOr (X, Y) 4612(!X) LNot (X) 4613 4614 // Assignment and compound assignment operations 4615 4616X = Y Store (Y, X) 4617X += Y Add (X, Y, X) 4618X -= Y Subtract (X, Y, X) 4619X *= Y Multiply (X, Y, X) 4620X /= Y Divide (X, Y, , X) 4621X %= Y Mod (X, Y, X) 4622X <<= Y ShiftLeft (X, Y, X) 4623X >>= Y ShiftRight (X, Y, X) 4624X &= Y And (X, Y, X) 4625X |= Y Or (X, Y, X) 4626X ^= Y Xor (X, Y, X) 4627 4628 46293) ASL+ Examples: 4630----------------- 4631 4632Legacy ASL: 4633 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4634 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 46350x03FB), 4636 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4637 { 4638 And (MEMB, 0xFFFFFFF0, SRMB) 4639 Store (MEMB, Local2) 4640 Store (PDBM, Local1) 4641 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4642 Store (SRMB, MEMB) 4643 Or (PDBM, 0x02, PDBM) 4644 } 4645 4646ASL+ version: 4647 If (((R510 & 0x03FB) == 0x02E0) || 4648 ((R520 & 0x03FB) == 0x02E0) || 4649 ((R530 & 0x03FB) == 0x02E0) || 4650 ((R540 & 0x03FB) == 0x02E0)) 4651 { 4652 SRMB = (MEMB & 0xFFFFFFF0) 4653 Local2 = MEMB 4654 Local1 = PDBM 4655 PDBM &= 0xFFFFFFFFFFFFFFF9 4656 MEMB = SRMB 4657 PDBM |= 0x02 4658 } 4659 4660Legacy ASL: 4661 Store (0x1234, Local1) 4662 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4663 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4664 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4665 Store (Index (PKG1, 0x03), Local6) 4666 Store (Add (Local3, Local2), Debug) 4667 Add (Local1, 0x0F, Local2) 4668 Add (Local1, Multiply (Local2, Local3), Local2) 4669 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4670 4671ASL+ version: 4672 Local1 = 0x1234 4673 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4674 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4675 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4676 Local6 = Index (PKG1, 0x03) 4677 Debug = (Local3 + Local2) 4678 Local2 = (Local1 + 0x0F) 4679 Local2 = (Local1 + (Local2 * Local3)) 4680 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4681 4682 4683---------------------------------------- 468426 September 2014. Summary of changes for version 20140926: 4685 46861) ACPICA kernel-resident subsystem: 4687 4688Updated the GPIO operation region handler interface (GeneralPurposeIo). 4689In order to support GPIO Connection objects with multiple pins, along 4690with the related Field objects, the following changes to the interface 4691have been made: The Address is now defined to be the offset in bits of 4692the field unit from the previous invocation of a Connection. It can be 4693viewed as a "Pin Number Index" into the connection resource descriptor. 4694The BitWidth is the exact bit width of the field. It is usually one bit, 4695but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4696additional information and examples. 4697 4698GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4699corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4700by the firmware), so that they cannot fire until they are enabled via 4701AcpiUpdateAllGpes. Rafael J. Wysocki. 4702 4703Added a new return flag for the Event/GPE status interfaces -- 4704AcpiGetEventStatus and AcpiGetGpeStatus. The new 4705ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4706GPE currently has a handler associated with it, and can thus actually 4707affect the system. Lv Zheng. 4708 4709Example Code and Data Size: These are the sizes for the OS-independent 4710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4711debug version of the code includes the debug output trace mechanism and 4712has a much larger code and data size. 4713 4714 Current Release: 4715 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4716 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4717 Previous Release: 4718 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4719 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4720 47212) iASL Compiler/Disassembler and Tools: 4722 4723iASL: Fixed a memory allocation/free regression introduced in 20140828 4724that could cause the compiler to crash. This was introduced inadvertently 4725during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 47261113. 4727 4728iASL: Removed two error messages that have been found to create false 4729positives, until they can be fixed and fully validated (ACPICA BZ 1112): 47301) Illegal forward reference within a method 47312) Illegal reference across two methods 4732 4733iASL: Implemented a new option (-lm) to create a hardware mapping file 4734that summarizes all GPIO, I2C, SPI, and UART connections. This option 4735works for both the compiler and disassembler. See the iASL compiler user 4736guide for additional information and examples (section 6.4.6). 4737 4738AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4739version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4740a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4741 4742AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4743unless STDIN is actually a terminal. Assists with batch-mode processing. 4744ACPICA BZ 1114. 4745 4746Disassembler/AcpiHelp: Added another large group of recognized _HID 4747values. 4748 4749 4750---------------------------------------- 475128 August 2014. Summary of changes for version 20140828: 4752 47531) ACPICA kernel-resident subsystem: 4754 4755Fixed a problem related to the internal use of the Timer() operator where 4756a 64-bit divide could cause an attempted link to a double-precision math 4757library. This divide is not actually necessary, so the code was 4758restructured to eliminate it. Lv Zheng. 4759 4760ACPI 5.1: Added support for the runtime validation of the _DSD package 4761(similar to the iASL support). 4762 4763ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4764SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4765 4766Example Code and Data Size: These are the sizes for the OS-independent 4767acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4768debug version of the code includes the debug output trace mechanism and 4769has a much larger code and data size. 4770 4771 Current Release: 4772 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4773 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4774 Previous Release: 4775 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4776 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4777 47782) iASL Compiler/Disassembler and Tools: 4779 4780AcpiExec: Fixed a problem on unix systems where the original terminal 4781state was not always properly restored upon exit. Seen when using the -v 4782option. ACPICA BZ 1104. 4783 4784iASL: Fixed a problem with the validation of the ranges/length within the 4785Memory24 resource descriptor. There was a boundary condition when the 4786range was equal to the (length -1) caused by the fact that these values 4787are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4788 4789Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4790polarity 4791flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4792is 4793now supported properly. 4794 4795ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4796in the disassembler, data table compiler, and table template generator. 4797 4798iASL: Added a requirement for Device() objects that one of either a _HID 4799or _ADR must exist within the scope of a Device, as per the ACPI 4800specification. Remove a similar requirement that was incorrectly in place 4801for the _DSD object. 4802 4803iASL: Added error detection for illegal named references within control 4804methods that would cause runtime failures. Now trapped as errors are: 1) 4805References to objects within a non-parent control method. 2) Forward 4806references (within a method) -- for control methods, AML interpreters use 4807a one-pass parse of control methods. ACPICA BZ 1008. 4808 4809iASL: Added error checking for dependencies related to the _PSx power 4810methods. ACPICA BZ 1029. 48111) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4812_PS3. 48132) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4814scope. 4815 4816iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4817deploying the existing object and string caches and adding new caches for 4818the table compiler. 4819 4820iASL: Split the huge parser source file into multiple subfiles to improve 4821manageability. Generation now requires the M4 macro preprocessor, which 4822is part of the Bison distribution on both unix and windows platforms. 4823 4824AcpiSrc: Fixed and removed all extraneous warnings generated during 4825entire ACPICA source code scan and/or conversion. 4826 4827 4828---------------------------------------- 4829 483024 July 2014. Summary of changes for version 20140724: 4831 4832The ACPI 5.1 specification has been released and is available at: 4833http://uefi.org/specs/access 4834 4835 48360) ACPI 5.1 support in ACPICA: 4837 4838ACPI 5.1 is fully supported in ACPICA as of this release. 4839 4840New predefined names. Support includes iASL and runtime ACPICA 4841validation. 4842 _CCA (Cache Coherency Attribute). 4843 _DSD (Device-Specific Data). David Box. 4844 4845Modifications to existing ACPI tables. Support includes headers, iASL 4846Data Table compiler, disassembler, and the template generator. 4847 FADT - New fields and flags. Graeme Gregory. 4848 GTDT - One new subtable and new fields. Tomasz Nowicki. 4849 MADT - Two new subtables. Tomasz Nowicki. 4850 PCCT - One new subtable. 4851 4852Miscellaneous. 4853 New notification type for System Resource Affinity change events. 4854 4855 48561) ACPICA kernel-resident subsystem: 4857 4858Fixed a regression introduced in 20140627 where a fault can happen during 4859the deletion of Alias AML namespace objects. The problem affected both 4860the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4861 4862Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4863simple mechanism to enable wake GPEs that have no associated handler or 4864control method. Rafael Wysocki. 4865 4866Updated the AcpiEnableGpe interface to disallow the enable if there is no 4867handler or control method associated with the particular GPE. This will 4868help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4869 4870Updated GPE handling and dispatch by disabling the GPE before clearing 4871the status bit for edge-triggered GPEs. Lv Zheng. 4872 4873Added Timer() support to the AML Debug object. The current timer value is 4874now displayed with each invocation of (Store to) the debug object to 4875enable simple generation of execution times for AML code (method 4876execution for example.) ACPICA BZ 1093. 4877 4878Example Code and Data Size: These are the sizes for the OS-independent 4879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4880debug version of the code includes the debug output trace mechanism and 4881has a much larger code and data size. 4882 4883 Current Release: 4884 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4885 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4886 Previous Release: 4887 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4888 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4889 4890 48912) iASL Compiler/Disassembler and Tools: 4892 4893Fixed an issue with the recently added local printf implementation, 4894concerning width/precision specifiers that could cause incorrect output. 4895Lv Zheng. ACPICA BZ 1094. 4896 4897Disassembler: Added support to detect buffers that contain UUIDs and 4898disassemble them to an invocation of the ToUUID operator. Also emit 4899commented descriptions of known ACPI-related UUIDs. 4900 4901AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4902-u. Adds three new files. 4903 4904iASL: Update table compiler and disassembler for DMAR table changes that 4905were introduced in September 2013. With assistance by David Woodhouse. 4906 4907---------------------------------------- 490827 June 2014. Summary of changes for version 20140627: 4909 49101) ACPICA kernel-resident subsystem: 4911 4912Formatted Output: Implemented local versions of standard formatted output 4913utilities such as printf, etc. Over time, it has been discovered that 4914there are in fact many portability issues with printf, and the addition 4915of this feature will fix/prevent these issues once and for all. Some 4916known issues are summarized below: 4917 49181) Output of 64-bit values is not portable. For example, UINT64 is %ull 4919for the Linux kernel and is %uI64 for some MSVC versions. 49202) Invoking printf consistently in a manner that is portable across both 492132-bit and 64-bit platforms is difficult at best in many situations. 49223) The output format for pointers varies from system to system (leading 4923zeros especially), and leads to inconsistent output from ACPICA across 4924platforms. 49254) Certain platform-specific printf formats may conflict with ACPICA use. 49265) If there is no local C library available, ACPICA now has local support 4927for printf. 4928 4929-- To address these printf issues in a complete manner, ACPICA now 4930directly implements a small subset of printf format specifiers, only 4931those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4932 4933Implemented support for ACPICA generation within the EFI environment. 4934Initially, the AcpiDump utility is supported in the UEFI shell 4935environment. Lv Zheng. 4936 4937Added a new external interface, AcpiLogError, to improve ACPICA 4938portability. This allows the host to redirect error messages from the 4939ACPICA utilities. Lv Zheng. 4940 4941Added and deployed new OSL file I/O interfaces to improve ACPICA 4942portability: 4943 AcpiOsOpenFile 4944 AcpiOsCloseFile 4945 AcpiOsReadFile 4946 AcpiOsWriteFile 4947 AcpiOsGetFileOffset 4948 AcpiOsSetFileOffset 4949There are C library implementations of these functions in the new file 4950service_layers/oslibcfs.c -- however, the functions can be implemented by 4951the local host in any way necessary. Lv Zheng. 4952 4953Implemented a mechanism to disable/enable ACPI table checksum validation 4954at runtime. This can be useful when loading tables very early during OS 4955initialization when it may not be possible to map the entire table in 4956order to compute the checksum. Lv Zheng. 4957 4958Fixed a buffer allocation issue for the Generic Serial Bus support. 4959Originally, a fixed buffer length was used. This change allows for 4960variable-length buffers based upon the protocol indicated by the field 4961access attributes. Reported by Lan Tianyu. Lv Zheng. 4962 4963Fixed a problem where an object detached from a namespace node was not 4964properly terminated/cleared and could cause a circular list problem if 4965reattached. ACPICA BZ 1063. David Box. 4966 4967Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4968 4969Fixed a possible memory leak in an error return path within the function 4970AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4971 4972Example Code and Data Size: These are the sizes for the OS-independent 4973acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4974debug version of the code includes the debug output trace mechanism and 4975has a much larger code and data size. 4976 4977 Current Release: 4978 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4979 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4980 Previous Release: 4981 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4982 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4983 4984 49852) iASL Compiler/Disassembler and Tools: 4986 4987Disassembler: Add dump of ASCII equivalent text within a comment at the 4988end of each line of the output for the Buffer() ASL operator. 4989 4990AcpiDump: Miscellaneous changes: 4991 Fixed repetitive table dump in -n mode. 4992 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4993the ACPI 2.0 GUID fails. 4994 4995iASL: Fixed a problem where the compiler could fault if incorrectly given 4996an acpidump output file as input. ACPICA BZ 1088. David Box. 4997 4998AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4999they are invoked without any arguments. 5000 5001Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 50021086. Colin Ian King. 5003 5004Disassembler: Cleaned up a block of code that extracts a parent Op 5005object. Added a comment that explains that the parent is guaranteed to be 5006valid in this case. ACPICA BZ 1069. 5007 5008 5009---------------------------------------- 501024 April 2014. Summary of changes for version 20140424: 5011 50121) ACPICA kernel-resident subsystem: 5013 5014Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 5015Some of these tables are known to contain a trailing NULL entry. Lv 5016Zheng. 5017 5018Removed an extraneous error message for the case where there are a large 5019number of system GPEs (> 124). This was the "32-bit FADT register is too 5020long to convert to GAS struct" message, which is irrelevant for GPEs 5021since the GPEx_BLK_LEN fields of the FADT are always used instead of the 5022(limited capacity) GAS bit length. Also, several changes to ensure proper 5023support for GPE numbers > 255, where some "GPE number" fields were 8-bits 5024internally. 5025 5026Implemented and deployed additional configuration support for the public 5027ACPICA external interfaces. Entire classes of interfaces can now be 5028easily modified or configured out, replaced by stubbed inline functions 5029by default. Lv Zheng. 5030 5031Moved all public ACPICA runtime configuration globals to the public 5032ACPICA external interface file for convenience. Also, removed some 5033obsolete/unused globals. See the file acpixf.h. Lv Zheng. 5034 5035Documentation: Added a new section to the ACPICA reference describing the 5036maximum number of GPEs that can be supported by the FADT-defined GPEs in 5037block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 5038reference. 5039 5040Example Code and Data Size: These are the sizes for the OS-independent 5041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5042debug version of the code includes the debug output trace mechanism and 5043has a much larger code and data size. 5044 5045 Current Release: 5046 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 5047 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 5048 Previous Release: 5049 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 5050 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 5051 5052 50532) iASL Compiler/Disassembler and Tools: 5054 5055iASL and disassembler: Add full support for the LPIT table (Low Power 5056Idle Table). Includes support in the disassembler, data table compiler, 5057and template generator. 5058 5059AcpiDump utility: 50601) Add option to force the use of the RSDT (over the XSDT). 50612) Improve validation of the RSDP signature (use 8 chars instead of 4). 5062 5063iASL: Add check for predefined packages that are too large. For 5064predefined names that contain subpackages, check if each subpackage is 5065too large. (Check for too small already exists.) 5066 5067Debugger: Updated the GPE command (which simulates a GPE by executing the 5068GPE code paths in ACPICA). The GPE device is now optional, and defaults 5069to the GPE 0/1 FADT-defined blocks. 5070 5071Unix application OSL: Update line-editing support. Add additional error 5072checking and take care not to reset terminal attributes on exit if they 5073were never set. This should help guarantee that the terminal is always 5074left in the previous state on program exit. 5075 5076 5077---------------------------------------- 507825 March 2014. Summary of changes for version 20140325: 5079 50801) ACPICA kernel-resident subsystem: 5081 5082Updated the auto-serialize feature for control methods. This feature 5083automatically serializes all methods that create named objects in order 5084to prevent runtime errors. The update adds support to ignore the 5085currently executing AML SyncLevel when invoking such a method, in order 5086to prevent disruption of any existing SyncLevel priorities that may exist 5087in the AML code. Although the use of SyncLevels is relatively rare, this 5088change fixes a regression where an AE_AML_MUTEX_ORDER exception can 5089appear on some machines starting with the 20140214 release. 5090 5091Added a new external interface to allow the host to install ACPI tables 5092very early, before the namespace is even created. AcpiInstallTable gives 5093the host additional flexibility for ACPI table management. Tables can be 5094installed directly by the host as if they had originally appeared in the 5095XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 5096(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 5097with additional internal restructuring and cleanup. See the ACPICA 5098Reference for interface details. Lv Zheng. 5099 5100Added validation of the checksum for all incoming dynamically loaded 5101tables (via external interfaces or via AML Load/LoadTable operators). Lv 5102Zheng. 5103 5104Updated the use of the AcpiOsWaitEventsComplete interface during Notify 5105and GPE handler removal. Restructured calls to eliminate possible race 5106conditions. Lv Zheng. 5107 5108Added a warning for the use/execution of the ASL/AML Unload (table) 5109operator. This will help detect and identify machines that use this 5110operator if and when it is ever used. This operator has never been seen 5111in the field and the usage model and possible side-effects of the drastic 5112runtime action of a full table removal are unknown. 5113 5114Reverted the use of #pragma push/pop which was introduced in the 20140214 5115release. It appears that push and pop are not implemented by enough 5116compilers to make the use of this feature feasible for ACPICA at this 5117time. However, these operators may be deployed in a future ACPICA 5118release. 5119 5120Added the missing EXPORT_SYMBOL macros for the install and remove SCI 5121handler interfaces. 5122 5123Source code generation: 51241) Disabled the use of the "strchr" macro for the gcc-specific 5125generation. For some versions of gcc, this macro can periodically expose 5126a compiler bug which in turn causes compile-time error(s). 51272) Added support for PPC64 compilation. Colin Ian King. 5128 5129Example Code and Data Size: These are the sizes for the OS-independent 5130acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5131debug version of the code includes the debug output trace mechanism and 5132has a much larger code and data size. 5133 5134 Current Release: 5135 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 5136 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 5137 Previous Release: 5138 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5139 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5140 5141 51422) iASL Compiler/Disassembler and Tools: 5143 5144Disassembler: Added several new features to improve the readability of 5145the resulting ASL code. Extra information is emitted within comment 5146fields in the ASL code: 51471) Known _HID/_CID values are decoded to descriptive text. 51482) Standard values for the Notify() operator are decoded to descriptive 5149text. 51503) Target operands are expanded to full pathnames (in a comment) when 5151possible. 5152 5153Disassembler: Miscellaneous updates for extern() handling: 51541) Abort compiler if file specified by -fe option does not exist. 51552) Silence unnecessary warnings about argument count mismatches. 51563) Update warning messages concerning unresolved method externals. 51574) Emit "UnknownObj" keyword for externals whose type cannot be 5158determined. 5159 5160AcpiHelp utility: 51611) Added the -a option to display both the ASL syntax and the AML 5162encoding for an input ASL operator. This effectively displays all known 5163information about an ASL operator with one AcpiHelp invocation. 51642) Added substring match support (similar to a wildcard) for the -i 5165(_HID/PNP IDs) option. 5166 5167iASL/Disassembler: Since this tool does not yet support execution on big- 5168endian machines, added detection of endianness and an error message if 5169execution is attempted on big-endian. Support for big-endian within iASL 5170is a feature that is on the ACPICA to-be-done list. 5171 5172AcpiBin utility: 51731) Remove option to extract binary files from an acpidump; this function 5174is made obsolete by the AcpiXtract utility. 51752) General cleanup of open files and allocated buffers. 5176 5177 5178---------------------------------------- 517914 February 2014. Summary of changes for version 20140214: 5180 51811) ACPICA kernel-resident subsystem: 5182 5183Implemented a new mechanism to proactively prevent problems with ill- 5184behaved reentrant control methods that create named ACPI objects. This 5185behavior is illegal as per the ACPI specification, but is nonetheless 5186frequently seen in the field. Previously, this could lead to an 5187AE_ALREADY_EXISTS exception if the method was actually entered by more 5188than one thread. This new mechanism detects such methods at table load 5189time and marks them "serialized" to prevent reentrancy. A new global 5190option, AcpiGbl_AutoSerializeMethods, has been added to disable this 5191feature if desired. This mechanism and global option obsoletes and 5192supersedes the previous AcpiGbl_SerializeAllMethods option. 5193 5194Added the "Windows 2013" string to the _OSI support. ACPICA will now 5195respond TRUE to _OSI queries with this string. It is the stated policy of 5196ACPICA to add new strings to the _OSI support as soon as possible after 5197they are defined. See the full ACPICA _OSI policy which has been added to 5198the utilities/utosi.c file. 5199 5200Hardened/updated the _PRT return value auto-repair code: 52011) Do not abort the repair on a single subpackage failure, continue to 5202check all subpackages. 52032) Add check for the minimum subpackage length (4). 52043) Properly handle extraneous NULL package elements. 5205 5206Added support to avoid the possibility of infinite loops when traversing 5207object linked lists. Never allow an infinite loop, even in the face of 5208corrupted object lists. 5209 5210ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 5211pack(pop) directives to ensure that the ACPICA headers are independent of 5212compiler settings or other host headers. 5213 5214Example Code and Data Size: These are the sizes for the OS-independent 5215acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5216debug version of the code includes the debug output trace mechanism and 5217has a much larger code and data size. 5218 5219 Current Release: 5220 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5221 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5222 Previous Release: 5223 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5224 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5225 5226 52272) iASL Compiler/Disassembler and Tools: 5228 5229iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 5230first reserved field was incorrectly forced to have a value of zero. This 5231change correctly forces the field to have a value of one. ACPICA BZ 1081. 5232 5233Debugger: Added missing support for the "Extra" and "Data" subobjects 5234when displaying object data. 5235 5236Debugger: Added support to display entire object linked lists when 5237displaying object data. 5238 5239iASL: Removed the obsolete -g option to obtain ACPI tables from the 5240Windows registry. This feature has been superseded by the acpidump 5241utility. 5242 5243 5244---------------------------------------- 524514 January 2014. Summary of changes for version 20140114: 5246 52471) ACPICA kernel-resident subsystem: 5248 5249Updated all ACPICA copyrights and signons to 2014. Added the 2014 5250copyright to all module headers and signons, including the standard Linux 5251header. This affects virtually every file in the ACPICA core subsystem, 5252iASL compiler, all ACPICA utilities, and the test suites. 5253 5254Improved parameter validation for AcpiInstallGpeBlock. Added the 5255following checks: 52561) The incoming device handle refers to type ACPI_TYPE_DEVICE. 52572) There is not already a GPE block attached to the device. 5258Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 5259device. 5260 5261Correctly support "references" in the ACPI_OBJECT. This change fixes the 5262support to allow references (namespace nodes) to be passed as arguments 5263to control methods via the evaluate object interface. This is probably 5264most useful for testing purposes, however. 5265 5266Improved support for 32/64 bit physical addresses in printf()-like 5267output. This change improves the support for physical addresses in printf 5268debug statements and other output on both 32-bit and 64-bit hosts. It 5269consistently outputs the appropriate number of bytes for each host. The 5270%p specifier is unsatisfactory since it does not emit uniform output on 5271all hosts/clib implementations (on some, leading zeros are not supported, 5272leading to difficult-to-read output). 5273 5274Example Code and Data Size: These are the sizes for the OS-independent 5275acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5276debug version of the code includes the debug output trace mechanism and 5277has a much larger code and data size. 5278 5279 Current Release: 5280 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5281 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5282 Previous Release: 5283 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5284 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5285 5286 52872) iASL Compiler/Disassembler and Tools: 5288 5289iASL: Fix a possible fault when using the Connection() operator. Fixes a 5290problem if the parent Field definition for the Connection operator refers 5291to an operation region that does not exist. ACPICA BZ 1064. 5292 5293AcpiExec: Load of local test tables is now optional. The utility has the 5294capability to load some various tables to test features of ACPICA. 5295However, there are enough of them that the output of the utility became 5296confusing. With this change, only the required local tables are displayed 5297(RSDP, XSDT, etc.) along with the actual tables loaded via the command 5298line specification. This makes the default output simler and easier to 5299understand. The -el command line option restores the original behavior 5300for testing purposes. 5301 5302AcpiExec: Added support for overlapping operation regions. This change 5303expands the simulation of operation regions by supporting regions that 5304overlap within the given address space. Supports SystemMemory and 5305SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 5306 5307AcpiExec: Added region handler support for PCI_Config and EC spaces. This 5308allows AcpiExec to simulate these address spaces, similar to the current 5309support for SystemMemory and SystemIO. 5310 5311Debugger: Added new command to read/write/compare all namespace objects. 5312The command "test objects" will exercise the entire namespace by writing 5313new values to each data object, and ensuring that the write was 5314successful. The original value is then restored and verified. 5315 5316Debugger: Added the "test predefined" command. This change makes this 5317test public and puts it under the new "test" command. The test executes 5318each and every predefined name within the current namespace. 5319 5320 5321---------------------------------------- 532218 December 2013. Summary of changes for version 20131218: 5323 5324Global note: The ACPI 5.0A specification was released this month. There 5325are no changes needed for ACPICA since this release of ACPI is an 5326errata/clarification release. The specification is available at 5327acpi.info. 5328 5329 53301) ACPICA kernel-resident subsystem: 5331 5332Added validation of the XSDT root table if it is present. Some older 5333platforms contain an XSDT that is ill-formed or otherwise invalid (such 5334as containing some or all entries that are NULL pointers). This change 5335adds a new function to validate the XSDT before actually using it. If the 5336XSDT is found to be invalid, ACPICA will now automatically fall back to 5337using the RSDT instead. Original implementation by Zhao Yakui. Ported to 5338ACPICA and enhanced by Lv Zheng and Bob Moore. 5339 5340Added a runtime option to ignore the XSDT and force the use of the RSDT. 5341This change adds a runtime option that will force ACPICA to use the RSDT 5342instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 5343requires that an XSDT be used instead of the RSDT, the XSDT has been 5344found to be corrupt or ill-formed on some machines. Lv Zheng. 5345 5346Added a runtime option to favor 32-bit FADT register addresses over the 534764-bit addresses. This change adds an option to favor 32-bit FADT 5348addresses when there is a conflict between the 32-bit and 64-bit versions 5349of the same register. The default behavior is to use the 64-bit version 5350in accordance with the ACPI specification. This can now be overridden via 5351the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 5352 5353During the change above, the internal "Convert FADT" and "Verify FADT" 5354functions have been merged to simplify the code, making it easier to 5355understand and maintain. ACPICA BZ 933. 5356 5357Improve exception reporting and handling for GPE block installation. 5358Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 5359status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 5360 5361Added helper macros to extract bus/segment numbers from the HEST table. 5362This change adds two macros to extract the encoded bus and segment 5363numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 5364Betty Dall <betty.dall@hp.com> 5365 5366Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 5367by ACPICA. It is not a public macro, so it should have no effect on 5368existing OSV code. Lv Zheng. 5369 5370Example Code and Data Size: These are the sizes for the OS-independent 5371acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5372debug version of the code includes the debug output trace mechanism and 5373has a much larger code and data size. 5374 5375 Current Release: 5376 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5377 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5378 Previous Release: 5379 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5380 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5381 5382 53832) iASL Compiler/Disassembler and Tools: 5384 5385Disassembler: Improved pathname support for emitted External() 5386statements. This change adds full pathname support for external names 5387that have been resolved internally by the inclusion of additional ACPI 5388tables (via the iASL -e option). Without this change, the disassembler 5389can emit multiple externals for the same object, or it become confused 5390when the Scope() operator is used on an external object. Overall, greatly 5391improves the ability to actually recompile the emitted ASL code when 5392objects a referenced across multiple ACPI tables. Reported by Michael 5393Tsirkin (mst@redhat.com). 5394 5395Tests/ASLTS: Updated functional control suite to execute with no errors. 5396David Box. Fixed several errors related to the testing of the interpreter 5397slack mode. Lv Zheng. 5398 5399iASL: Added support to detect names that are declared within a control 5400method, but are unused (these are temporary names that are only valid 5401during the time the method is executing). A remark is issued for these 5402cases. ACPICA BZ 1022. 5403 5404iASL: Added full support for the DBG2 table. Adds full disassembler, 5405table compiler, and template generator support for the DBG2 table (Debug 5406Port 2 table). 5407 5408iASL: Added full support for the PCCT table, update the table definition. 5409Updates the PCCT table definition in the actbl3.h header and adds table 5410compiler and template generator support. 5411 5412iASL: Added an option to emit only error messages (no warnings/remarks). 5413The -ve option will enable only error messages, warnings and remarks are 5414suppressed. This can simplify debugging when only the errors are 5415important, such as when an ACPI table is disassembled and there are many 5416warnings and remarks -- but only the actual errors are of real interest. 5417 5418Example ACPICA code (source/tools/examples): Updated the example code so 5419that it builds to an actual working program, not just example code. Added 5420ACPI tables and execution of an example control method in the DSDT. Added 5421makefile support for Unix generation. 5422 5423 5424---------------------------------------- 542515 November 2013. Summary of changes for version 20131115: 5426 5427This release is available at https://acpica.org/downloads 5428 5429 54301) ACPICA kernel-resident subsystem: 5431 5432Resource Manager: Fixed loop termination for the "get AML length" 5433function. The loop previously had an error termination on a NULL resource 5434pointer, which can never happen since the loop simply increments a valid 5435resource pointer. This fix changes the loop to terminate with an error on 5436an invalid end-of-buffer condition. The problem can be seen as an 5437infinite loop by callers to AcpiSetCurrentResources with an invalid or 5438corrupted resource descriptor, or a resource descriptor that is missing 5439an END_TAG descriptor. Reported by Dan Carpenter 5440<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 5441 5442Table unload and ACPICA termination: Delete all attached data objects 5443during namespace node deletion. This fix updates namespace node deletion 5444to delete the entire list of attached objects (attached via 5445AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 54461024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 5447 5448ACPICA termination: Added support to delete all objects attached to the 5449root namespace node. This fix deletes any and all objects that have been 5450attached to the root node via AcpiAttachData. Previously, none of these 5451objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 5452 5453Debug output: Do not emit the function nesting level for the in-kernel 5454build. The nesting level is really only useful during a single-thread 5455execution. Therefore, only enable this output for the AcpiExec utility. 5456Also, only emit the thread ID when executing under AcpiExec (Context 5457switches are still always detected and a message is emitted). ACPICA BZ 5458972. 5459 5460Example Code and Data Size: These are the sizes for the OS-independent 5461acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5462debug version of the code includes the debug output trace mechanism and 5463has a much larger code and data size. 5464 5465 Current Release: 5466 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5467 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5468 Previous Release: 5469 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5470 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5471 5472 54732) iASL Compiler/Disassembler and Tools: 5474 5475AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 5476correct portable POSIX header for terminal control functions. 5477 5478Disassembler: Fixed control method invocation issues related to the use 5479of the CondRefOf() operator. The problem is seen in the disassembly where 5480control method invocations may not be disassembled properly if the 5481control method name has been used previously as an argument to CondRefOf. 5482The solution is to not attempt to emit an external declaration for the 5483CondRefOf target (it is not necessary in the first place). This prevents 5484disassembler object type confusion. ACPICA BZ 988. 5485 5486Unix Makefiles: Added an option to disable compiler optimizations and the 5487_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 5488with optimizations (reportedly, gcc 4.4 for example). This change adds a 5489command line option for make (NOOPT) that disables all compiler 5490optimizations and the _FORTIFY_SOURCE compiler flag. The default 5491optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 54921034. Lv Zheng, Bob Moore. 5493 5494Tests/ASLTS: Added options to specify individual test cases and modes. 5495This allows testers running aslts.sh to optionally specify individual 5496test modes and test cases. Also added an option to disable the forced 5497generation of the ACPICA tools from source if desired. Lv Zheng. 5498 5499---------------------------------------- 550027 September 2013. Summary of changes for version 20130927: 5501 5502This release is available at https://acpica.org/downloads 5503 5504 55051) ACPICA kernel-resident subsystem: 5506 5507Fixed a problem with store operations to reference objects. This change 5508fixes a problem where a Store operation to an ArgX object that contained 5509a 5510reference to a field object did not complete the automatic dereference 5511and 5512then write to the actual field object. Instead, the object type of the 5513field object was inadvertently changed to match the type of the source 5514operand. The new behavior will actually write to the field object (buffer 5515field or field unit), thus matching the correct ACPI-defined behavior. 5516 5517Implemented support to allow the host to redefine individual OSL 5518prototypes. This change enables the host to redefine OSL prototypes found 5519in the acpiosxf.h file. This allows the host to implement OSL interfaces 5520with a macro or inlined function. Further, it allows the host to add any 5521additional required modifiers such as __iomem, __init, __exit, etc., as 5522necessary on a per-interface basis. Enables maximum flexibility for the 5523OSL interfaces. Lv Zheng. 5524 5525Hardcoded the access width for the FADT-defined reset register. The ACPI 5526specification requires the reset register width to be 8 bits. ACPICA now 5527hardcodes the width to 8 and ignores the FADT width value. This provides 5528compatibility with other ACPI implementations that have allowed BIOS code 5529with bad register width values to go unnoticed. Matthew Garett, Bob 5530Moore, 5531Lv Zheng. 5532 5533Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 5534used 5535in the OSL header (acpiosxf). The change modifies the position of this 5536macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 5537build issues if the OSL defines the implementation of the interface to be 5538an inline stub function. Lv Zheng. 5539 5540Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 5541initialization interfaces. This change adds a new macro for the main init 5542and terminate external interfaces in order to support hosts that require 5543additional or different processing for these functions. Changed from 5544ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 5545Zheng, Bob Moore. 5546 5547Cleaned up the memory allocation macros for configurability. In the 5548common 5549case, the ACPI_ALLOCATE and related macros now resolve directly to their 5550respective AcpiOs* OSL interfaces. Two options: 55511) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 5552default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 55532) For AcpiExec (and for debugging), the macros can optionally be 5554resolved 5555to the local ACPICA interfaces that track each allocation (local tracking 5556is used to immediately detect memory leaks). 5557Lv Zheng. 5558 5559Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 5560to predefine this macro to either TRUE or FALSE during the system build. 5561 5562Replaced __FUNCTION_ with __func__ in the gcc-specific header. 5563 5564Example Code and Data Size: These are the sizes for the OS-independent 5565acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5566debug version of the code includes the debug output trace mechanism and 5567has a much larger code and data size. 5568 5569 Current Release: 5570 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5571 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5572 Previous Release: 5573 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5574 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5575 5576 55772) iASL Compiler/Disassembler and Tools: 5578 5579iASL: Implemented wildcard support for the -e option. This simplifies use 5580when there are many SSDTs that must be included to resolve external 5581method 5582declarations. ACPICA BZ 1041. Example: 5583 iasl -e ssdt*.dat -d dsdt.dat 5584 5585AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5586adds a portable module that implements full history and limited line 5587editing for Unix and Linux systems. It does not use readline() due to 5588portability issues. Instead it uses the POSIX termio interface to put the 5589terminal in raw input mode so that the various special keys can be 5590trapped 5591(such as up/down-arrow for history support and left/right-arrow for line 5592editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5593 5594AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5595one or more spaces. This provides compatible with early or different 5596versions of the AcpiDump utility. ACPICA BZ 1044. 5597 5598AcpiDump: Do not ignore tables that contain only an ACPI table header. 5599Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5600no other data. This change adds support to dump these tables. Any tables 5601shorter than the length of an ACPI table header remain in error (an error 5602message is emitted). Reported by Yi Li. 5603 5604Debugger: Echo actual command along with the "unknown command" message. 5605 5606---------------------------------------- 560723 August 2013. Summary of changes for version 20130823: 5608 56091) ACPICA kernel-resident subsystem: 5610 5611Implemented support for host-installed System Control Interrupt (SCI) 5612handlers. Certain ACPI functionality requires the host to handle raw 5613SCIs. For example, the "SCI Doorbell" that is defined for memory power 5614state support requires the host device driver to handle SCIs to examine 5615if the doorbell has been activated. Multiple SCI handlers can be 5616installed to allow for future expansion. New external interfaces are 5617AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5618details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5619 5620Operation region support: Never locally free the handler "context" 5621pointer. This change removes some dangerous code that attempts to free 5622the handler context pointer in some (rare) circumstances. The owner of 5623the handler owns this pointer and the ACPICA code should never touch it. 5624Although not seen to be an issue in any kernel, it did show up as a 5625problem (fault) under AcpiExec. Also, set the internal storage field for 5626the context pointer to zero when the region is deactivated, simply for 5627sanity. David Box. ACPICA BZ 1039. 5628 5629AcpiRead: On error, do not modify the return value target location. If an 5630error happens in the middle of a split 32/32 64-bit I/O operation, do not 5631modify the target of the return value pointer. Makes the code consistent 5632with the rest of ACPICA. Bjorn Helgaas. 5633 5634Example Code and Data Size: These are the sizes for the OS-independent 5635acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5636debug version of the code includes the debug output trace mechanism and 5637has a much larger code and data size. 5638 5639 Current Release: 5640 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5641 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5642 Previous Release: 5643 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5644 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5645 5646 56472) iASL Compiler/Disassembler and Tools: 5648 5649AcpiDump: Implemented several new features and fixed some problems: 56501) Added support to dump the RSDP, RSDT, and XSDT tables. 56512) Added support for multiple table instances (SSDT, UEFI). 56523) Added option to dump "customized" (overridden) tables (-c). 56534) Fixed a problem where some table filenames were improperly 5654constructed. 56555) Improved some error messages, removed some unnecessary messages. 5656 5657iASL: Implemented additional support for disassembly of ACPI tables that 5658contain invocations of external control methods. The -fe<file> option 5659allows the import of a file that specifies the external methods along 5660with the required number of arguments for each -- allowing for the 5661correct disassembly of the table. This is a workaround for a limitation 5662of AML code where the disassembler often cannot determine the number of 5663arguments required for an external control method and generates incorrect 5664ASL code. See the iASL reference for details. ACPICA BZ 1030. 5665 5666Debugger: Implemented a new command (paths) that displays the full 5667pathnames (namepaths) and object types of all objects in the namespace. 5668This is an alternative to the namespace command. 5669 5670Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5671mechanism and any installed handlers. 5672 5673iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5674This can occur if there are too many parent prefixes in a namepath (for 5675example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5676 5677Application OSLs: Set the return value for the PCI read functions. These 5678functions simply return AE_OK, but should set the return value to zero 5679also. This change implements this. ACPICA BZ 1038. 5680 5681Debugger: Prevent possible command line buffer overflow. Increase the 5682size of a couple of the debugger line buffers, and ensure that overflow 5683cannot happen. ACPICA BZ 1037. 5684 5685iASL: Changed to abort immediately on serious errors during the parsing 5686phase. Due to the nature of ASL, there is no point in attempting to 5687compile these types of errors, and they typically end up causing a 5688cascade of hundreds of errors which obscure the original problem. 5689 5690---------------------------------------- 569125 July 2013. Summary of changes for version 20130725: 5692 56931) ACPICA kernel-resident subsystem: 5694 5695Fixed a problem with the DerefOf operator where references to FieldUnits 5696and BufferFields incorrectly returned the parent object, not the actual 5697value of the object. After this change, a dereference of a FieldUnit 5698reference results in a read operation on the field to get the value, and 5699likewise, the appropriate BufferField value is extracted from the target 5700buffer. 5701 5702Fixed a problem where the _WAK method could cause a fault under these 5703circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5704method returned no value. The problem is rarely seen because most kernels 5705run ACPICA in slack mode. 5706 5707For the DerefOf operator, a fatal error now results if an attempt is made 5708to dereference a reference (created by the Index operator) to a NULL 5709package element. Provides compatibility with other ACPI implementations, 5710and this behavior will be added to a future version of the ACPI 5711specification. 5712 5713The ACPI Power Management Timer (defined in the FADT) is now optional. 5714This provides compatibility with other ACPI implementations and will 5715appear in the next version of the ACPI specification. If there is no PM 5716Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5717zero in the FADT indicates no PM timer. 5718 5719Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5720allows the host to globally enable/disable all vendor strings, all 5721feature strings, or both. Intended to be primarily used for debugging 5722purposes only. Lv Zheng. 5723 5724Expose the collected _OSI data to the host via a global variable. This 5725data tracks the highest level vendor ID that has been invoked by the BIOS 5726so that the host (and potentially ACPICA itself) can change behaviors 5727based upon the age of the BIOS. 5728 5729Example Code and Data Size: These are the sizes for the OS-independent 5730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5731debug version of the code includes the debug output trace mechanism and 5732has a much larger code and data size. 5733 5734 Current Release: 5735 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5736 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5737 Previous Release: 5738 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5739 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5740 5741 57422) iASL Compiler/Disassembler and Tools: 5743 5744iASL: Created the following enhancements for the -so option (create 5745offset table): 57461)Add offsets for the last nameseg in each namepath for every supported 5747object type 57482)Add support for Processor, Device, Thermal Zone, and Scope objects 57493)Add the actual AML opcode for the parent object of every supported 5750object type 57514)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5752 5753Disassembler: Emit all unresolved external symbols in a single block. 5754These are external references to control methods that could not be 5755resolved, and thus, the disassembler had to make a guess at the number of 5756arguments to parse. 5757 5758iASL: The argument to the -T option (create table template) is now 5759optional. If not specified, the default table is a DSDT, typically the 5760most common case. 5761 5762---------------------------------------- 576326 June 2013. Summary of changes for version 20130626: 5764 57651) ACPICA kernel-resident subsystem: 5766 5767Fixed an issue with runtime repair of the _CST object. Null or invalid 5768elements were not always removed properly. Lv Zheng. 5769 5770Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5771FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5772the maximum number of GPEs is 1016. Use of multiple GPE block devices 5773makes the system-wide number of GPEs essentially unlimited. 5774 5775Example Code and Data Size: These are the sizes for the OS-independent 5776acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5777debug version of the code includes the debug output trace mechanism and 5778has a much larger code and data size. 5779 5780 Current Release: 5781 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5782 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5783 Previous Release: 5784 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5785 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5786 5787 57882) iASL Compiler/Disassembler and Tools: 5789 5790Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5791hosts. Now supports Linux, FreeBSD, and Windows. 5792 5793Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5794Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5795 5796iASL/Preprocessor: Implemented full support for nested 5797#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5798 5799Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5800max. The original purpose of this constraint was to limit the amount of 5801debug output. However, the string function in question (UtPrintString) is 5802now used for the disassembler also, where 256 bytes is insufficient. 5803Reported by RehabMan@GitHub. 5804 5805iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5806tables. ACPICA BZ 999. Lv Zheng. 5807 5808iASL: Fixed a couple of error exit issues that could result in a "Could 5809not delete <file>" message during ASL compilation. 5810 5811AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5812the actual signatures for these tables are "FACP" and "APIC", 5813respectively. 5814 5815AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5816tables are allowed to have multiple instances. 5817 5818---------------------------------------- 581917 May 2013. Summary of changes for version 20130517: 5820 58211) ACPICA kernel-resident subsystem: 5822 5823Fixed a regression introduced in version 20130328 for _INI methods. This 5824change fixes a problem introduced in 20130328 where _INI methods are no 5825longer executed properly because of a memory block that was not 5826initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5827<tomasz.nowicki@linaro.org>. 5828 5829Fixed a possible problem with the new extended sleep registers in the 5830ACPI 58315.0 FADT. Do not use these registers (even if populated) unless the HW- 5832reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 58331020. Lv Zheng. 5834 5835Implemented return value repair code for _CST predefined objects: Sort 5836the 5837list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5838 5839Implemented a debug-only option to disable loading of SSDTs from the 5840RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5841ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5842acglobal.h - ACPICA BZ 1005. Lv Zheng. 5843 5844Fixed some issues in the ACPICA initialization and termination code: 5845Tomasz Nowicki <tomasz.nowicki@linaro.org> 58461) Clear events initialized flag upon event component termination. ACPICA 5847BZ 1013. 58482) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 58493) Delete global lock pending lock during termination. ACPICA BZ 1012. 58504) Clear debug buffer global on termination to prevent possible multiple 5851delete. ACPICA BZ 1010. 5852 5853Standardized all switch() blocks across the entire source base. After 5854many 5855years, different formatting for switch() had crept in. This change makes 5856the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5857 5858Split some files to enhance ACPICA modularity and configurability: 58591) Split buffer dump routines into utilities/utbuffer.c 58602) Split internal error message routines into utilities/uterror.c 58613) Split table print utilities into tables/tbprint.c 58624) Split iASL command-line option processing into asloptions.c 5863 5864Makefile enhancements: 58651) Support for all new files above. 58662) Abort make on errors from any subcomponent. Chao Guan. 58673) Add build support for Apple Mac OS X. Liang Qi. 5868 5869Example Code and Data Size: These are the sizes for the OS-independent 5870acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5871debug version of the code includes the debug output trace mechanism and 5872has a much larger code and data size. 5873 5874 Current Release: 5875 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5876 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5877 Previous Release: 5878 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5879 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5880 5881 58822) iASL Compiler/Disassembler and Tools: 5883 5884New utility: Implemented an easily portable version of the acpidump 5885utility to extract ACPI tables from the system (or a file) in an ASCII 5886hex 5887dump format. The top-level code implements the various command line 5888options, file I/O, and table dump routines. To port to a new host, only 5889three functions need to be implemented to get tables -- since this 5890functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5891the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 58921) The Windows version obtains the ACPI tables from the Registry. 58932) The Linux version is under development. 58943) Other hosts - If an OS-dependent module is submitted, it will be 5895distributed with ACPICA. 5896 5897iASL: Fixed a regression for -D preprocessor option (define symbol). A 5898restructuring/change to the initialization sequence caused this option to 5899no longer work properly. 5900 5901iASL: Implemented a mechanism to disable specific warnings and remarks. 5902Adds a new command line option, "-vw <messageid> as well as "#pragma 5903disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5904 5905iASL: Fix for too-strict package object validation. The package object 5906validation for return values from the predefined names is a bit too 5907strict, it does not allow names references within the package (which will 5908be resolved at runtime.) These types of references cannot be validated at 5909compile time. This change ignores named references within package objects 5910for names that return or define static packages. 5911 5912Debugger: Fixed the 80-character command line limitation for the History 5913command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5914 5915iASL: Added control method and package support for the -so option 5916(generates AML offset table for BIOS support.) 5917 5918iASL: issue a remark if a non-serialized method creates named objects. If 5919a thread blocks within the method for any reason, and another thread 5920enters the method, the method will fail because an attempt will be made 5921to 5922create the same (named) object twice. In this case, issue a remark that 5923the method should be marked serialized. NOTE: may become a warning later. 5924ACPICA BZ 909. 5925 5926---------------------------------------- 592718 April 2013. Summary of changes for version 20130418: 5928 59291) ACPICA kernel-resident subsystem: 5930 5931Fixed a possible buffer overrun during some rare but specific field unit 5932read operations. This overrun can only happen if the DSDT version is 1 -- 5933meaning that all AML integers are 32 bits -- and the field length is 5934between 33 and 55 bits long. During the read, an internal buffer object 5935is 5936created for the field unit because the field is larger than an integer 5937(32 5938bits). However, in this case, the buffer will be incorrectly written 5939beyond the end because the buffer length is less than the internal 5940minimum 5941of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5942long, but a full 8 bytes will be written. 5943 5944Updated the Embedded Controller "orphan" _REG method support. This refers 5945to _REG methods under the EC device that have no corresponding operation 5946region. This is allowed by the ACPI specification. This update removes a 5947dependency on the existence an ECDT table. It will execute an orphan _REG 5948method as long as the operation region handler for the EC is installed at 5949the EC device node and not the namespace root. Rui Zhang (original 5950update), Bob Moore (update/integrate). 5951 5952Implemented run-time argument typechecking for all predefined ACPI names 5953(_STA, _BIF, etc.) This change performs object typechecking on all 5954incoming arguments for all predefined names executed via 5955AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5956passing correct object types as well as the correct number of arguments 5957(therefore identifying any issues immediately). Also, the ASL/namespace 5958definition of the predefined name is checked against the ACPI 5959specification for the proper argument count. Adds one new file, 5960nsarguments.c 5961 5962Changed an exception code for the ASL UnLoad() operator. Changed the 5963exception code for the case where the input DdbHandle is invalid, from 5964AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5965 5966Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5967global makefile. The use of this flag causes compiler errors on earlier 5968versions of GCC, so it has been removed for compatibility. 5969 5970Miscellaneous cleanup: 59711) Removed some unused/obsolete macros 59722) Fixed a possible memory leak in the _OSI support 59733) Removed an unused variable in the predefined name support 59744) Windows OSL: remove obsolete reference to a memory list field 5975 5976Example Code and Data Size: These are the sizes for the OS-independent 5977acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5978debug version of the code includes the debug output trace mechanism and 5979has a much larger code and data size. 5980 5981 Current Release: 5982 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5983 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5984 Previous Release: 5985 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5986 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5987 5988 59892) iASL Compiler/Disassembler and Tools: 5990 5991AcpiExec: Added installation of a handler for the SystemCMOS address 5992space. This prevents control method abort if a method accesses this 5993space. 5994 5995AcpiExec: Added support for multiple EC devices, and now install EC 5996operation region handler(s) at the actual EC device instead of the 5997namespace root. This reflects the typical behavior of host operating 5998systems. 5999 6000AcpiExec: Updated to ensure that all operation region handlers are 6001installed before the _REG methods are executed. This prevents a _REG 6002method from aborting if it accesses an address space has no handler. 6003AcpiExec installs a handler for every possible address space. 6004 6005Debugger: Enhanced the "handlers" command to display non-root handlers. 6006This change enhances the handlers command to display handlers associated 6007with individual devices throughout the namespace, in addition to the 6008currently supported display of handlers associated with the root 6009namespace 6010node. 6011 6012ASL Test Suite: Several test suite errors have been identified and 6013resolved, reducing the total error count during execution. Chao Guan. 6014 6015---------------------------------------- 601628 March 2013. Summary of changes for version 20130328: 6017 60181) ACPICA kernel-resident subsystem: 6019 6020Fixed several possible race conditions with the internal object reference 6021counting mechanism. Some of the external ACPICA interfaces update object 6022reference counts without holding the interpreter or namespace lock. This 6023change adds a spinlock to protect reference count updates on the internal 6024ACPICA objects. Reported by and with assistance from Andriy Gapon 6025(avg@FreeBSD.org). 6026 6027FADT support: Removed an extraneous warning for very large GPE register 6028sets. This change removes a size mismatch warning if the legacy length 6029field for a GPE register set is larger than the 64-bit GAS structure can 6030accommodate. GPE register sets can be larger than the 255-bit width 6031limitation of the GAS structure. Linn Crosetto (linn@hp.com). 6032 6033_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 6034return from this interface. Handles a possible timeout case if 6035ACPI_WAIT_FOREVER is modified by the host to be a value less than 6036"forever". Jung-uk Kim. 6037 6038Predefined name support: Add allowed/required argument type information 6039to 6040the master predefined info table. This change adds the infrastructure to 6041enable typechecking on incoming arguments for all predefined 6042methods/objects. It does not actually contain the code that will fully 6043utilize this information, this is still under development. Also condenses 6044some duplicate code for the predefined names into a new module, 6045utilities/utpredef.c 6046 6047Example Code and Data Size: These are the sizes for the OS-independent 6048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6049debug version of the code includes the debug output trace mechanism and 6050has a much larger code and data size. 6051 6052 Previous Release: 6053 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 6054 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 6055 Current Release: 6056 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 6057 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 6058 6059 60602) iASL Compiler/Disassembler and Tools: 6061 6062iASL: Implemented a new option to simplify the development of ACPI- 6063related 6064BIOS code. Adds support for a new "offset table" output file. The -so 6065option will create a C table containing the AML table offsets of various 6066named objects in the namespace so that BIOS code can modify them easily 6067at 6068boot time. This can simplify BIOS runtime code by eliminating expensive 6069searches for "magic values", enhancing boot times and adding greater 6070reliability. With assistance from Lee Hamel. 6071 6072iASL: Allow additional predefined names to return zero-length packages. 6073Now, all predefined names that are defined by the ACPI specification to 6074return a "variable-length package of packages" are allowed to return a 6075zero length top-level package. This allows the BIOS to tell the host that 6076the requested feature is not supported, and supports existing BIOS/ASL 6077code and practices. 6078 6079iASL: Changed the "result not used" warning to an error. This is the case 6080where an ASL operator is effectively a NOOP because the result of the 6081operation is not stored anywhere. For example: 6082 Add (4, Local0) 6083There is no target (missing 3rd argument), nor is the function return 6084value used. This is potentially a very serious problem -- since the code 6085was probably intended to do something, but for whatever reason, the value 6086was not stored. Therefore, this issue has been upgraded from a warning to 6087an error. 6088 6089AcpiHelp: Added allowable/required argument types to the predefined names 6090info display. This feature utilizes the recent update to the predefined 6091names table (above). 6092 6093---------------------------------------- 609414 February 2013. Summary of changes for version 20130214: 6095 60961) ACPICA Kernel-resident Subsystem: 6097 6098Fixed a possible regression on some hosts: Reinstated the safe return 6099macros (return_ACPI_STATUS, etc.) that ensure that the argument is 6100evaluated only once. Although these macros are not needed for the ACPICA 6101code itself, they are often used by ACPI-related host device drivers 6102where 6103the safe feature may be necessary. 6104 6105Fixed several issues related to the ACPI 5.0 reduced hardware support 6106(SOC): Now ensure that if the platform declares itself as hardware- 6107reduced 6108via the FADT, the following functions become NOOPs (and always return 6109AE_OK) because ACPI is always enabled by definition on these machines: 6110 AcpiEnable 6111 AcpiDisable 6112 AcpiHwGetMode 6113 AcpiHwSetMode 6114 6115Dynamic Object Repair: Implemented additional runtime repairs for 6116predefined name return values. Both of these repairs can simplify code in 6117the related device drivers that invoke these methods: 61181) For the _STR and _MLS names, automatically repair/convert an ASCII 6119string to a Unicode buffer. 61202) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 6121a 6122lone end tag descriptor in the following cases: A Return(0) was executed, 6123a null buffer was returned, or no object at all was returned (non-slack 6124mode only). Adds a new file, nsconvert.c 6125ACPICA BZ 998. Bob Moore, Lv Zheng. 6126 6127Resource Manager: Added additional code to prevent possible infinite 6128loops 6129while traversing corrupted or ill-formed resource template buffers. Check 6130for zero-length resource descriptors in all code that loops through 6131resource templates (the length field is used to index through the 6132template). This change also hardens the external AcpiWalkResources and 6133AcpiWalkResourceBuffer interfaces. 6134 6135Local Cache Manager: Enhanced the main data structure to eliminate an 6136unnecessary mechanism to access the next object in the list. Actually 6137provides a small performance enhancement for hosts that use the local 6138ACPICA cache manager. Jung-uk Kim. 6139 6140Example Code and Data Size: These are the sizes for the OS-independent 6141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6142debug version of the code includes the debug output trace mechanism and 6143has a much larger code and data size. 6144 6145 Previous Release: 6146 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6147 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6148 Current Release: 6149 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 6150 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 6151 6152 61532) iASL Compiler/Disassembler and Tools: 6154 6155iASL/Disassembler: Fixed several issues with the definition of the ACPI 61565.0 RASF table (RAS Feature Table). This change incorporates late changes 6157that were made to the ACPI 5.0 specification. 6158 6159iASL/Disassembler: Added full support for the following new ACPI tables: 6160 1) The MTMR table (MID Timer Table) 6161 2) The VRTC table (Virtual Real Time Clock Table). 6162Includes header file, disassembler, table compiler, and template support 6163for both tables. 6164 6165iASL: Implemented compile-time validation of package objects returned by 6166predefined names. This new feature validates static package objects 6167returned by the various predefined names defined to return packages. Both 6168object types and package lengths are validated, for both parent packages 6169and sub-packages, if any. The code is similar in structure and behavior 6170to 6171the runtime repair mechanism within the AML interpreter and uses the 6172existing predefined name information table. Adds a new file, aslprepkg.c. 6173ACPICA BZ 938. 6174 6175iASL: Implemented auto-detection of binary ACPI tables for disassembly. 6176This feature detects a binary file with a valid ACPI table header and 6177invokes the disassembler automatically. Eliminates the need to 6178specifically invoke the disassembler with the -d option. ACPICA BZ 862. 6179 6180iASL/Disassembler: Added several warnings for the case where there are 6181unresolved control methods during the disassembly. This can potentially 6182cause errors when the output file is compiled, because the disassembler 6183assumes zero method arguments in these cases (it cannot determine the 6184actual number of arguments without resolution/definition of the method). 6185 6186Debugger: Added support to display all resources with a single command. 6187Invocation of the resources command with no arguments will now display 6188all 6189resources within the current namespace. 6190 6191AcpiHelp: Added descriptive text for each ACPICA exception code displayed 6192via the -e option. 6193 6194---------------------------------------- 619517 January 2013. Summary of changes for version 20130117: 6196 61971) ACPICA Kernel-resident Subsystem: 6198 6199Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 6200return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 6201objects to return a package containing one integer, most BIOS code 6202returns 6203two integers and the previous code reflects that. However, we also need 6204to 6205support BIOS code that actually implements to the ACPI spec, and this 6206change reflects this. 6207 6208Fixed two issues with the ACPI_DEBUG_PRINT macros: 62091) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 6210C compilers that require this support. 62112) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 6212ACPI_DEBUG is already used by many of the various hosts. 6213 6214Updated all ACPICA copyrights and signons to 2013. Added the 2013 6215copyright to all module headers and signons, including the standard Linux 6216header. This affects virtually every file in the ACPICA core subsystem, 6217iASL compiler, all ACPICA utilities, and the test suites. 6218 6219Example Code and Data Size: These are the sizes for the OS-independent 6220acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6221debug version of the code includes the debug output trace mechanism and 6222has a much larger code and data size. 6223 6224 Previous Release: 6225 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6226 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6227 Current Release: 6228 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6229 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6230 6231 62322) iASL Compiler/Disassembler and Tools: 6233 6234Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 6235prevent a possible fault on some hosts. Some C libraries modify the arg 6236pointer parameter to vfprintf making it difficult to call it twice in the 6237AcpiOsVprintf function. Use a local buffer to workaround this issue. This 6238does not affect the Windows OSL since the Win C library does not modify 6239the arg pointer. Chao Guan, Bob Moore. 6240 6241iASL: Fixed a possible infinite loop when the maximum error count is 6242reached. If an output file other than the .AML file is specified (such as 6243a listing file), and the maximum number of errors is reached, do not 6244attempt to flush data to the output file(s) as the compiler is aborting. 6245This can cause an infinite loop as the max error count code essentially 6246keeps calling itself. 6247 6248iASL/Disassembler: Added an option (-in) to ignore NOOP 6249opcodes/operators. 6250Implemented for both the compiler and the disassembler. Often, the NOOP 6251opcode is used as padding for packages that are changed dynamically by 6252the 6253BIOS. When disassembled and recompiled, these NOOPs will cause syntax 6254errors. This option causes the disassembler to ignore all NOOP opcodes 6255(0xA3), and it also causes the compiler to ignore all ASL source code 6256NOOP 6257statements as well. 6258 6259Debugger: Enhanced the Sleep command to execute all sleep states. This 6260change allows Sleep to be invoked with no arguments and causes the 6261debugger to execute all of the sleep states, 0-5, automatically. 6262 6263---------------------------------------- 626420 December 2012. Summary of changes for version 20121220: 6265 62661) ACPICA Kernel-resident Subsystem: 6267 6268Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 6269alternate entry point for AcpiWalkResources and improves the usability of 6270the resource manager by accepting as input a buffer containing the output 6271of either a _CRS, _PRS, or _AEI method. The key functionality is that the 6272input buffer is not deleted by this interface so that it can be used by 6273the host later. See the ACPICA reference for details. 6274 6275Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 6276(DSDT version < 2). The constant will be truncated and this warning 6277reflects that behavior. 6278 6279Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 6280ExtendedInterrupt, and GpioInt descriptors. This change adds support to 6281both get and set the new wake bit in these descriptors, separately from 6282the existing share bit. Reported by Aaron Lu. 6283 6284Interpreter: Fix Store() when an implicit conversion is not possible. For 6285example, in the cases such as a store of a string to an existing package 6286object, implement the store as a CopyObject(). This is a small departure 6287from the ACPI specification which states that the control method should 6288be 6289aborted in this case. However, the ASLTS suite depends on this behavior. 6290 6291Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 6292macros: check if debug output is currently enabled as soon as possible to 6293minimize performance impact if debug is in fact not enabled. 6294 6295Source code restructuring: Cleanup to improve modularity. The following 6296new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 6297psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 6298Associated makefiles and project files have been updated. 6299 6300Changed an exception code for LoadTable operator. For the case where one 6301of the input strings is too long, change the returned exception code from 6302AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 6303 6304Fixed a possible memory leak in dispatcher error path. On error, delete 6305the mutex object created during method mutex creation. Reported by 6306tim.gardner@canonical.com. 6307 6308Example Code and Data Size: These are the sizes for the OS-independent 6309acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6310debug version of the code includes the debug output trace mechanism and 6311has a much larger code and data size. 6312 6313 Previous Release: 6314 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6315 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6316 Current Release: 6317 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6318 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6319 6320 63212) iASL Compiler/Disassembler and Tools: 6322 6323iASL: Disallow a method call as argument to the ObjectType ASL operator. 6324This change tracks an errata to the ACPI 5.0 document. The AML grammar 6325will not allow the interpreter to differentiate between a method and a 6326method invocation when these are used as an argument to the ObjectType 6327operator. The ACPI specification change is to disallow a method 6328invocation 6329(UserTerm) for the ObjectType operator. 6330 6331Finish support for the TPM2 and CSRT tables in the headers, table 6332compiler, and disassembler. 6333 6334Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 6335always expires immediately if the semaphore is not available. The 6336original 6337code was using a relative-time timeout, but sem_timedwait requires the 6338use 6339of an absolute time. 6340 6341iASL: Added a remark if the Timer() operator is used within a 32-bit 6342table. This operator returns a 64-bit time value that will be truncated 6343within a 32-bit table. 6344 6345iASL Source code restructuring: Cleanup to improve modularity. The 6346following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 6347aslmethod.c, and aslfileio.c. Associated makefiles and project files have 6348been updated. 6349 6350 6351---------------------------------------- 635214 November 2012. Summary of changes for version 20121114: 6353 63541) ACPICA Kernel-resident Subsystem: 6355 6356Implemented a performance enhancement for ACPI/AML Package objects. This 6357change greatly increases the performance of Package objects within the 6358interpreter. It changes the processing of reference counts for packages 6359by 6360optimizing for the most common case where the package sub-objects are 6361either Integers, Strings, or Buffers. Increases the overall performance 6362of 6363the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 63642X.) 6365Chao Guan. ACPICA BZ 943. 6366 6367Implemented and deployed common macros to extract flag bits from resource 6368descriptors. Improves readability and maintainability of the code. Fixes 6369a 6370problem with the UART serial bus descriptor for the number of data bits 6371flags (was incorrectly 2 bits, should be 3). 6372 6373Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 6374of the macros and changed the SETx macros to the style of (destination, 6375source). Also added ACPI_CASTx companion macros. Lv Zheng. 6376 6377Example Code and Data Size: These are the sizes for the OS-independent 6378acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6379debug version of the code includes the debug output trace mechanism and 6380has a much larger code and data size. 6381 6382 Previous Release: 6383 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6384 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6385 Current Release: 6386 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6387 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6388 6389 63902) iASL Compiler/Disassembler and Tools: 6391 6392Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 6393adds the ShareAndWake and ExclusiveAndWake flags which were added to the 6394Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 6395 6396Disassembler: Fixed a problem with external declaration generation. Fixes 6397a problem where an incorrect pathname could be generated for an external 6398declaration if the original reference to the object includes leading 6399carats (^). ACPICA BZ 984. 6400 6401Debugger: Completed a major update for the Disassemble<method> command. 6402This command was out-of-date and did not properly disassemble control 6403methods that had any reasonable complexity. This fix brings the command 6404up 6405to the same level as the rest of the disassembler. Adds one new file, 6406dmdeferred.c, which is existing code that is now common with the main 6407disassembler and the debugger disassemble command. ACPICA MZ 978. 6408 6409iASL: Moved the parser entry prototype to avoid a duplicate declaration. 6410Newer versions of Bison emit this prototype, so moved the prototype out 6411of 6412the iASL header to where it is actually used in order to avoid a 6413duplicate 6414declaration. 6415 6416iASL/Tools: Standardized use of the stream I/O functions: 6417 1) Ensure check for I/O error after every fopen/fread/fwrite 6418 2) Ensure proper order of size/count arguments for fread/fwrite 6419 3) Use test of (Actual != Requested) after all fwrite, and most fread 6420 4) Standardize I/O error messages 6421Improves reliability and maintainability of the code. Bob Moore, Lv 6422Zheng. 6423ACPICA BZ 981. 6424 6425Disassembler: Prevent duplicate External() statements. During generation 6426of external statements, detect similar pathnames that are actually 6427duplicates such as these: 6428 External (\ABCD) 6429 External (ABCD) 6430Remove all leading '\' characters from pathnames during the external 6431statement generation so that duplicates will be detected and tossed. 6432ACPICA BZ 985. 6433 6434Tools: Replace low-level I/O with stream I/O functions. Replace 6435open/read/write/close with the stream I/O equivalents 6436fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 6437Moore. 6438 6439AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 6440name header so that AcpiXtract recognizes the output file/table. 6441 6442iASL: Remove obsolete -2 option flag. Originally intended to force the 6443compiler/disassembler into an ACPI 2.0 mode, this was never implemented 6444and the entire concept is now obsolete. 6445 6446---------------------------------------- 644718 October 2012. Summary of changes for version 20121018: 6448 6449 64501) ACPICA Kernel-resident Subsystem: 6451 6452Updated support for the ACPI 5.0 MPST table. Fixes some problems 6453introduced by late changes to the table as it was added to the ACPI 5.0 6454specification. Includes header, disassembler, and data table compiler 6455support as well as a new version of the MPST template. 6456 6457AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 64585.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 6459methods: _HID, _CID, and _UID. 6460 6461Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 6462ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 6463name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 6464names for their various drivers. Affects the AcpiGetObjectInfo external 6465interface, and other internal interfaces as well. 6466 6467Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 6468This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 6469on machines that support non-aligned transfers. Optimizes for this case 6470rather than using a strncpy. With assistance from Zheng Lv. 6471 6472Resource Manager: Small fix for buffer size calculation. Fixed a one byte 6473error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 6474 6475Added a new debug print message for AML mutex objects that are force- 6476released. At control method termination, any currently acquired mutex 6477objects are force-released. Adds a new debug-only message for each one 6478that is released. 6479 6480Audited/updated all ACPICA return macros and the function debug depth 6481counter: 1) Ensure that all functions that use the various TRACE macros 6482also use the appropriate ACPICA return macros. 2) Ensure that all normal 6483return statements surround the return expression (value) with parens to 6484ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 6485Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 6486 6487Global source code changes/maintenance: All extra lines at the start and 6488end of each source file have been removed for consistency. Also, within 6489comments, all new sentences start with a single space instead of a double 6490space, again for consistency across the code base. 6491 6492Example Code and Data Size: These are the sizes for the OS-independent 6493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6494debug version of the code includes the debug output trace mechanism and 6495has a much larger code and data size. 6496 6497 Previous Release: 6498 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6499 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6500 Current Release: 6501 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6502 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6503 6504 65052) iASL Compiler/Disassembler and Tools: 6506 6507AcpiExec: Improved the algorithm used for memory leak/corruption 6508detection. Added some intelligence to the code that maintains the global 6509list of allocated memory. The list is now ordered by allocated memory 6510address, significantly improving performance. When running AcpiExec on 6511the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 6512on the platform and/or the environment. Note, this performance 6513enhancement affects the AcpiExec utility only, not the kernel-resident 6514ACPICA code. 6515 6516Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 6517the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 6518incorrect table offset reported for invalid opcodes. Report the original 651932-bit value for bad ACPI_NAMEs (as well as the repaired name.) 6520 6521Disassembler: Enhanced the -vt option to emit the binary table data in 6522hex format to assist with debugging. 6523 6524Fixed a potential filename buffer overflow in osunixdir.c. Increased the 6525size of file structure. Colin Ian King. 6526 6527---------------------------------------- 652813 September 2012. Summary of changes for version 20120913: 6529 6530 65311) ACPICA Kernel-resident Subsystem: 6532 6533ACPI 5.0: Added two new notify types for the Hardware Error Notification 6534Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 6535and 6536MCE(6). 6537 6538Table Manager: Merged/removed duplicate code in the root table resize 6539functions. One function is external, the other is internal. Lv Zheng, 6540ACPICA 6541BZ 846. 6542 6543Makefiles: Completely removed the obsolete "Linux" makefiles under 6544acpica/generate/linux. These makefiles are obsolete and have been 6545replaced 6546by 6547the generic unix makefiles under acpica/generate/unix. 6548 6549Makefiles: Ensure that binary files always copied properly. Minor rule 6550change 6551to ensure that the final binary output files are always copied up to the 6552appropriate binary directory (bin32 or bin64.) 6553 6554Example Code and Data Size: These are the sizes for the OS-independent 6555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6556debug 6557version of the code includes the debug output trace mechanism and has a 6558much 6559larger code and data size. 6560 6561 Previous Release: 6562 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6563 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6564 Current Release: 6565 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6566 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6567 6568 65692) iASL Compiler/Disassembler and Tools: 6570 6571Disassembler: Fixed a possible fault during the disassembly of resource 6572descriptors when a second parse is required because of the invocation of 6573external control methods within the table. With assistance from 6574adq@lidskialf.net. ACPICA BZ 976. 6575 6576iASL: Fixed a namepath optimization problem. An error can occur if the 6577parse 6578node that contains the namepath to be optimized does not have a parent 6579node 6580that is a named object. This change fixes the problem. 6581 6582iASL: Fixed a regression where the AML file is not deleted on errors. The 6583AML 6584output file should be deleted if there are any errors during the 6585compiler. 6586The 6587only exception is if the -f (force output) option is used. ACPICA BZ 974. 6588 6589iASL: Added a feature to automatically increase internal line buffer 6590sizes. 6591Via realloc(), automatically increase the internal line buffer sizes as 6592necessary to support very long source code lines. The current version of 6593the 6594preprocessor requires a buffer long enough to contain full source code 6595lines. 6596This change increases the line buffer(s) if the input lines go beyond the 6597current buffer size. This eliminates errors that occurred when a source 6598code 6599line was longer than the buffer. 6600 6601iASL: Fixed a problem with constant folding in method declarations. The 6602SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6603if a 6604Type3 opcode was used. 6605 6606Debugger: Improved command help support. For incorrect argument count, 6607display 6608full help for the command. For help command itself, allow an argument to 6609specify a command. 6610 6611Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6612errors during execution of the suite. Guan Chao. 6613 6614---------------------------------------- 661516 August 2012. Summary of changes for version 20120816: 6616 6617 66181) ACPICA Kernel-resident Subsystem: 6619 6620Removed all use of the deprecated _GTS and _BFS predefined methods. The 6621_GTS 6622(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6623deprecated and will probably be removed from the ACPI specification. 6624Windows 6625does not invoke them, and reportedly never will. The final nail in the 6626coffin 6627is that the ACPI specification states that these methods must be run with 6628interrupts off, which is not going to happen in a kernel interpreter. 6629Note: 6630Linux has removed all use of the methods also. It was discovered that 6631invoking these functions caused failures on some machines, probably 6632because 6633they were never tested since Windows does not call them. Affects two 6634external 6635interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6636ACPICA BZ 969. 6637 6638Implemented support for complex bit-packed buffers returned from the _PLD 6639(Physical Location of Device) predefined method. Adds a new external 6640interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6641C 6642structure. Note: C Bitfields cannot be used for this type of predefined 6643structure since the memory layout of individual bitfields is not defined 6644by 6645the C language. In addition, there are endian concerns where a compiler 6646will 6647change the bitfield ordering based on the machine type. The new ACPICA 6648interface eliminates these issues, and should be called after _PLD is 6649executed. ACPICA BZ 954. 6650 6651Implemented a change to allow a scope change to root (via "Scope (\)") 6652during 6653execution of module-level ASL code (code that is executed at table load 6654time.) Lin Ming. 6655 6656Added the Windows8/Server2012 string for the _OSI method. This change 6657adds 6658a 6659new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 66602012. 6661 6662Added header support for the new ACPI tables DBG2 (Debug Port Table Type 66632) 6664and CSRT (Core System Resource Table). 6665 6666Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6667names. This simplifies access to the buffers returned by these predefined 6668names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6669 6670GPE support: Removed an extraneous parameter from the various low-level 6671internal GPE functions. Tang Feng. 6672 6673Removed the linux makefiles from the unix packages. The generate/linux 6674makefiles are obsolete and have been removed from the unix tarball 6675release 6676packages. The replacement makefiles are under generate/unix, and there is 6677a 6678top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6679 6680Updates for Unix makefiles: 66811) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 66822) Update linker flags (move to end of command line) for AcpiExec 6683utility. 6684Guan Chao. 6685 6686Split ACPICA initialization functions to new file, utxfinit.c. Split from 6687utxface.c to improve modularity and reduce file size. 6688 6689Example Code and Data Size: These are the sizes for the OS-independent 6690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6691debug version of the code includes the debug output trace mechanism and 6692has a 6693much larger code and data size. 6694 6695 Previous Release: 6696 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6697 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6698 Current Release: 6699 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6700 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6701 6702 67032) iASL Compiler/Disassembler and Tools: 6704 6705iASL: Fixed a problem with constant folding for fixed-length constant 6706expressions. The constant-folding code was not being invoked for constant 6707expressions that allow the use of type 3/4/5 opcodes to generate 6708constants 6709for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6710result 6711in the generation of invalid AML bytecode. ACPICA BZ 970. 6712 6713iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6714apparently automatically emit some of the necessary externals. This 6715change 6716handles these versions in order to eliminate generation warnings. 6717 6718Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6719 6720Disassembler: Add support to decode _PLD buffers. The decoded buffer 6721appears 6722within comments in the output file. 6723 6724Debugger: Fixed a regression with the "Threads" command where 6725AE_BAD_PARAMETER was always returned. 6726 6727---------------------------------------- 672811 July 2012. Summary of changes for version 20120711: 6729 67301) ACPICA Kernel-resident Subsystem: 6731 6732Fixed a possible fault in the return package object repair code. Fixes a 6733problem that can occur when a lone package object is wrapped with an 6734outer 6735package object in order to force conformance to the ACPI specification. 6736Can 6737affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6738_DLM, 6739_CSD, _PSD, _TSD. 6740 6741Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6742PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6743ARB_DIS bit must be implemented in the host-dependent C3 processor power 6744state 6745support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6746both 6747Intel and other vendors. (for Intel: ICH4-M and earlier) 6748 6749This change removes the code to disable/enable bus master arbitration 6750during 6751suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6752causes 6753resume problems on some machines. The change has been in use for over 6754seven 6755years within Linux. 6756 6757Implemented two new external interfaces to support host-directed dynamic 6758ACPI 6759table load and unload. They are intended to simplify the host 6760implementation 6761of hot-plug support: 6762 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6763 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6764table. 6765See the ACPICA reference for additional details. Adds one new file, 6766components/tables/tbxfload.c 6767 6768Implemented and deployed two new interfaces for errors and warnings that 6769are 6770known to be caused by BIOS/firmware issues: 6771 AcpiBiosError: Prints "ACPI Firmware Error" message. 6772 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6773Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6774table 6775and FADT errors. Additional deployment to be completed as appropriate in 6776the 6777future. The associated conditional macros are ACPI_BIOS_ERROR and 6778ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6779ACPICA 6780BZ 6781843. 6782 6783Implicit notify support: ensure that no memory allocation occurs within a 6784critical region. This fix moves a memory allocation outside of the time 6785that a 6786spinlock is held. Fixes issues on systems that do not allow this 6787behavior. 6788Jung-uk Kim. 6789 6790Split exception code utilities and tables into a new file, 6791utilities/utexcep.c 6792 6793Example Code and Data Size: These are the sizes for the OS-independent 6794acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6795debug 6796version of the code includes the debug output trace mechanism and has a 6797much 6798larger code and data size. 6799 6800 Previous Release: 6801 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6802 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6803 Current Release: 6804 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6805 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6806 6807 68082) iASL Compiler/Disassembler and Tools: 6809 6810iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6811of 68120. Jung-uk Kim. 6813 6814Debugger: Enhanced the "tables" command to emit additional information 6815about 6816the current set of ACPI tables, including the owner ID and flags decode. 6817 6818Debugger: Reimplemented the "unload" command to use the new 6819AcpiUnloadParentTable external interface. This command was disable 6820previously 6821due to need for an unload interface. 6822 6823AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6824option 6825will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6826 6827---------------------------------------- 682820 June 2012. Summary of changes for version 20120620: 6829 6830 68311) ACPICA Kernel-resident Subsystem: 6832 6833Implemented support to expand the "implicit notify" feature to allow 6834multiple 6835devices to be notified by a single GPE. This feature automatically 6836generates a 6837runtime device notification in the absence of a BIOS-provided GPE control 6838method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6839notify is 6840provided by ACPICA for Windows compatibility, and is a workaround for 6841BIOS 6842AML 6843code errors. See the description of the AcpiSetupGpeForWake interface in 6844the 6845APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6846 6847Changed some comments and internal function names to simplify and ensure 6848correctness of the Linux code translation. No functional changes. 6849 6850Example Code and Data Size: These are the sizes for the OS-independent 6851acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6852debug 6853version of the code includes the debug output trace mechanism and has a 6854much 6855larger code and data size. 6856 6857 Previous Release: 6858 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6859 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6860 Current Release: 6861 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6862 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6863 6864 68652) iASL Compiler/Disassembler and Tools: 6866 6867Disassembler: Added support to emit short, commented descriptions for the 6868ACPI 6869predefined names in order to improve the readability of the disassembled 6870output. ACPICA BZ 959. Changes include: 6871 1) Emit descriptions for all standard predefined names (_INI, _STA, 6872_PRW, 6873etc.) 6874 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6875 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6876etc.) 6877 6878AcpiSrc: Fixed several long-standing Linux code translation issues. 6879Argument 6880descriptions in function headers are now translated properly to lower 6881case 6882and 6883underscores. ACPICA BZ 961. Also fixes translation problems such as 6884these: 6885(old -> new) 6886 i_aSL -> iASL 6887 00-7_f -> 00-7F 6888 16_k -> 16K 6889 local_fADT -> local_FADT 6890 execute_oSI -> execute_OSI 6891 6892iASL: Fixed a problem where null bytes were inadvertently emitted into 6893some 6894listing files. 6895 6896iASL: Added the existing debug options to the standard help screen. There 6897are 6898no longer two different help screens. ACPICA BZ 957. 6899 6900AcpiHelp: Fixed some typos in the various predefined name descriptions. 6901Also 6902expand some of the descriptions where appropriate. 6903 6904iASL: Fixed the -ot option (display compile times/statistics). Was not 6905working 6906properly for standard output; only worked for the debug file case. 6907 6908---------------------------------------- 690918 May 2012. Summary of changes for version 20120518: 6910 6911 69121) ACPICA Core Subsystem: 6913 6914Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6915defined 6916to block until asynchronous events such as notifies and GPEs have 6917completed. 6918Within ACPICA, it is only called before a notify or GPE handler is 6919removed/uninstalled. It also may be useful for the host OS within related 6920drivers such as the Embedded Controller driver. See the ACPICA reference 6921for 6922additional information. ACPICA BZ 868. 6923 6924ACPI Tables: Added a new error message for a possible overflow failure 6925during 6926the conversion of FADT 32-bit legacy register addresses to internal 6927common 692864- 6929bit GAS structure representation. The GAS has a one-byte "bit length" 6930field, 6931thus limiting the register length to 255 bits. ACPICA BZ 953. 6932 6933Example Code and Data Size: These are the sizes for the OS-independent 6934acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6935debug 6936version of the code includes the debug output trace mechanism and has a 6937much 6938larger code and data size. 6939 6940 Previous Release: 6941 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6942 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6943 Current Release: 6944 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6945 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6946 6947 69482) iASL Compiler/Disassembler and Tools: 6949 6950iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6951macro. 6952This keyword was added late in the ACPI 5.0 release cycle and was not 6953implemented until now. 6954 6955Disassembler: Added support for Operation Region externals. Adds missing 6956support for operation regions that are defined in another table, and 6957referenced locally via a Field or BankField ASL operator. Now generates 6958the 6959correct External statement. 6960 6961Disassembler: Several additional fixes for the External() statement 6962generation 6963related to some ASL operators. Also, order the External() statements 6964alphabetically in the disassembler output. Fixes the External() 6965generation 6966for 6967the Create* field, Alias, and Scope operators: 6968 1) Create* buffer field operators - fix type mismatch warning on 6969disassembly 6970 2) Alias - implement missing External support 6971 3) Scope - fix to make sure all necessary externals are emitted. 6972 6973iASL: Improved pathname support. For include files, merge the prefix 6974pathname 6975with the file pathname and eliminate unnecessary components. Convert 6976backslashes in all pathnames to forward slashes, for readability. Include 6977file 6978pathname changes affect both #include and Include() type operators. 6979 6980iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6981end 6982of a valid line by inserting a newline and then returning the EOF during 6983the 6984next call to GetNextLine. Prevents the line from being ignored due to EOF 6985condition. 6986 6987iASL: Implemented some changes to enhance the IDE support (-vi option.) 6988Error 6989and Warning messages are now correctly recognized for both the source 6990code 6991browser and the global error and warning counts. 6992 6993---------------------------------------- 699420 April 2012. Summary of changes for version 20120420: 6995 6996 69971) ACPICA Core Subsystem: 6998 6999Implemented support for multiple notify handlers. This change adds 7000support 7001to 7002allow multiple system and device notify handlers on Device, Thermal Zone, 7003and 7004Processor objects. This can simplify the host OS notification 7005implementation. 7006Also re-worked and restructured the entire notify support code to 7007simplify 7008handler installation, handler removal, notify event queuing, and notify 7009dispatch to handler(s). Note: there can still only be two global notify 7010handlers - one for system notifies and one for device notifies. There are 7011no 7012changes to the existing handler install/remove interfaces. Lin Ming, Bob 7013Moore, Rafael Wysocki. 7014 7015Fixed a regression in the package repair code where the object reference 7016count was calculated incorrectly. Regression was introduced in the commit 7017"Support to add Package wrappers". 7018 7019Fixed a couple possible memory leaks in the AML parser, in the error 7020recovery 7021path. Jesper Juhl, Lin Ming. 7022 7023Example Code and Data Size: These are the sizes for the OS-independent 7024acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7025debug version of the code includes the debug output trace mechanism and 7026has a 7027much larger code and data size. 7028 7029 Previous Release: 7030 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7031 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7032 Current Release: 7033 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7034 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 7035 7036 70372) iASL Compiler/Disassembler and Tools: 7038 7039iASL: Fixed a problem with the resource descriptor support where the 7040length 7041of the StartDependentFn and StartDependentFnNoPrio descriptors were not 7042included in cumulative descriptor offset, resulting in incorrect values 7043for 7044resource tags within resource descriptors appearing after a 7045StartDependent* 7046descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 7047 7048iASL and Preprocessor: Implemented full support for the #line directive 7049to 7050correctly track original source file line numbers through the .i 7051preprocessor 7052output file - for error and warning messages. 7053 7054iASL: Expand the allowable byte constants for address space IDs. 7055Previously, 7056the allowable range was 0x80-0xFF (user-defined spaces), now the range is 70570x0A-0xFF to allow for custom and new IDs without changing the compiler. 7058 7059iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 7060 7061iASL: Add option to completely disable the preprocessor (-Pn). 7062 7063iASL: Now emit all error/warning messages to standard error (stderr) by 7064default (instead of the previous stdout). 7065 7066ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 7067Update 7068for resource descriptor offset fix above. Update/cleanup error output 7069routines. Enable and send iASL errors/warnings to an error logfile 7070(error.txt). Send all other iASL output to a logfile (compiler.txt). 7071Fixed 7072several extraneous "unrecognized operator" messages. 7073 7074---------------------------------------- 707520 March 2012. Summary of changes for version 20120320: 7076 7077 70781) ACPICA Core Subsystem: 7079 7080Enhanced the sleep/wake interfaces to optionally execute the _GTS method 7081(Going To Sleep) and the _BFS method (Back From Sleep). Windows 7082apparently 7083does not execute these methods, and therefore these methods are often 7084untested. It has been seen on some systems where the execution of these 7085methods causes errors and also prevents the machine from entering S5. It 7086is 7087therefore suggested that host operating systems do not execute these 7088methods 7089by default. In the future, perhaps these methods can be optionally 7090executed 7091based on the age of the system and/or what is the newest version of 7092Windows 7093that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 7094and 7095AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 7096Ming. 7097 7098Fixed a problem where the length of the local/common FADT was set too 7099early. 7100The local FADT table length cannot be set to the common length until the 7101original length has been examined. There is code that checks the table 7102length 7103and sets various fields appropriately. This can affect older machines 7104with 7105early FADT versions. For example, this can cause inadvertent writes to 7106the 7107CST_CNT register. Julian Anastasov. 7108 7109Fixed a mapping issue related to a physical table override. Use the 7110deferred 7111mapping mechanism for tables loaded via the physical override OSL 7112interface. 7113This allows for early mapping before the virtual memory manager is 7114available. 7115Thomas Renninger, Bob Moore. 7116 7117Enhanced the automatic return-object repair code: Repair a common problem 7118with 7119predefined methods that are defined to return a variable-length Package 7120of 7121sub-objects. If there is only one sub-object, some BIOS ASL code 7122mistakenly 7123simply returns the single object instead of a Package with one sub- 7124object. 7125This new support will repair this error by wrapping a Package object 7126around 7127the original object, creating the correct and expected Package with one 7128sub- 7129object. Names that can be repaired in this manner include: _ALR, _CSD, 7130_HPX, 7131_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 7132939. 7133 7134Changed the exception code returned for invalid ACPI paths passed as 7135parameters to external interfaces such as AcpiEvaluateObject. Was 7136AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 7137 7138Example Code and Data Size: These are the sizes for the OS-independent 7139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7140debug 7141version of the code includes the debug output trace mechanism and has a 7142much 7143larger code and data size. 7144 7145 Previous Release: 7146 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7147 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7148 Current Release: 7149 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7150 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7151 7152 71532) iASL Compiler/Disassembler and Tools: 7154 7155iASL: Added the infrastructure and initial implementation of a integrated 7156C- 7157like preprocessor. This will simplify BIOS development process by 7158eliminating 7159the need for a separate preprocessing step during builds. On Windows, it 7160also 7161eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 7162features including full #define() macro support are still under 7163development. 7164These preprocessor directives are supported: 7165 #define 7166 #elif 7167 #else 7168 #endif 7169 #error 7170 #if 7171 #ifdef 7172 #ifndef 7173 #include 7174 #pragma message 7175 #undef 7176 #warning 7177In addition, these new command line options are supported: 7178 -D <symbol> Define symbol for preprocessor use 7179 -li Create preprocessed output file (*.i) 7180 -P Preprocess only and create preprocessor output file (*.i) 7181 7182Table Compiler: Fixed a problem where the equals operator within an 7183expression 7184did not work properly. 7185 7186Updated iASL to use the current versions of Bison/Flex. Updated the 7187Windows 7188project file to invoke these tools from the standard location. ACPICA BZ 7189904. 7190Versions supported: 7191 Flex for Windows: V2.5.4 7192 Bison for Windows: V2.4.1 7193 7194---------------------------------------- 719515 February 2012. Summary of changes for version 20120215: 7196 7197 71981) ACPICA Core Subsystem: 7199 7200There have been some major changes to the sleep/wake support code, as 7201described below (a - e). 7202 7203a) The AcpiLeaveSleepState has been split into two interfaces, similar to 7204AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 7205AcpiLeaveSleepStatePrep. This allows the host to perform actions between 7206the 7207time the _BFS method is called and the _WAK method is called. NOTE: all 7208hosts 7209must update their wake/resume code or else sleep/wake will not work 7210properly. 7211Rafael Wysocki. 7212 7213b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 7214_WAK 7215method. Some machines require that the GPEs are enabled before the _WAK 7216method 7217is executed. Thomas Renninger. 7218 7219c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 7220bit. 7221Some BIOS code assumes that WAK_STS will be cleared on resume and use it 7222to 7223determine whether the system is rebooting or resuming. Matthew Garrett. 7224 7225d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 7226Sleep) to 7227match the ACPI specification requirement. Rafael Wysocki. 7228 7229e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 7230registers within the V5 FADT. This support adds two new files: 7231hardware/hwesleep.c implements the support for the new registers. Moved 7232all 7233sleep/wake external interfaces to hardware/hwxfsleep.c. 7234 7235 7236Added a new OSL interface for ACPI table overrides, 7237AcpiOsPhysicalTableOverride. This interface allows the host to override a 7238table via a physical address, instead of the logical address required by 7239AcpiOsTableOverride. This simplifies the host implementation. Initial 7240implementation by Thomas Renninger. The ACPICA implementation creates a 7241single 7242shared function for table overrides that attempts both a logical and a 7243physical override. 7244 7245Expanded the OSL memory read/write interfaces to 64-bit data 7246(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 7247transfer support for GAS register structures passed to AcpiRead and 7248AcpiWrite. 7249 7250Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 7251custom 7252build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 7253model. 7254See the ACPICA reference for details. ACPICA BZ 942. This option removes 7255about 725610% of the code and 5% of the static data, and the following hardware 7257ACPI 7258features become unavailable: 7259 PM Event and Control registers 7260 SCI interrupt (and handler) 7261 Fixed Events 7262 General Purpose Events (GPEs) 7263 Global Lock 7264 ACPI PM timer 7265 7266Updated the unix tarball directory structure to match the ACPICA git 7267source 7268tree. This ensures that the generic unix makefiles work properly (in 7269generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 7270867. 7271 7272Updated the return value of the _REV predefined method to integer value 5 7273to 7274reflect ACPI 5.0 support. 7275 7276Moved the external ACPI PM timer interface prototypes to the public 7277acpixf.h 7278file where they belong. 7279 7280Example Code and Data Size: These are the sizes for the OS-independent 7281acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7282debug 7283version of the code includes the debug output trace mechanism and has a 7284much 7285larger code and data size. 7286 7287 Previous Release: 7288 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7289 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7290 Current Release: 7291 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7292 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7293 7294 72952) iASL Compiler/Disassembler and Tools: 7296 7297Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 7298descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 7299incorrectly displayed. 7300 7301AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 7302specification. 7303 7304---------------------------------------- 730511 January 2012. Summary of changes for version 20120111: 7306 7307 73081) ACPICA Core Subsystem: 7309 7310Implemented a new mechanism to allow host device drivers to check for 7311address 7312range conflicts with ACPI Operation Regions. Both SystemMemory and 7313SystemIO 7314address spaces are supported. A new external interface, 7315AcpiCheckAddressRange, 7316allows drivers to check an address range against the ACPI namespace. See 7317the 7318ACPICA reference for additional details. Adds one new file, 7319utilities/utaddress.c. Lin Ming, Bob Moore. 7320 7321Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 7322Control 7323and 7324Status registers, update the ACPI 5.0 flags, and update internal data 7325structures to handle an FADT larger than 256 bytes. The size of the ACPI 73265.0 7327FADT is 268 bytes. 7328 7329Updated all ACPICA copyrights and signons to 2012. Added the 2012 7330copyright to 7331all module headers and signons, including the standard Linux header. This 7332affects virtually every file in the ACPICA core subsystem, iASL compiler, 7333and 7334all ACPICA utilities. 7335 7336Example Code and Data Size: These are the sizes for the OS-independent 7337acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7338debug 7339version of the code includes the debug output trace mechanism and has a 7340much 7341larger code and data size. 7342 7343 Previous Release: 7344 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7345 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7346 Current Release: 7347 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7348 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7349 7350 73512) iASL Compiler/Disassembler and Tools: 7352 7353Disassembler: fixed a problem with the automatic resource tag generation 7354support. Fixes a problem where the resource tags are inadvertently not 7355constructed if the table being disassembled contains external references 7356to 7357control methods. Moved the actual construction of the tags to after the 7358final 7359namespace is constructed (after 2nd parse is invoked due to external 7360control 7361method references.) ACPICA BZ 941. 7362 7363Table Compiler: Make all "generic" operators caseless. These are the 7364operators 7365like UINT8, String, etc. Making these caseless improves ease-of-use. 7366ACPICA BZ 7367934. 7368 7369---------------------------------------- 737023 November 2011. Summary of changes for version 20111123: 7371 73720) ACPI 5.0 Support: 7373 7374This release contains full support for the ACPI 5.0 specification, as 7375summarized below. 7376 7377Reduced Hardware Support: 7378------------------------- 7379 7380This support allows for ACPI systems without the usual ACPI hardware. 7381This 7382support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 7383will 7384not attempt to initialize or use any of the usual ACPI hardware. Note, 7385when 7386this flag is set, all of the following ACPI hardware is assumed to be not 7387present and is not initialized or accessed: 7388 7389 General Purpose Events (GPEs) 7390 Fixed Events (PM1a/PM1b and PM Control) 7391 Power Management Timer and Console Buttons (power/sleep) 7392 Real-time Clock Alarm 7393 Global Lock 7394 System Control Interrupt (SCI) 7395 The FACS is assumed to be non-existent 7396 7397ACPI Tables: 7398------------ 7399 7400All new tables and updates to existing tables are fully supported in the 7401ACPICA headers (for use by device drivers), the disassembler, and the 7402iASL 7403Data Table Compiler. ACPI 5.0 defines these new tables: 7404 7405 BGRT /* Boot Graphics Resource Table */ 7406 DRTM /* Dynamic Root of Trust for Measurement table */ 7407 FPDT /* Firmware Performance Data Table */ 7408 GTDT /* Generic Timer Description Table */ 7409 MPST /* Memory Power State Table */ 7410 PCCT /* Platform Communications Channel Table */ 7411 PMTT /* Platform Memory Topology Table */ 7412 RASF /* RAS Feature table */ 7413 7414Operation Regions/SpaceIDs: 7415--------------------------- 7416 7417All new operation regions are fully supported by the iASL compiler, the 7418disassembler, and the ACPICA runtime code (for dispatch to region 7419handlers.) 7420The new operation region Space IDs are: 7421 7422 GeneralPurposeIo 7423 GenericSerialBus 7424 7425Resource Descriptors: 7426--------------------- 7427 7428All new ASL resource descriptors are fully supported by the iASL 7429compiler, 7430the 7431ASL/AML disassembler, and the ACPICA runtime Resource Manager code 7432(including 7433all new predefined resource tags). New descriptors are: 7434 7435 FixedDma 7436 GpioIo 7437 GpioInt 7438 I2cSerialBus 7439 SpiSerialBus 7440 UartSerialBus 7441 7442ASL/AML Operators, New and Modified: 7443------------------------------------ 7444 7445One new operator is added, the Connection operator, which is used to 7446associate 7447a GeneralPurposeIo or GenericSerialBus resource descriptor with 7448individual 7449field objects within an operation region. Several new protocols are 7450associated 7451with the AccessAs operator. All are fully supported by the iASL compiler, 7452disassembler, and runtime ACPICA AML interpreter: 7453 7454 Connection // Declare Field Connection 7455attributes 7456 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 7457 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 7458Protocol 7459 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 7460 RawDataBuffer // Data type for Vendor Data 7461fields 7462 7463Predefined ASL/AML Objects: 7464--------------------------- 7465 7466All new predefined objects/control-methods are supported by the iASL 7467compiler 7468and the ACPICA runtime validation/repair (arguments and return values.) 7469New 7470predefined names include the following: 7471 7472Standard Predefined Names (Objects or Control Methods): 7473 _AEI, _CLS, _CPC, _CWS, _DEP, 7474 _DLM, _EVT, _GCP, _CRT, _GWS, 7475 _HRV, _PRE, _PSE, _SRT, _SUB. 7476 7477Resource Tags (Names used to access individual fields within resource 7478descriptors): 7479 _DBT, _DPL, _DRS, _END, _FLC, 7480 _IOR, _LIN, _MOD, _PAR, _PHA, 7481 _PIN, _PPI, _POL, _RXL, _SLV, 7482 _SPE, _STB, _TXL, _VEN. 7483 7484ACPICA External Interfaces: 7485--------------------------- 7486 7487Several new interfaces have been defined for use by ACPI-related device 7488drivers and other host OS services: 7489 7490AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 7491to 7492acquire and release AML mutexes that are defined in the DSDT/SSDT tables 7493provided by the BIOS. They are intended to be used in conjunction with 7494the 7495ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 7496mutual exclusion with the AML code/interpreter. 7497 7498AcpiGetEventResources: Returns the (formatted) resource descriptors as 7499defined 7500by the ACPI 5.0 _AEI object (ACPI Event Information). This object 7501provides 7502resource descriptors associated with hardware-reduced platform events, 7503similar 7504to the AcpiGetCurrentResources interface. 7505 7506Operation Region Handlers: For General Purpose IO and Generic Serial Bus 7507operation regions, information about the Connection() object and any 7508optional 7509length information is passed to the region handler within the Context 7510parameter. 7511 7512AcpiBufferToResource: This interface converts a raw AML buffer containing 7513a 7514resource template or resource descriptor to the ACPI_RESOURCE internal 7515format 7516suitable for use by device drivers. Can be used by an operation region 7517handler 7518to convert the Connection() buffer object into a ACPI_RESOURCE. 7519 7520Miscellaneous/Tools/TestSuites: 7521------------------------------- 7522 7523Support for extended _HID names (Four alpha characters instead of three). 7524Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 7525Support for ACPI 5.0 features in the ASLTS test suite. 7526Fully updated documentation (ACPICA and iASL reference documents.) 7527 7528ACPI Table Definition Language: 7529------------------------------- 7530 7531Support for this language was implemented and released as a subsystem of 7532the 7533iASL compiler in 2010. (See the iASL compiler User Guide.) 7534 7535 7536Non-ACPI 5.0 changes for this release: 7537-------------------------------------- 7538 75391) ACPICA Core Subsystem: 7540 7541Fix a problem with operation region declarations where a failure can 7542occur 7543if 7544the region name and an argument that evaluates to an object (such as the 7545region address) are in different namespace scopes. Lin Ming, ACPICA BZ 7546937. 7547 7548Do not abort an ACPI table load if an invalid space ID is found within. 7549This 7550will be caught later if the offending method is executed. ACPICA BZ 925. 7551 7552Fixed an issue with the FFixedHW space ID where the ID was not always 7553recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 7554 7555Fixed a problem with the 32-bit generation of the unix-specific OSL 7556(osunixxf.c). Lin Ming, ACPICA BZ 936. 7557 7558Several changes made to enable generation with the GCC 4.6 compiler. 7559ACPICA BZ 7560935. 7561 7562New error messages: Unsupported I/O requests (not 8/16/32 bit), and 7563Index/Bank 7564field registers out-of-range. 7565 75662) iASL Compiler/Disassembler and Tools: 7567 7568iASL: Implemented the __PATH__ operator, which returns the full pathname 7569of 7570the current source file. 7571 7572AcpiHelp: Automatically display expanded keyword information for all ASL 7573operators. 7574 7575Debugger: Add "Template" command to disassemble/dump resource template 7576buffers. 7577 7578Added a new master script to generate and execute the ASLTS test suite. 7579Automatically handles 32- and 64-bit generation. See tests/aslts.sh 7580 7581iASL: Fix problem with listing generation during processing of the 7582Switch() 7583operator where AML listing was disabled until the entire Switch block was 7584completed. 7585 7586iASL: Improve support for semicolon statement terminators. Fix "invalid 7587character" message for some cases when the semicolon is used. Semicolons 7588are 7589now allowed after every <Term> grammar element. ACPICA BZ 927. 7590 7591iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7592923. 7593 7594Disassembler: Fix problem with disassembly of the DataTableRegion 7595operator 7596where an inadvertent "Unhandled deferred opcode" message could be 7597generated. 7598 75993) Example Code and Data Size 7600 7601These are the sizes for the OS-independent acpica.lib produced by the 7602Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7603includes the debug output trace mechanism and has a much larger code and 7604data 7605size. 7606 7607 Previous Release: 7608 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7609 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7610 Current Release: 7611 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7612 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7613 7614---------------------------------------- 761522 September 2011. Summary of changes for version 20110922: 7616 76170) ACPI 5.0 News: 7618 7619Support for ACPI 5.0 in ACPICA has been underway for several months and 7620will 7621be released at the same time that ACPI 5.0 is officially released. 7622 7623The ACPI 5.0 specification is on track for release in the next few 7624months. 7625 76261) ACPICA Core Subsystem: 7627 7628Fixed a problem where the maximum sleep time for the Sleep() operator was 7629intended to be limited to two seconds, but was inadvertently limited to 763020 7631seconds instead. 7632 7633Linux and Unix makefiles: Added header file dependencies to ensure 7634correct 7635generation of ACPICA core code and utilities. Also simplified the 7636makefiles 7637considerably through the use of the vpath variable to specify search 7638paths. 7639ACPICA BZ 924. 7640 76412) iASL Compiler/Disassembler and Tools: 7642 7643iASL: Implemented support to check the access length for all fields 7644created to 7645access named Resource Descriptor fields. For example, if a resource field 7646is 7647defined to be two bits, a warning is issued if a CreateXxxxField() is 7648used 7649with an incorrect bit length. This is implemented for all current 7650resource 7651descriptor names. ACPICA BZ 930. 7652 7653Disassembler: Fixed a byte ordering problem with the output of 24-bit and 765456- 7655bit integers. 7656 7657iASL: Fixed a couple of issues associated with variable-length package 7658objects. 1) properly handle constants like One, Ones, Zero -- do not make 7659a 7660VAR_PACKAGE when these are used as a package length. 2) Allow the 7661VAR_PACKAGE 7662opcode (in addition to PACKAGE) when validating object types for 7663predefined 7664names. 7665 7666iASL: Emit statistics for all output files (instead of just the ASL input 7667and 7668AML output). Includes listings, hex files, etc. 7669 7670iASL: Added -G option to the table compiler to allow the compilation of 7671custom 7672ACPI tables. The only part of a table that is required is the standard 767336- 7674byte 7675ACPI header. 7676 7677AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7678headers), 7679which also adds correct 64-bit support. Also, now all output filenames 7680are 7681completely lower case. 7682 7683AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7684loading table files. A warning is issued for any such tables. The only 7685exception is an FADT. This also fixes a possible fault when attempting to 7686load 7687non-AML tables. ACPICA BZ 932. 7688 7689AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7690a 7691missing table terminator could cause a fault when using the -p option. 7692 7693AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7694statistics. 7695 76963) Example Code and Data Size 7697 7698These are the sizes for the OS-independent acpica.lib produced by the 7699Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7700includes the debug output trace mechanism and has a much larger code and 7701data 7702size. 7703 7704 Previous Release (VC 9.0): 7705 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7706 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7707 Current Release (VC 9.0): 7708 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7709 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7710 7711 7712---------------------------------------- 771323 June 2011. Summary of changes for version 20110623: 7714 77151) ACPI CA Core Subsystem: 7716 7717Updated the predefined name repair mechanism to not attempt repair of a 7718_TSS 7719return object if a _PSS object is present. We can only sort the _TSS 7720return 7721package if there is no _PSS within the same scope. This is because if 7722_PSS 7723is 7724present, the ACPI specification dictates that the _TSS Power Dissipation 7725field 7726is to be ignored, and therefore some BIOSs leave garbage values in the 7727_TSS 7728Power field(s). In this case, it is best to just return the _TSS package 7729as- 7730is. Reported by, and fixed with assistance from Fenghua Yu. 7731 7732Added an option to globally disable the control method return value 7733validation 7734and repair. This runtime option can be used to disable return value 7735repair 7736if 7737this is causing a problem on a particular machine. Also added an option 7738to 7739AcpiExec (-dr) to set this disable flag. 7740 7741All makefiles and project files: Major changes to improve generation of 7742ACPICA 7743tools. ACPICA BZ 912: 7744 Reduce default optimization levels to improve compatibility 7745 For Linux, add strict-aliasing=0 for gcc 4 7746 Cleanup and simplify use of command line defines 7747 Cleanup multithread library support 7748 Improve usage messages 7749 7750Linux-specific header: update handling of THREAD_ID and pthread. For the 775132- 7752bit case, improve casting to eliminate possible warnings, especially with 7753the 7754acpica tools. 7755 7756Example Code and Data Size: These are the sizes for the OS-independent 7757acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7758debug 7759version of the code includes the debug output trace mechanism and has a 7760much 7761larger code and data size. 7762 7763 Previous Release (VC 9.0): 7764 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7765 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7766 Current Release (VC 9.0): 7767 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7768 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7769 77702) iASL Compiler/Disassembler and Tools: 7771 7772With this release, a new utility named "acpihelp" has been added to the 7773ACPICA 7774package. This utility summarizes the ACPI specification chapters for the 7775ASL 7776and AML languages. It generates under Linux/Unix as well as Windows, and 7777provides the following functionality: 7778 Find/display ASL operator(s) -- with description and syntax. 7779 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7780 Find/display ACPI predefined name(s) -- with description, number 7781 of arguments, and the return value data type. 7782 Find/display AML opcode name(s) -- with opcode, arguments, and 7783grammar. 7784 Decode/display AML opcode -- with opcode name, arguments, and 7785grammar. 7786 7787Service Layers: Make multi-thread support configurable. Conditionally 7788compile 7789the multi-thread support so that threading libraries will not be linked 7790if 7791not 7792necessary. The only tool that requires multi-thread support is AcpiExec. 7793 7794iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7795of 7796Bison appear to want the interface to yyerror to be a const char * (or at 7797least this is a problem when generating iASL on some systems.) ACPICA BZ 7798923 7799Pierre Lejeune. 7800 7801Tools: Fix for systems where O_BINARY is not defined. Only used for 7802Windows 7803versions of the tools. 7804 7805---------------------------------------- 780627 May 2011. Summary of changes for version 20110527: 7807 78081) ACPI CA Core Subsystem: 7809 7810ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7811table 7812signature. Now, only allow SSDT, OEMx, and a null signature. History: 7813 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7814 (PSDT is now obsolete.) 7815 2) We added support for OEMx tables, signature "OEM" plus a fourth 7816 "don't care" character. 7817 3) Valid tables were encountered with a null signature, so we just 7818 gave up on validating the signature, (05/2008). 7819 4) We encountered non-AML tables such as the MADT, which caused 7820 interpreter errors and kernel faults. So now, we once again allow 7821 only SSDT, OEMx, and now, also a null signature. (05/2011). 7822 7823Added the missing _TDL predefined name to the global name list in order 7824to 7825enable validation. Affects both the core ACPICA code and the iASL 7826compiler. 7827 7828Example Code and Data Size: These are the sizes for the OS-independent 7829acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7830debug 7831version of the code includes the debug output trace mechanism and has a 7832much 7833larger code and data size. 7834 7835 Previous Release (VC 9.0): 7836 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7837 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7838 Current Release (VC 9.0): 7839 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7840 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7841 78422) iASL Compiler/Disassembler and Tools: 7843 7844Debugger/AcpiExec: Implemented support for "complex" method arguments on 7845the 7846debugger command line. This adds support beyond simple integers -- 7847including 7848Strings, Buffers, and Packages. Includes support for nested packages. 7849Increased the default command line buffer size to accommodate these 7850arguments. 7851See the ACPICA reference for details and syntax. ACPICA BZ 917. 7852 7853Debugger/AcpiExec: Implemented support for "default" method arguments for 7854the 7855Execute/Debug command. Now, the debugger will always invoke a control 7856method 7857with the required number of arguments -- even if the command line 7858specifies 7859none or insufficient arguments. It uses default integer values for any 7860missing 7861arguments. Also fixes a bug where only six method arguments maximum were 7862supported instead of the required seven. 7863 7864Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7865and 7866also return status in order to prevent buffer overruns. See the ACPICA 7867reference for details and syntax. ACPICA BZ 921 7868 7869iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7870makefiles to simplify support for the two different but similar parser 7871generators, bison and yacc. 7872 7873Updated the generic unix makefile for gcc 4. The default gcc version is 7874now 7875expected to be 4 or greater, since options specific to gcc 4 are used. 7876 7877---------------------------------------- 787813 April 2011. Summary of changes for version 20110413: 7879 78801) ACPI CA Core Subsystem: 7881 7882Implemented support to execute a so-called "orphan" _REG method under the 7883EC 7884device. This change will force the execution of a _REG method underneath 7885the 7886EC 7887device even if there is no corresponding operation region of type 7888EmbeddedControl. Fixes a problem seen on some machines and apparently is 7889compatible with Windows behavior. ACPICA BZ 875. 7890 7891Added more predefined methods that are eligible for automatic NULL 7892package 7893element removal. This change adds another group of predefined names to 7894the 7895list 7896of names that can be repaired by having NULL package elements dynamically 7897removed. This group are those methods that return a single variable- 7898length 7899package containing simple data types such as integers, buffers, strings. 7900This 7901includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7902_PSL, 7903_Sx, 7904and _TZD. ACPICA BZ 914. 7905 7906Split and segregated all internal global lock functions to a new file, 7907evglock.c. 7908 7909Updated internal address SpaceID for DataTable regions. Moved this 7910internal 7911space 7912id in preparation for ACPI 5.0 changes that will include some new space 7913IDs. 7914This 7915change should not affect user/host code. 7916 7917Example Code and Data Size: These are the sizes for the OS-independent 7918acpica.lib 7919produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7920version of 7921the code includes the debug output trace mechanism and has a much larger 7922code 7923and 7924data size. 7925 7926 Previous Release (VC 9.0): 7927 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7928 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7929 Current Release (VC 9.0): 7930 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7931 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7932 79332) iASL Compiler/Disassembler and Tools: 7934 7935iASL/DTC: Major update for new grammar features. Allow generic data types 7936in 7937custom ACPI tables. Field names are now optional. Any line can be split 7938to 7939multiple lines using the continuation char (\). Large buffers now use 7940line- 7941continuation character(s) and no colon on the continuation lines. See the 7942grammar 7943update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7944Moore. 7945 7946iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7947statements. 7948Since the parser stuffs a "zero" as the return value for these statements 7949(due 7950to 7951the underlying AML grammar), they were seen as "return with value" by the 7952iASL 7953semantic checking. They are now seen correctly as "null" return 7954statements. 7955 7956iASL: Check if a_REG declaration has a corresponding Operation Region. 7957Adds a 7958check for each _REG to ensure that there is in fact a corresponding 7959operation 7960region declaration in the same scope. If not, the _REG method is not very 7961useful 7962since it probably won't be executed. ACPICA BZ 915. 7963 7964iASL/DTC: Finish support for expression evaluation. Added a new 7965expression 7966parser 7967that implements c-style operator precedence and parenthesization. ACPICA 7968bugzilla 7969908. 7970 7971Disassembler/DTC: Remove support for () and <> style comments in data 7972tables. 7973Now 7974that DTC has full expression support, we don't want to have comment 7975strings 7976that 7977start with a parentheses or a less-than symbol. Now, only the standard /* 7978and 7979// 7980comments are supported, as well as the bracket [] comments. 7981 7982AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7983"unusual" 7984headers in the acpidump file. Update the header validation to support 7985these 7986tables. Problem introduced in previous AcpiXtract version in the change 7987to 7988support "wrong checksum" error messages emitted by acpidump utility. 7989 7990iASL: Add a * option to generate all template files (as a synonym for 7991ALL) 7992as 7993in 7994"iasl -T *" or "iasl -T ALL". 7995 7996iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7997completely 7998abort the compiler on "fatal" errors, simply should abort the current 7999compile. 8000This allows multiple compiles with a single (possibly wildcard) compiler 8001invocation. 8002 8003---------------------------------------- 800416 March 2011. Summary of changes for version 20110316: 8005 80061) ACPI CA Core Subsystem: 8007 8008Fixed a problem caused by a _PRW method appearing at the namespace root 8009scope 8010during the setup of wake GPEs. A fault could occur if a _PRW directly 8011under 8012the 8013root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 8014 8015Implemented support for "spurious" Global Lock interrupts. On some 8016systems, a 8017global lock interrupt can occur without the pending flag being set. Upon 8018a 8019GL 8020interrupt, we now ensure that a thread is actually waiting for the lock 8021before 8022signaling GL availability. Rafael Wysocki, Bob Moore. 8023 8024Example Code and Data Size: These are the sizes for the OS-independent 8025acpica.lib 8026produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 8027version of 8028the code includes the debug output trace mechanism and has a much larger 8029code 8030and 8031data size. 8032 8033 Previous Release (VC 9.0): 8034 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8035 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8036 Current Release (VC 9.0): 8037 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 8038 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 8039 80402) iASL Compiler/Disassembler and Tools: 8041 8042Implemented full support for the "SLIC" ACPI table. Includes support in 8043the 8044header files, disassembler, table compiler, and template generator. Bob 8045Moore, 8046Lin Ming. 8047 8048AcpiXtract: Correctly handle embedded comments and messages from 8049AcpiDump. 8050Apparently some or all versions of acpidump will occasionally emit a 8051comment 8052like 8053"Wrong checksum", etc., into the dump file. This was causing problems for 8054AcpiXtract. ACPICA BZ 905. 8055 8056iASL: Fix the Linux makefile by removing an inadvertent double file 8057inclusion. 8058ACPICA BZ 913. 8059 8060AcpiExec: Update installation of operation region handlers. Install one 8061handler 8062for a user-defined address space. This is used by the ASL test suite 8063(ASLTS). 8064 8065---------------------------------------- 806611 February 2011. Summary of changes for version 20110211: 8067 80681) ACPI CA Core Subsystem: 8069 8070Added a mechanism to defer _REG methods for some early-installed 8071handlers. 8072Most user handlers should be installed before call to 8073AcpiEnableSubsystem. 8074However, Event handlers and region handlers should be installed after 8075AcpiInitializeObjects. Override handlers for the "default" regions should 8076be 8077installed early, however. This change executes all _REG methods for the 8078default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 8079chicken/egg issues between them. ACPICA BZ 848. 8080 8081Implemented an optimization for GPE detection. This optimization will 8082simply 8083ignore GPE registers that contain no enabled GPEs -- there is no need to 8084read the register since this information is available internally. This 8085becomes more important on machines with a large GPE space. ACPICA 8086bugzilla 8087884. Lin Ming. Suggestion from Joe Liu. 8088 8089Removed all use of the highly unreliable FADT revision field. The 8090revision 8091number in the FADT has been found to be completely unreliable and cannot 8092be 8093trusted. Only the actual table length can be used to infer the version. 8094This 8095change updates the ACPICA core and the disassembler so that both no 8096longer 8097even look at the FADT version and instead depend solely upon the FADT 8098length. 8099 8100Fix an unresolved name issue for the no-debug and no-error-message source 8101generation cases. The _AcpiModuleName was left undefined in these cases, 8102but 8103it is actually needed as a parameter to some interfaces. Define 8104_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 8105 8106Split several large files (makefiles and project files updated) 8107 utglobal.c -> utdecode.c 8108 dbcomds.c -> dbmethod.c dbnames.c 8109 dsopcode.c -> dsargs.c dscontrol.c 8110 dsload.c -> dsload2.c 8111 aslanalyze.c -> aslbtypes.c aslwalks.c 8112 8113Example Code and Data Size: These are the sizes for the OS-independent 8114acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8115debug version of the code includes the debug output trace mechanism and 8116has 8117a much larger code and data size. 8118 8119 Previous Release (VC 9.0): 8120 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8121 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8122 Current Release (VC 9.0): 8123 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8124 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8125 81262) iASL Compiler/Disassembler and Tools: 8127 8128iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 8129These are useful C-style macros with the standard definitions. ACPICA 8130bugzilla 898. 8131 8132iASL/DTC: Added support for integer expressions and labels. Support for 8133full 8134expressions for all integer fields in all ACPI tables. Support for labels 8135in 8136"generic" portions of tables such as UEFI. See the iASL reference manual. 8137 8138Debugger: Added a command to display the status of global handlers. The 8139"handlers" command will display op region, fixed event, and miscellaneous 8140global handlers. installation status -- and for op regions, whether 8141default 8142or user-installed handler will be used. 8143 8144iASL: Warn if reserved method incorrectly returns a value. Many 8145predefined 8146names are defined such that they do not return a value. If implemented as 8147a 8148method, issue a warning if such a name explicitly returns a value. ACPICA 8149Bugzilla 855. 8150 8151iASL: Added detection of GPE method name conflicts. Detects a conflict 8152where 8153there are two GPE methods of the form _Lxy and _Exy in the same scope. 8154(For 8155example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 8156 8157iASL/DTC: Fixed a couple input scanner issues with comments and line 8158numbers. Comment remover could get confused and miss a comment ending. 8159Fixed 8160a problem with line counter maintenance. 8161 8162iASL/DTC: Reduced the severity of some errors from fatal to error. There 8163is 8164no need to abort on simple errors within a field definition. 8165 8166Debugger: Simplified the output of the help command. All help output now 8167in 8168a single screen, instead of help subcommands. ACPICA Bugzilla 897. 8169 8170---------------------------------------- 817112 January 2011. Summary of changes for version 20110112: 8172 81731) ACPI CA Core Subsystem: 8174 8175Fixed a race condition between method execution and namespace walks that 8176can 8177possibly cause a fault. The problem was apparently introduced in version 817820100528 as a result of a performance optimization that reduces the 8179number 8180of 8181namespace walks upon method exit by using the delete_namespace_subtree 8182function instead of the delete_namespace_by_owner function used 8183previously. 8184Bug is a missing namespace lock in the delete_namespace_subtree function. 8185dana.myers@oracle.com 8186 8187Fixed several issues and a possible fault with the automatic "serialized" 8188method support. History: This support changes a method to "serialized" on 8189the 8190fly if the method generates an AE_ALREADY_EXISTS error, indicating the 8191possibility that it cannot handle reentrancy. This fix repairs a couple 8192of 8193issues seen in the field, especially on machines with many cores: 8194 8195 1) Delete method children only upon the exit of the last thread, 8196 so as to not delete objects out from under other running threads 8197 (and possibly causing a fault.) 8198 2) Set the "serialized" bit for the method only upon the exit of the 8199 Last thread, so as to not cause deadlock when running threads 8200 attempt to exit. 8201 3) Cleanup the use of the AML "MethodFlags" and internal method flags 8202 so that there is no longer any confusion between the two. 8203 8204 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 8205 8206Debugger: Now lock the namespace for duration of a namespace dump. 8207Prevents 8208issues if the namespace is changing dynamically underneath the debugger. 8209Especially affects temporary namespace nodes, since the debugger displays 8210these also. 8211 8212Updated the ordering of include files. The ACPICA headers should appear 8213before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 8214set 8215any necessary compiler-specific defines, etc. Affects the ACPI-related 8216tools 8217and utilities. 8218 8219Updated all ACPICA copyrights and signons to 2011. Added the 2011 8220copyright 8221to all module headers and signons, including the Linux header. This 8222affects 8223virtually every file in the ACPICA core subsystem, iASL compiler, and all 8224utilities. 8225 8226Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 8227project files for VC++ 6.0 are now obsolete. New project files can be 8228found 8229under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 8230details. 8231 8232Example Code and Data Size: These are the sizes for the OS-independent 8233acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8234debug version of the code includes the debug output trace mechanism and 8235has a 8236much larger code and data size. 8237 8238 Previous Release (VC 6.0): 8239 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8240 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8241 Current Release (VC 9.0): 8242 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8243 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8244 82452) iASL Compiler/Disassembler and Tools: 8246 8247iASL: Added generic data types to the Data Table compiler. Add "generic" 8248data 8249types such as UINT32, String, Unicode, etc., to simplify the generation 8250of 8251platform-defined tables such as UEFI. Lin Ming. 8252 8253iASL: Added listing support for the Data Table Compiler. Adds listing 8254support 8255(-l) to display actual binary output for each line of input code. 8256 8257---------------------------------------- 825809 December 2010. Summary of changes for version 20101209: 8259 82601) ACPI CA Core Subsystem: 8261 8262Completed the major overhaul of the GPE support code that was begun in 8263July 82642010. Major features include: removal of _PRW execution in ACPICA (host 8265executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 8266changes to existing interfaces, simplification of GPE handler operation, 8267and 8268a handful of new interfaces: 8269 8270 AcpiUpdateAllGpes 8271 AcpiFinishGpe 8272 AcpiSetupGpeForWake 8273 AcpiSetGpeWakeMask 8274 One new file, evxfgpe.c to consolidate all external GPE interfaces. 8275 8276See the ACPICA Programmer Reference for full details and programming 8277information. See the new section 4.4 "General Purpose Event (GPE) 8278Support" 8279for a full overview, and section 8.7 "ACPI General Purpose Event 8280Management" 8281for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 8282Ming, 8283Bob Moore, Rafael Wysocki. 8284 8285Implemented a new GPE feature for Windows compatibility, the "Implicit 8286Wake 8287GPE Notify". This feature will automatically issue a Notify(2) on a 8288device 8289when a Wake GPE is received if there is no corresponding GPE method or 8290handler. ACPICA BZ 870. 8291 8292Fixed a problem with the Scope() operator during table parse and load 8293phase. 8294During load phase (table load or method execution), the scope operator 8295should 8296not enter the target into the namespace. Instead, it should open a new 8297scope 8298at the target location. Linux BZ 19462, ACPICA BZ 882. 8299 8300Example Code and Data Size: These are the sizes for the OS-independent 8301acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8302debug version of the code includes the debug output trace mechanism and 8303has a 8304much larger code and data size. 8305 8306 Previous Release: 8307 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8308 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8309 Current Release: 8310 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8311 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8312 83132) iASL Compiler/Disassembler and Tools: 8314 8315iASL: Relax the alphanumeric restriction on _CID strings. These strings 8316are 8317"bus-specific" per the ACPI specification, and therefore any characters 8318are 8319acceptable. The only checks that can be performed are for a null string 8320and 8321perhaps for a leading asterisk. ACPICA BZ 886. 8322 8323iASL: Fixed a problem where a syntax error that caused a premature EOF 8324condition on the source file emitted a very confusing error message. The 8325premature EOF is now detected correctly. ACPICA BZ 891. 8326 8327Disassembler: Decode the AccessSize within a Generic Address Structure 8328(byte 8329access, word access, etc.) Note, this field does not allow arbitrary bit 8330access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 8331 8332New: AcpiNames utility - Example namespace dump utility. Shows an example 8333of 8334ACPICA configuration for a minimal namespace dump utility. Uses table and 8335namespace managers, but no AML interpreter. Does not add any 8336functionality 8337over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 8338partition and configure ACPICA. ACPICA BZ 883. 8339 8340AML Debugger: Increased the debugger buffer size for method return 8341objects. 8342Was 4K, increased to 16K. Also enhanced error messages for debugger 8343method 8344execution, including the buffer overflow case. 8345 8346---------------------------------------- 834713 October 2010. Summary of changes for version 20101013: 8348 83491) ACPI CA Core Subsystem: 8350 8351Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 8352now 8353clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 8354HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 8355 8356Changed the type of the predefined namespace object _TZ from ThermalZone 8357to 8358Device. This was found to be confusing to the host software that 8359processes 8360the various thermal zones, since _TZ is not really a ThermalZone. 8361However, 8362a 8363Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 8364Zhang. 8365 8366Added Windows Vista SP2 to the list of supported _OSI strings. The actual 8367string is "Windows 2006 SP2". 8368 8369Eliminated duplicate code in AcpiUtExecute* functions. Now that the 8370nsrepair 8371code automatically repairs _HID-related strings, this type of code is no 8372longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 8373878. 8374 8375Example Code and Data Size: These are the sizes for the OS-independent 8376acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8377debug version of the code includes the debug output trace mechanism and 8378has a 8379much larger code and data size. 8380 8381 Previous Release: 8382 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8383 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8384 Current Release: 8385 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8386 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8387 83882) iASL Compiler/Disassembler and Tools: 8389 8390iASL: Implemented additional compile-time validation for _HID strings. 8391The 8392non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 8393length 8394of 8395the string must be exactly seven or eight characters. For both _HID and 8396_CID 8397strings, all characters must be alphanumeric. ACPICA BZ 874. 8398 8399iASL: Allow certain "null" resource descriptors. Some BIOS code creates 8400descriptors that are mostly or all zeros, with the expectation that they 8401will 8402be filled in at runtime. iASL now allows this as long as there is a 8403"resource 8404tag" (name) associated with the descriptor, which gives the ASL a handle 8405needed to modify the descriptor. ACPICA BZ 873. 8406 8407Added single-thread support to the generic Unix application OSL. 8408Primarily 8409for iASL support, this change removes the use of semaphores in the 8410single- 8411threaded ACPICA tools/applications - increasing performance. The 8412_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 8413option. ACPICA BZ 879. 8414 8415AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 8416support 8417for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 8418 8419iASL: Moved all compiler messages to a new file, aslmessages.h. 8420 8421---------------------------------------- 842215 September 2010. Summary of changes for version 20100915: 8423 84241) ACPI CA Core Subsystem: 8425 8426Removed the AcpiOsDerivePciId OSL interface. The various host 8427implementations 8428of this function were not OS-dependent and are now obsolete and can be 8429removed from all host OSLs. This function has been replaced by 8430AcpiHwDerivePciId, which is now part of the ACPICA core code. 8431AcpiHwDerivePciId has been implemented without recursion. Adds one new 8432module, hwpci.c. ACPICA BZ 857. 8433 8434Implemented a dynamic repair for _HID and _CID strings. The following 8435problems are now repaired at runtime: 1) Remove a leading asterisk in the 8436string, and 2) the entire string is uppercased. Both repairs are in 8437accordance with the ACPI specification and will simplify host driver 8438code. 8439ACPICA BZ 871. 8440 8441The ACPI_THREAD_ID type is no longer configurable, internally it is now 8442always UINT64. This simplifies the ACPICA code, especially any printf 8443output. 8444UINT64 is the only common data type for all thread_id types across all 8445operating systems. It is now up to the host OSL to cast the native 8446thread_id 8447type to UINT64 before returning the value to ACPICA (via 8448AcpiOsGetThreadId). 8449Lin Ming, Bob Moore. 8450 8451Added the ACPI_INLINE type to enhance the ACPICA configuration. The 8452"inline" 8453keyword is not standard across compilers, and this type allows inline to 8454be 8455configured on a per-compiler basis. Lin Ming. 8456 8457Made the system global AcpiGbl_SystemAwakeAndRunning publicly 8458available. 8459Added an extern for this boolean in acpixf.h. Some hosts utilize this 8460value 8461during suspend/restore operations. ACPICA BZ 869. 8462 8463All code that implements error/warning messages with the "ACPI:" prefix 8464has 8465been moved to a new module, utxferror.c. 8466 8467The UINT64_OVERLAY was moved to utmath.c, which is the only module where 8468it 8469is used. ACPICA BZ 829. Lin Ming, Bob Moore. 8470 8471Example Code and Data Size: These are the sizes for the OS-independent 8472acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8473debug version of the code includes the debug output trace mechanism and 8474has a 8475much larger code and data size. 8476 8477 Previous Release: 8478 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8479 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8480 Current Release: 8481 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8482 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8483 84842) iASL Compiler/Disassembler and Tools: 8485 8486iASL/Disassembler: Write ACPI errors to stderr instead of the output 8487file. 8488This keeps the output files free of random error messages that may 8489originate 8490from within the namespace/interpreter code. Used this opportunity to 8491merge 8492all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 8493866. Lin Ming, Bob Moore. 8494 8495Tools: update some printfs for ansi warnings on size_t. Handle width 8496change 8497of size_t on 32-bit versus 64-bit generations. Lin Ming. 8498 8499---------------------------------------- 850006 August 2010. Summary of changes for version 20100806: 8501 85021) ACPI CA Core Subsystem: 8503 8504Designed and implemented a new host interface to the _OSI support code. 8505This 8506will allow the host to dynamically add or remove multiple _OSI strings, 8507as 8508well as install an optional handler that is called for each _OSI 8509invocation. 8510Also added a new AML debugger command, 'osi' to display and modify the 8511global 8512_OSI string table, and test support in the AcpiExec utility. See the 8513ACPICA 8514reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 8515New Functions: 8516 AcpiInstallInterface - Add an _OSI string. 8517 AcpiRemoveInterface - Delete an _OSI string. 8518 AcpiInstallInterfaceHandler - Install optional _OSI handler. 8519Obsolete Functions: 8520 AcpiOsValidateInterface - no longer used. 8521New Files: 8522 source/components/utilities/utosi.c 8523 8524Re-introduced the support to enable multi-byte transfers for Embedded 8525Controller (EC) operation regions. A reported problem was found to be a 8526bug 8527in the host OS, not in the multi-byte support. Previously, the maximum 8528data 8529size passed to the EC operation region handler was a single byte. There 8530are 8531often EC Fields larger than one byte that need to be transferred, and it 8532is 8533useful for the EC driver to lock these as a single transaction. This 8534change 8535enables single transfers larger than 8 bits. This effectively changes the 8536access to the EC space from ByteAcc to AnyAcc, and will probably require 8537changes to the host OS Embedded Controller driver to enable 16/32/64/256- 8538bit 8539transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 8540 8541Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 8542prototype in acpiosxf.h had the output value pointer as a (void *). 8543It should be a (UINT64 *). This may affect some host OSL code. 8544 8545Fixed a couple problems with the recently modified Linux makefiles for 8546iASL 8547and AcpiExec. These new makefiles place the generated object files in the 8548local directory so that there can be no collisions between the files that 8549are 8550shared between them that are compiled with different options. 8551 8552Example Code and Data Size: These are the sizes for the OS-independent 8553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8554debug version of the code includes the debug output trace mechanism and 8555has a 8556much larger code and data size. 8557 8558 Previous Release: 8559 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8560 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8561 Current Release: 8562 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8563 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8564 85652) iASL Compiler/Disassembler and Tools: 8566 8567iASL/Disassembler: Added a new option (-da, "disassemble all") to load 8568the 8569namespace from and disassemble an entire group of AML files. Useful for 8570loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 8571and 8572disassembling with one simple command. ACPICA BZ 865. Lin Ming. 8573 8574iASL: Allow multiple invocations of -e option. This change allows 8575multiple 8576uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 8577834. 8578Lin Ming. 8579 8580---------------------------------------- 858102 July 2010. Summary of changes for version 20100702: 8582 85831) ACPI CA Core Subsystem: 8584 8585Implemented several updates to the recently added GPE reference count 8586support. The model for "wake" GPEs is changing to give the host OS 8587complete 8588control of these GPEs. Eventually, the ACPICA core will not execute any 8589_PRW 8590methods, since the host already must execute them. Also, additional 8591changes 8592were made to help ensure that the reference counts are kept in proper 8593synchronization with reality. Rafael J. Wysocki. 8594 85951) Ensure that GPEs are not enabled twice during initialization. 85962) Ensure that GPE enable masks stay in sync with the reference count. 85973) Do not inadvertently enable GPEs when writing GPE registers. 85984) Remove the internal wake reference counter and add new AcpiGpeWakeup 8599interface. This interface will set or clear individual GPEs for wakeup. 86005) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8601interfaces 8602are now used for "runtime" GPEs only. 8603 8604Changed the behavior of the GPE install/remove handler interfaces. The 8605GPE 8606is 8607no longer disabled during this process, as it was found to cause problems 8608on 8609some machines. Rafael J. Wysocki. 8610 8611Reverted a change introduced in version 20100528 to enable Embedded 8612Controller multi-byte transfers. This change was found to cause problems 8613with 8614Index Fields and possibly Bank Fields. It will be reintroduced when these 8615problems have been resolved. 8616 8617Fixed a problem with references to Alias objects within Package Objects. 8618A 8619reference to an Alias within the definition of a Package was not always 8620resolved properly. Aliases to objects like Processors, Thermal zones, 8621etc. 8622were resolved to the actual object instead of a reference to the object 8623as 8624it 8625should be. Package objects are only allowed to contain integer, string, 8626buffer, package, and reference objects. Redhat bugzilla 608648. 8627 8628Example Code and Data Size: These are the sizes for the OS-independent 8629acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8630debug version of the code includes the debug output trace mechanism and 8631has a 8632much larger code and data size. 8633 8634 Previous Release: 8635 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8636 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8637 Current Release: 8638 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8639 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8640 86412) iASL Compiler/Disassembler and Tools: 8642 8643iASL: Implemented a new compiler subsystem to allow definition and 8644compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8645These 8646are called "ACPI Data Tables", and the new compiler is the "Data Table 8647Compiler". This compiler is intended to simplify the existing error-prone 8648process of creating these tables for the BIOS, as well as allowing the 8649disassembly, modification, recompilation, and override of existing ACPI 8650data 8651tables. See the iASL User Guide for detailed information. 8652 8653iASL: Implemented a new Template Generator option in support of the new 8654Data 8655Table Compiler. This option will create examples of all known ACPI tables 8656that can be used as the basis for table development. See the iASL 8657documentation and the -T option. 8658 8659Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8660Descriptor Table). 8661 8662Updated the Linux makefiles for iASL and AcpiExec to place the generated 8663object files in the local directory so that there can be no collisions 8664between the shared files between them that are generated with different 8665options. 8666 8667Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8668Use 8669the #define __APPLE__ to enable this support. 8670 8671---------------------------------------- 867228 May 2010. Summary of changes for version 20100528: 8673 8674Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8675available at www.acpi.info. This is primarily an errata release. 8676 86771) ACPI CA Core Subsystem: 8678 8679Undefined ACPI tables: We are looking for the definitions for the 8680following 8681ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8682 8683Implemented support to enable multi-byte transfers for Embedded 8684Controller 8685(EC) operation regions. Previously, the maximum data size passed to the 8686EC 8687operation region handler was a single byte. There are often EC Fields 8688larger 8689than one byte that need to be transferred, and it is useful for the EC 8690driver 8691to lock these as a single transaction. This change enables single 8692transfers 8693larger than 8 bits. This effectively changes the access to the EC space 8694from 8695ByteAcc to AnyAcc, and will probably require changes to the host OS 8696Embedded 8697Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8698bit 8699transfers. Alexey Starikovskiy, Lin Ming 8700 8701Implemented a performance enhancement for namespace search and access. 8702This 8703change enhances the performance of namespace searches and walks by adding 8704a 8705backpointer to the parent in each namespace node. On large namespaces, 8706this 8707change can improve overall ACPI performance by up to 9X. Adding a pointer 8708to 8709each namespace node increases the overall size of the internal namespace 8710by 8711about 5%, since each namespace entry usually consists of both a namespace 8712node and an ACPI operand object. However, this is the first growth of the 8713namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8714 8715Implemented a performance optimization that reduces the number of 8716namespace 8717walks. On control method exit, only walk the namespace if the method is 8718known 8719to have created namespace objects outside of its local scope. Previously, 8720the 8721entire namespace was traversed on each control method exit. This change 8722can 8723improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8724Moore. 8725 8726Added support to truncate I/O addresses to 16 bits for Windows 8727compatibility. 8728Some ASL code has been seen in the field that inadvertently has bits set 8729above bit 15. This feature is optional and is enabled if the BIOS 8730requests 8731any Windows OSI strings. It can also be enabled by the host OS. Matthew 8732Garrett, Bob Moore. 8733 8734Added support to limit the maximum time for the ASL Sleep() operator. To 8735prevent accidental deep sleeps, limit the maximum time that Sleep() will 8736actually sleep. Configurable, the default maximum is two seconds. ACPICA 8737bugzilla 854. 8738 8739Added run-time validation support for the _WDG and_WED Microsoft 8740predefined 8741methods. These objects are defined by "Windows Instrumentation", and are 8742not 8743part of the ACPI spec. ACPICA BZ 860. 8744 8745Expanded all statistic counters used during namespace and device 8746initialization from 16 to 32 bits in order to support very large 8747namespaces. 8748 8749Replaced all instances of %d in printf format specifiers with %u since 8750nearly 8751all integers in ACPICA are unsigned. 8752 8753Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8754returned 8755as AE_NO_HANDLER. 8756 8757Example Code and Data Size: These are the sizes for the OS-independent 8758acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8759debug version of the code includes the debug output trace mechanism and 8760has a 8761much larger code and data size. 8762 8763 Previous Release: 8764 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8765 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8766 Current Release: 8767 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8768 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8769 87702) iASL Compiler/Disassembler and Tools: 8771 8772iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8773methods. These objects are defined by "Windows Instrumentation", and are 8774not 8775part of the ACPI spec. ACPICA BZ 860. 8776 8777AcpiExec: added option to disable the memory tracking mechanism. The -dt 8778option will disable the tracking mechanism, which improves performance 8779considerably. 8780 8781AcpiExec: Restructured the command line options into -d (disable) and -e 8782(enable) options. 8783 8784---------------------------------------- 878528 April 2010. Summary of changes for version 20100428: 8786 87871) ACPI CA Core Subsystem: 8788 8789Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8790including FADT-based and GPE Block Devices, execute any _PRW methods in 8791the 8792new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8793runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8794immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8795Devices. Provides compatibility with other ACPI implementations. Two new 8796files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8797Moore. 8798 8799Fixed a regression introduced in version 20100331 within the table 8800manager 8801where initial table loading could fail. This was introduced in the fix 8802for 8803AcpiReallocateRootTable. Also, renamed some of fields in the table 8804manager 8805data structures to clarify their meaning and use. 8806 8807Fixed a possible allocation overrun during internal object copy in 8808AcpiUtCopySimpleObject. The original code did not correctly handle the 8809case 8810where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8811847. 8812 8813Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8814possible access beyond end-of-allocation. Also, now fully validate 8815descriptor 8816(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8817 8818Example Code and Data Size: These are the sizes for the OS-independent 8819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8820debug version of the code includes the debug output trace mechanism and 8821has a 8822much larger code and data size. 8823 8824 Previous Release: 8825 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8826 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8827 Current Release: 8828 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8829 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8830 88312) iASL Compiler/Disassembler and Tools: 8832 8833iASL: Implemented Min/Max/Len/Gran validation for address resource 8834descriptors. This change implements validation for the address fields 8835that 8836are common to all address-type resource descriptors. These checks are 8837implemented: Checks for valid Min/Max, length within the Min/Max window, 8838valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8839per 8840table 6-40 in the ACPI 4.0a specification. Also split the large 8841aslrestype1.c 8842and aslrestype2.c files into five new files. ACPICA BZ 840. 8843 8844iASL: Added support for the _Wxx predefined names. This support was 8845missing 8846and these names were not recognized by the compiler as valid predefined 8847names. ACPICA BZ 851. 8848 8849iASL: Added an error for all predefined names that are defined to return 8850no 8851value and thus must be implemented as Control Methods. These include all 8852of 8853the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8854names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8855 8856iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8857an 8858ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8859be 8860dynamically loaded via the Load() operator. Also cleaned up output for 8861the 8862- 8863ta and -tc options. ACPICA BZ 853. 8864 8865Tests: Added a new file with examples of extended iASL error checking. 8866Demonstrates the advanced error checking ability of the iASL compiler. 8867Available at tests/misc/badcode.asl. 8868 8869---------------------------------------- 887031 March 2010. Summary of changes for version 20100331: 8871 88721) ACPI CA Core Subsystem: 8873 8874Completed a major update for the GPE support in order to improve support 8875for 8876shared GPEs and to simplify both host OS and ACPICA code. Added a 8877reference 8878count mechanism to support shared GPEs that require multiple device 8879drivers. 8880Several external interfaces have changed. One external interface has been 8881removed. One new external interface was added. Most of the GPE external 8882interfaces now use the GPE spinlock instead of the events mutex (and the 8883Flags parameter for many GPE interfaces has been removed.) See the 8884updated 8885ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8886Rafael 8887Wysocki. ACPICA BZ 831. 8888 8889Changed: 8890 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8891Removed: 8892 AcpiSetGpeType 8893New: 8894 AcpiSetGpe 8895 8896Implemented write support for DataTable operation regions. These regions 8897are 8898defined via the DataTableRegion() operator. Previously, only read support 8899was 8900implemented. The ACPI specification allows DataTableRegions to be 8901read/write, 8902however. 8903 8904Implemented a new subsystem option to force a copy of the DSDT to local 8905memory. Optionally copy the entire DSDT to local memory (instead of 8906simply 8907mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8908replace 8909the original DSDT, creating the need for this option. Default is FALSE, 8910do 8911not copy the DSDT. 8912 8913Implemented detection of a corrupted or replaced DSDT. This change adds 8914support to detect a DSDT that has been corrupted and/or replaced from 8915outside 8916the OS (by firmware). This is typically catastrophic for the system, but 8917has 8918been seen on some machines. Once this problem has been detected, the DSDT 8919copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8920 8921Fixed two problems with AcpiReallocateRootTable during the root table 8922copy. 8923When copying the root table to the new allocation, the length used was 8924incorrect. The new size was used instead of the current table size, 8925meaning 8926too much data was copied. Also, the count of available slots for ACPI 8927tables 8928was not set correctly. Alexey Starikovskiy, Bob Moore. 8929 8930Example Code and Data Size: These are the sizes for the OS-independent 8931acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8932debug version of the code includes the debug output trace mechanism and 8933has a 8934much larger code and data size. 8935 8936 Previous Release: 8937 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8938 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8939 Current Release: 8940 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8941 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8942 89432) iASL Compiler/Disassembler and Tools: 8944 8945iASL: Implement limited typechecking for values returned from predefined 8946control methods. The type of any returned static (unnamed) object is now 8947validated. For example, Return(1). ACPICA BZ 786. 8948 8949iASL: Fixed a predefined name object verification regression. Fixes a 8950problem 8951introduced in version 20100304. An error is incorrectly generated if a 8952predefined name is declared as a static named object with a value defined 8953using the keywords "Zero", "One", or "Ones". Lin Ming. 8954 8955iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8956by 8957reducing the requested registry access rights. ACPICA BZ 842. 8958 8959Disassembler: fixed a possible fault when generating External() 8960statements. 8961Introduced in commit ae7d6fd: Properly handle externals with parent- 8962prefix 8963(carat). Fixes a string length allocation calculation. Lin Ming. 8964 8965---------------------------------------- 896604 March 2010. Summary of changes for version 20100304: 8967 89681) ACPI CA Core Subsystem: 8969 8970Fixed a possible problem with the AML Mutex handling function 8971AcpiExReleaseMutex where the function could fault under the very rare 8972condition when the interpreter has blocked, the interpreter lock is 8973released, 8974the interpreter is then reentered via the same thread, and attempts to 8975acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8976Lin 8977Ming. 8978 8979Implemented additional configuration support for the AML "Debug Object". 8980Output from the debug object can now be enabled via a global variable, 8981AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8982debugging. 8983This debug output is now available in the release version of ACPICA 8984instead 8985of just the debug version. Also, the entire debug output module can now 8986be 8987configured out of the ACPICA build if desired. One new file added, 8988executer/exdebug.c. Lin Ming, Bob Moore. 8989 8990Added header support for the ACPI MCHI table (Management Controller Host 8991Interface Table). This table was added in ACPI 4.0, but the defining 8992document 8993has only recently become available. 8994 8995Standardized output of integer values for ACPICA warnings/errors. Always 8996use 89970x prefix for hex output, always use %u for unsigned integer decimal 8998output. 8999Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 9000400 9001invocations.) These invocations were converted from the original 9002ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 9003 9004Example Code and Data Size: These are the sizes for the OS-independent 9005acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9006debug version of the code includes the debug output trace mechanism and 9007has a 9008much larger code and data size. 9009 9010 Previous Release: 9011 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 9012 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 9013 Current Release: 9014 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 9015 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 9016 90172) iASL Compiler/Disassembler and Tools: 9018 9019iASL: Implemented typechecking support for static (non-control method) 9020predefined named objects that are declared with the Name() operator. For 9021example, the type of this object is now validated to be of type Integer: 9022Name(_BBN, 1). This change migrates the compiler to using the core 9023predefined 9024name table instead of maintaining a local version. Added a new file, 9025aslpredef.c. ACPICA BZ 832. 9026 9027Disassembler: Added support for the ACPI 4.0 MCHI table. 9028 9029---------------------------------------- 903021 January 2010. Summary of changes for version 20100121: 9031 90321) ACPI CA Core Subsystem: 9033 9034Added the 2010 copyright to all module headers and signons. This affects 9035virtually every file in the ACPICA core subsystem, the iASL compiler, the 9036tools/utilities, and the test suites. 9037 9038Implemented a change to the AcpiGetDevices interface to eliminate 9039unnecessary 9040invocations of the _STA method. In the case where a specific _HID is 9041requested, do not run _STA until a _HID match is found. This eliminates 9042potentially dozens of _STA calls during a search for a particular 9043device/HID, 9044which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 9045 9046Implemented an additional repair for predefined method return values. 9047Attempt 9048to repair unexpected NULL elements within returned Package objects. 9049Create 9050an 9051Integer of value zero, a NULL String, or a zero-length Buffer as 9052appropriate. 9053ACPICA BZ 818. Lin Ming, Bob Moore. 9054 9055Removed the obsolete ACPI_INTEGER data type. This type was introduced as 9056the 9057code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 9058(with 905964-bit AML integers). It is now obsolete and this change removes it from 9060the 9061ACPICA code base, replaced by UINT64. The original typedef has been 9062retained 9063for now for compatibility with existing device driver code. ACPICA BZ 9064824. 9065 9066Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 9067in 9068the parse tree object. 9069 9070Added additional warning options for the gcc-4 generation. Updated the 9071source 9072accordingly. This includes some code restructuring to eliminate 9073unreachable 9074code, elimination of some gotos, elimination of unused return values, 9075some 9076additional casting, and removal of redundant declarations. 9077 9078Example Code and Data Size: These are the sizes for the OS-independent 9079acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9080debug version of the code includes the debug output trace mechanism and 9081has a 9082much larger code and data size. 9083 9084 Previous Release: 9085 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9086 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9087 Current Release: 9088 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 9089 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 9090 90912) iASL Compiler/Disassembler and Tools: 9092 9093No functional changes for this release. 9094 9095---------------------------------------- 909614 December 2009. Summary of changes for version 20091214: 9097 90981) ACPI CA Core Subsystem: 9099 9100Enhanced automatic data type conversions for predefined name repairs. 9101This 9102change expands the automatic repairs/conversions for predefined name 9103return 9104values to make Integers, Strings, and Buffers fully interchangeable. 9105Also, 9106a 9107Buffer can be converted to a Package of Integers if necessary. The 9108nsrepair.c 9109module was completely restructured. Lin Ming, Bob Moore. 9110 9111Implemented automatic removal of null package elements during predefined 9112name 9113repairs. This change will automatically remove embedded and trailing NULL 9114package elements from returned package objects that are defined to 9115contain 9116a 9117variable number of sub-packages. The driver is then presented with a 9118package 9119with no null elements to deal with. ACPICA BZ 819. 9120 9121Implemented a repair for the predefined _FDE and _GTM names. The expected 9122return value for both names is a Buffer of 5 DWORDs. This repair fixes 9123two 9124possible problems (both seen in the field), where a package of integers 9125is 9126returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 9127Kim. 9128 9129Implemented additional module-level code support. This change will 9130properly 9131execute module-level code that is not at the root of the namespace (under 9132a 9133Device object, etc.). Now executes the code within the current scope 9134instead 9135of the root. ACPICA BZ 762. Lin Ming. 9136 9137Fixed possible mutex acquisition errors when running _REG methods. Fixes 9138a 9139problem where mutex errors can occur when running a _REG method that is 9140in 9141the same scope as a method-defined operation region or an operation 9142region 9143under a module-level IF block. This type of code is rare, so the problem 9144has 9145not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 9146 9147Fixed a possible memory leak during module-level code execution. An 9148object 9149could be leaked for each block of executed module-level code if the 9150interpreter slack mode is enabled This change deletes any implicitly 9151returned 9152object from the module-level code block. Lin Ming. 9153 9154Removed messages for successful predefined repair(s). The repair 9155mechanism 9156was considered too wordy. Now, messages are only unconditionally emitted 9157if 9158the return object cannot be repaired. Existing messages for successful 9159repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 9160827. 9161 9162Example Code and Data Size: These are the sizes for the OS-independent 9163acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9164debug version of the code includes the debug output trace mechanism and 9165has a 9166much larger code and data size. 9167 9168 Previous Release: 9169 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9170 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9171 Current Release: 9172 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9173 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9174 91752) iASL Compiler/Disassembler and Tools: 9176 9177iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 9178files 9179were no longer automatically removed at the termination of the compile. 9180 9181acpiexec: Implemented the -f option to specify default region fill value. 9182This option specifies the value used to initialize buffers that simulate 9183operation regions. Default value is zero. Useful for debugging problems 9184that 9185depend on a specific initial value for a region or field. 9186 9187---------------------------------------- 918812 November 2009. Summary of changes for version 20091112: 9189 91901) ACPI CA Core Subsystem: 9191 9192Implemented a post-order callback to AcpiWalkNamespace. The existing 9193interface only has a pre-order callback. This change adds an additional 9194parameter for a post-order callback which will be more useful for bus 9195scans. 9196ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 9197 9198Modified the behavior of the operation region memory mapping cache for 9199SystemMemory. Ensure that the memory mappings created for operation 9200regions 9201do not cross 4K page boundaries. Crossing a page boundary while mapping 9202regions can cause kernel warnings on some hosts if the pages have 9203different 9204attributes. Such regions are probably BIOS bugs, and this is the 9205workaround. 9206Linux BZ 14445. Lin Ming. 9207 9208Implemented an automatic repair for predefined methods that must return 9209sorted lists. This change will repair (by sorting) packages returned by 9210_ALR, 9211_PSS, and _TSS. Drivers can now assume that the packages are correctly 9212sorted 9213and do not contain NULL package elements. Adds one new file, 9214namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 9215 9216Fixed a possible fault during predefined name validation if a return 9217Package 9218object contains NULL elements. Also adds a warning if a NULL element is 9219followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 9220may 9221include repair or removal of all such NULL elements where possible. 9222 9223Implemented additional module-level executable AML code support. This 9224change 9225will execute module-level code that is not at the root of the namespace 9226(under a Device object, etc.) at table load time. Module-level executable 9227AML 9228code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 9229 9230Implemented a new internal function to create Integer objects. This 9231function 9232simplifies miscellaneous object creation code. ACPICA BZ 823. 9233 9234Reduced the severity of predefined repair messages, Warning to Info. 9235Since 9236the object was successfully repaired, a warning is too severe. Reduced to 9237an 9238info message for now. These messages may eventually be changed to debug- 9239only. 9240ACPICA BZ 812. 9241 9242Example Code and Data Size: These are the sizes for the OS-independent 9243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9244debug version of the code includes the debug output trace mechanism and 9245has a 9246much larger code and data size. 9247 9248 Previous Release: 9249 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9250 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9251 Current Release: 9252 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9253 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9254 92552) iASL Compiler/Disassembler and Tools: 9256 9257iASL: Implemented Switch() with While(1) so that Break works correctly. 9258This 9259change correctly implements the Switch operator with a surrounding 9260While(1) 9261so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 9262 9263iASL: Added a message if a package initializer list is shorter than 9264package 9265length. Adds a new remark for a Package() declaration if an initializer 9266list 9267exists, but is shorter than the declared length of the package. Although 9268technically legal, this is probably a coding error and it is seen in the 9269field. ACPICA BZ 815. Lin Ming, Bob Moore. 9270 9271iASL: Fixed a problem where the compiler could fault after the maximum 9272number 9273of errors was reached (200). 9274 9275acpixtract: Fixed a possible warning for pointer cast if the compiler 9276warning 9277level set very high. 9278 9279---------------------------------------- 928013 October 2009. Summary of changes for version 20091013: 9281 92821) ACPI CA Core Subsystem: 9283 9284Fixed a problem where an Operation Region _REG method could be executed 9285more 9286than once. If a custom address space handler is installed by the host 9287before 9288the "initialize operation regions" phase of the ACPICA initialization, 9289any 9290_REG methods for that address space could be executed twice. This change 9291fixes the problem. ACPICA BZ 427. Lin Ming. 9292 9293Fixed a possible memory leak for the Scope() ASL operator. When the exact 9294invocation of "Scope(\)" is executed (change scope to root), one internal 9295operand object was leaked. Lin Ming. 9296 9297Implemented a run-time repair for the _MAT predefined method. If the _MAT 9298return value is defined as a Field object in the AML, and the field 9299size is less than or equal to the default width of an integer (32 or 930064),_MAT 9301can incorrectly return an Integer instead of a Buffer. ACPICA now 9302automatically repairs this problem. ACPICA BZ 810. 9303 9304Implemented a run-time repair for the _BIF and _BIX predefined methods. 9305The 9306"OEM Information" field is often incorrectly returned as an Integer with 9307value zero if the field is not supported by the platform. This is due to 9308an 9309ambiguity in the ACPI specification. The field should always be a string. 9310ACPICA now automatically repairs this problem by returning a NULL string 9311within the returned Package. ACPICA BZ 807. 9312 9313Example Code and Data Size: These are the sizes for the OS-independent 9314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9315debug version of the code includes the debug output trace mechanism and 9316has a 9317much larger code and data size. 9318 9319 Previous Release: 9320 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9321 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9322 Current Release: 9323 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9324 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9325 93262) iASL Compiler/Disassembler and Tools: 9327 9328Disassembler: Fixed a problem where references to external symbols that 9329contained one or more parent-prefixes (carats) were not handled 9330correctly, 9331possibly causing a fault. ACPICA BZ 806. Lin Ming. 9332 9333Disassembler: Restructured the code so that all functions that handle 9334external symbols are in a single module. One new file is added, 9335common/dmextern.c. 9336 9337AML Debugger: Added a max count argument for the Batch command (which 9338executes multiple predefined methods within the namespace.) 9339 9340iASL: Updated the compiler documentation (User Reference.) Available at 9341http://www.acpica.org/documentation/. ACPICA BZ 750. 9342 9343AcpiXtract: Updated for Lint and other formatting changes. Close all open 9344files. 9345 9346---------------------------------------- 934703 September 2009. Summary of changes for version 20090903: 9348 93491) ACPI CA Core Subsystem: 9350 9351For Windows Vista compatibility, added the automatic execution of an _INI 9352method located at the namespace root (\_INI). This method is executed at 9353table load time. This support is in addition to the automatic execution 9354of 9355\_SB._INI. Lin Ming. 9356 9357Fixed a possible memory leak in the interpreter for AML package objects 9358if 9359the package initializer list is longer than the defined size of the 9360package. 9361This apparently can only happen if the BIOS changes the package size on 9362the 9363fly (seen in a _PSS object), as ASL compilers do not allow this. The 9364interpreter will truncate the package to the defined size (and issue an 9365error 9366message), but previously could leave the extra objects undeleted if they 9367were 9368pre-created during the argument processing (such is the case if the 9369package 9370consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 9371 9372Fixed a problem seen when a Buffer or String is stored to itself via ASL. 9373This has been reported in the field. Previously, ACPICA would zero out 9374the 9375buffer/string. Now, the operation is treated as a noop. Provides Windows 9376compatibility. ACPICA BZ 803. Lin Ming. 9377 9378Removed an extraneous error message for ASL constructs of the form 9379Store(LocalX,LocalX) when LocalX is uninitialized. These curious 9380statements 9381are seen in many BIOSs and are once again treated as NOOPs and no error 9382is 9383emitted when they are encountered. ACPICA BZ 785. 9384 9385Fixed an extraneous warning message if a _DSM reserved method returns a 9386Package object. _DSM can return any type of object, so validation on the 9387return type cannot be performed. ACPICA BZ 802. 9388 9389Example Code and Data Size: These are the sizes for the OS-independent 9390acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9391debug version of the code includes the debug output trace mechanism and 9392has a 9393much larger code and data size. 9394 9395 Previous Release: 9396 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9397 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9398 Current Release: 9399 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9400 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9401 94022) iASL Compiler/Disassembler and Tools: 9403 9404iASL: Fixed a problem with the use of the Alias operator and Resource 9405Templates. The correct alias is now constructed and no error is emitted. 9406ACPICA BZ 738. 9407 9408iASL: Implemented the -I option to specify additional search directories 9409for 9410include files. Allows multiple additional search paths for include files. 9411Directories are searched in the order specified on the command line 9412(after 9413the local directory is searched.) ACPICA BZ 800. 9414 9415iASL: Fixed a problem where the full pathname for include files was not 9416emitted for warnings/errors. This caused the IDE support to not work 9417properly. ACPICA BZ 765. 9418 9419iASL: Implemented the -@ option to specify a Windows-style response file 9420containing additional command line options. ACPICA BZ 801. 9421 9422AcpiExec: Added support to load multiple AML files simultaneously (such 9423as 9424a 9425DSDT and multiple SSDTs). Also added support for wildcards within the AML 9426pathname. These features allow all machine tables to be easily loaded and 9427debugged together. ACPICA BZ 804. 9428 9429Disassembler: Added missing support for disassembly of HEST table Error 9430Bank 9431subtables. 9432 9433---------------------------------------- 943430 July 2009. Summary of changes for version 20090730: 9435 9436The ACPI 4.0 implementation for ACPICA is complete with this release. 9437 94381) ACPI CA Core Subsystem: 9439 9440ACPI 4.0: Added header file support for all new and changed ACPI tables. 9441Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 9442new 9443for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 9444BERT, 9445EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 9446There 9447have been some ACPI 4.0 changes to other existing tables. Split the large 9448actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 9449 9450ACPI 4.0: Implemented predefined name validation for all new names. There 9451are 945231 new names in ACPI 4.0. The predefined validation module was split into 9453two 9454files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 9455 9456Implemented support for so-called "module-level executable code". This is 9457executable AML code that exists outside of any control method and is 9458intended 9459to be executed at table load time. Although illegal since ACPI 2.0, this 9460type 9461of code still exists and is apparently still being created. Blocks of 9462this 9463code are now detected and executed as intended. Currently, the code 9464blocks 9465must exist under either an If, Else, or While construct; these are the 9466typical cases seen in the field. ACPICA BZ 762. Lin Ming. 9467 9468Implemented an automatic dynamic repair for predefined names that return 9469nested Package objects. This applies to predefined names that are defined 9470to 9471return a variable-length Package of sub-packages. If the number of sub- 9472packages is one, BIOS code is occasionally seen that creates a simple 9473single 9474package with no sub-packages. This code attempts to fix the problem by 9475wrapping a new package object around the existing package. These methods 9476can 9477be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 9478BZ 9479790. 9480 9481Fixed a regression introduced in 20090625 for the AcpiGetDevices 9482interface. 9483The _HID/_CID matching was broken and no longer matched IDs correctly. 9484ACPICA 9485BZ 793. 9486 9487Fixed a problem with AcpiReset where the reset would silently fail if the 9488register was one of the protected I/O ports. AcpiReset now bypasses the 9489port 9490validation mechanism. This may eventually be driven into the 9491AcpiRead/Write 9492interfaces. 9493 9494Fixed a regression related to the recent update of the AcpiRead/Write 9495interfaces. A sleep/suspend could fail if the optional PM2 Control 9496register 9497does not exist during an attempt to write the Bus Master Arbitration bit. 9498(However, some hosts already delete the code that writes this bit, and 9499the 9500code may in fact be obsolete at this date.) ACPICA BZ 799. 9501 9502Fixed a problem where AcpiTerminate could fault if inadvertently called 9503twice 9504in succession. ACPICA BZ 795. 9505 9506Example Code and Data Size: These are the sizes for the OS-independent 9507acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9508debug version of the code includes the debug output trace mechanism and 9509has a 9510much larger code and data size. 9511 9512 Previous Release: 9513 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9514 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9515 Current Release: 9516 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9517 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9518 95192) iASL Compiler/Disassembler and Tools: 9520 9521ACPI 4.0: Implemented disassembler support for all new ACPI tables and 9522changes to existing tables. ACPICA BZ 775. 9523 9524---------------------------------------- 952525 June 2009. Summary of changes for version 20090625: 9526 9527The ACPI 4.0 Specification was released on June 16 and is available at 9528www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 9529continue for the next few releases. 9530 95311) ACPI CA Core Subsystem: 9532 9533ACPI 4.0: Implemented interpreter support for the IPMI operation region 9534address space. Includes support for bi-directional data buffers and an 9535IPMI 9536address space handler (to be installed by an IPMI device driver.) ACPICA 9537BZ 9538773. Lin Ming. 9539 9540ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 9541Includes 9542support in both the header files and the disassembler. 9543 9544Completed a major update for the AcpiGetObjectInfo external interface. 9545Changes include: 9546 - Support for variable, unlimited length HID, UID, and CID strings. 9547 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 9548etc.) 9549 - Call the _SxW power methods on behalf of a device object. 9550 - Determine if a device is a PCI root bridge. 9551 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 9552These changes will require an update to all callers of this interface. 9553See 9554the updated ACPICA Programmer Reference for details. One new source file 9555has 9556been added - utilities/utids.c. ACPICA BZ 368, 780. 9557 9558Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 9559transfers. The Value parameter has been extended from 32 bits to 64 bits 9560in 9561order to support new ACPI 4.0 tables. These changes will require an 9562update 9563to 9564all callers of these interfaces. See the ACPICA Programmer Reference for 9565details. ACPICA BZ 768. 9566 9567Fixed several problems with AcpiAttachData. The handler was not invoked 9568when 9569the host node was deleted. The data sub-object was not automatically 9570deleted 9571when the host node was deleted. The interface to the handler had an 9572unused 9573parameter, this was removed. ACPICA BZ 778. 9574 9575Enhanced the function that dumps ACPI table headers. All non-printable 9576characters in the string fields are now replaced with '?' (Signature, 9577OemId, 9578OemTableId, and CompilerId.) ACPI tables with non-printable characters in 9579these fields are occasionally seen in the field. ACPICA BZ 788. 9580 9581Fixed a problem with predefined method repair code where the code that 9582attempts to repair/convert an object of incorrect type is only executed 9583on 9584the first time the predefined method is called. The mechanism that 9585disables 9586warnings on subsequent calls was interfering with the repair mechanism. 9587ACPICA BZ 781. 9588 9589Fixed a possible memory leak in the predefined validation/repair code 9590when 9591a 9592buffer is automatically converted to an expected string object. 9593 9594Removed obsolete 16-bit files from the distribution and from the current 9595git 9596tree head. ACPICA BZ 776. 9597 9598Example Code and Data Size: These are the sizes for the OS-independent 9599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9600debug version of the code includes the debug output trace mechanism and 9601has a 9602much larger code and data size. 9603 9604 Previous Release: 9605 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9606 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9607 Current Release: 9608 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9609 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9610 96112) iASL Compiler/Disassembler and Tools: 9612 9613ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9614operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9615 9616ACPI 4.0: iASL - implemented compile-time validation support for all new 9617predefined names and control methods (31 total). ACPICA BZ 769. 9618 9619---------------------------------------- 962021 May 2009. Summary of changes for version 20090521: 9621 96221) ACPI CA Core Subsystem: 9623 9624Disabled the preservation of the SCI enable bit in the PM1 control 9625register. 9626The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9627to 9628be 9629a "preserved" bit - "OSPM always preserves this bit position", section 96304.7.3.2.1. However, some machines fail if this bit is in fact preserved 9631because the bit needs to be explicitly set by the OS as a workaround. No 9632machines fail if the bit is not preserved. Therefore, ACPICA no longer 9633attempts to preserve this bit. 9634 9635Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9636incorrectly formed _PRT package could cause a fault. Added validation to 9637ensure that each package element is actually a sub-package. 9638 9639Implemented a new interface to install or override a single control 9640method, 9641AcpiInstallMethod. This interface is useful when debugging in order to 9642repair 9643an existing method or to install a missing method without having to 9644override 9645the entire ACPI table. See the ACPICA Programmer Reference for use and 9646examples. Lin Ming, Bob Moore. 9647 9648Fixed several reference count issues with the DdbHandle object that is 9649created from a Load or LoadTable operator. Prevent premature deletion of 9650the 9651object. Also, mark the object as invalid once the table has been 9652unloaded. 9653This is needed because the handle itself may not be deleted after the 9654table 9655unload, depending on whether it has been stored in a named object by the 9656caller. Lin Ming. 9657 9658Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9659mutexes of the same sync level are acquired but then not released in 9660strict 9661opposite order, the internally maintained Current Sync Level becomes 9662confused 9663and can cause subsequent execution errors. ACPICA BZ 471. 9664 9665Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9666specification has been changed to make the SyncLevel for mutex objects 9667more 9668useful. When releasing a mutex, the SyncLevel of the mutex must now be 9669the 9670same as the current sync level. This makes more sense than the previous 9671rule 9672(SyncLevel less than or equal). This change updates the code to match the 9673specification. 9674 9675Fixed a problem with the local version of the AcpiOsPurgeCache function. 9676The 9677(local) cache must be locked during all cache object deletions. Andrew 9678Baumann. 9679 9680Updated the Load operator to use operation region interfaces. This 9681replaces 9682direct memory mapping with region access calls. Now, all region accesses 9683go 9684through the installed region handler as they should. 9685 9686Simplified and optimized the NsGetNextNode function. Reduced parameter 9687count 9688and reduced code for this frequently used function. 9689 9690Example Code and Data Size: These are the sizes for the OS-independent 9691acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9692debug version of the code includes the debug output trace mechanism and 9693has a 9694much larger code and data size. 9695 9696 Previous Release: 9697 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9698 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9699 Current Release: 9700 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9701 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9702 97032) iASL Compiler/Disassembler and Tools: 9704 9705Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9706problems 9707with sub-table disassembly and handling invalid sub-tables. Attempt 9708recovery 9709after an invalid sub-table ID. 9710 9711---------------------------------------- 971222 April 2009. Summary of changes for version 20090422: 9713 97141) ACPI CA Core Subsystem: 9715 9716Fixed a compatibility issue with the recently released I/O port 9717protection 9718mechanism. For windows compatibility, 1) On a port protection violation, 9719simply ignore the request and do not return an exception (allow the 9720control 9721method to continue execution.) 2) If only part of the request overlaps a 9722protected port, read/write the individual ports that are not protected. 9723Linux 9724BZ 13036. Lin Ming 9725 9726Enhanced the execution of the ASL/AML BreakPoint operator so that it 9727actually 9728breaks into the AML debugger if the debugger is present. This matches the 9729ACPI-defined behavior. 9730 9731Fixed several possible warnings related to the use of the configurable 9732ACPI_THREAD_ID. This type can now be configured as either an integer or a 9733pointer with no warnings. Also fixes several warnings in printf-like 9734statements for the 64-bit build when the type is configured as a pointer. 9735ACPICA BZ 766, 767. 9736 9737Fixed a number of possible warnings when compiling with gcc 4+ (depending 9738on 9739warning options.) Examples include printf formats, aliasing, unused 9740globals, 9741missing prototypes, missing switch default statements, use of non-ANSI 9742library functions, use of non-ANSI constructs. See generate/unix/Makefile 9743for 9744a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9745 9746Example Code and Data Size: These are the sizes for the OS-independent 9747acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9748debug version of the code includes the debug output trace mechanism and 9749has a 9750much larger code and data size. 9751 9752 Previous Release: 9753 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9754 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9755 Current Release: 9756 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9757 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9758 97592) iASL Compiler/Disassembler and Tools: 9760 9761iASL: Fixed a generation warning from Bison 2.3 and fixed several 9762warnings 9763on 9764the 64-bit build. 9765 9766iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9767not 9768correctly digest Windows/DOS formatted files (with CR/LF). 9769 9770iASL: Added a new option for "quiet mode" (-va) that produces only the 9771compilation summary, not individual errors and warnings. Useful for large 9772batch compilations. 9773 9774AcpiExec: Implemented a new option (-z) to enable a forced 9775semaphore/mutex 9776timeout that can be used to detect hang conditions during execution of 9777AML 9778code (includes both internal semaphores and AML-defined mutexes and 9779events.) 9780 9781Added new makefiles for the generation of acpica in a generic unix-like 9782environment. These makefiles are intended to generate the acpica tools 9783and 9784utilities from the original acpica git source tree structure. 9785 9786Test Suites: Updated and cleaned up the documentation files. Updated the 9787copyrights to 2009, affecting all source files. Use the new version of 9788iASL 9789with quiet mode. Increased the number of available semaphores in the 9790Windows 9791OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9792added 9793an alternate implementation of the semaphore timeout to allow aslts to 9794execute fully on Cygwin. 9795 9796---------------------------------------- 979720 March 2009. Summary of changes for version 20090320: 9798 97991) ACPI CA Core Subsystem: 9800 9801Fixed a possible race condition between AcpiWalkNamespace and dynamic 9802table 9803unloads. Added a reader/writer locking mechanism to allow multiple 9804concurrent 9805namespace walks (readers), but block a dynamic table unload until it can 9806gain 9807exclusive write access to the namespace. This fixes a problem where a 9808table 9809unload could (possibly catastrophically) delete the portion of the 9810namespace 9811that is currently being examined by a walk. Adds a new file, utlock.c, 9812that 9813implements the reader/writer lock mechanism. ACPICA BZ 749. 9814 9815Fixed a regression introduced in version 20090220 where a change to the 9816FADT 9817handling could cause the ACPICA subsystem to access non-existent I/O 9818ports. 9819 9820Modified the handling of FADT register and table (FACS/DSDT) addresses. 9821The 9822FADT can contain both 32-bit and 64-bit versions of these addresses. 9823Previously, the 64-bit versions were favored, meaning that if both 32 and 982464 9825versions were valid, but not equal, the 64-bit version was used. This was 9826found to cause some machines to fail. Now, in this case, the 32-bit 9827version 9828is used instead. This now matches the Windows behavior. 9829 9830Implemented a new mechanism to protect certain I/O ports. Provides 9831Microsoft 9832compatibility and protects the standard PC I/O ports from access via AML 9833code. Adds a new file, hwvalid.c 9834 9835Fixed a possible extraneous warning message from the FADT support. The 9836message warns of a 32/64 length mismatch between the legacy and GAS 9837definitions for a register. 9838 9839Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9840is 9841made obsolete by the port protection mechanism above. It was previously 9842used 9843to validate the entire address range of an operation region, which could 9844be 9845incorrect if the range included illegal ports, but fields within the 9846operation region did not actually access those ports. Validation is now 9847performed on a per-field basis instead of the entire region. 9848 9849Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9850Ignored bits must be "preserved" according to the ACPI spec. Usually, 9851this 9852means a read/modify/write when writing to the register. However, for 9853status 9854registers, writing a one means clear the event. Writing a zero means 9855preserve 9856the event (do not clear.) This behavior is clarified in the ACPI 4.0 9857spec, 9858and the ACPICA code now simply always writes a zero to the ignored bit. 9859 9860Modified the handling of ignored bits for the PM1 A/B Control Registers. 9861As 9862per the ACPI specification, for the control registers, preserve 9863(read/modify/write) all bits that are defined as either reserved or 9864ignored. 9865 9866Updated the handling of write-only bits in the PM1 A/B Control Registers. 9867When reading the register, zero the write-only bits as per the ACPI spec. 9868ACPICA BZ 443. Lin Ming. 9869 9870Removed "Linux" from the list of supported _OSI strings. Linux no longer 9871wants to reply true to this request. The Windows strings are the only 9872paths 9873through the AML that are tested and known to work properly. 9874 9875 Previous Release: 9876 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9877 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9878 Current Release: 9879 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9880 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9881 98822) iASL Compiler/Disassembler and Tools: 9883 9884Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9885and 9886aetables.c 9887 9888---------------------------------------- 988920 February 2009. Summary of changes for version 20090220: 9890 98911) ACPI CA Core Subsystem: 9892 9893Optimized the ACPI register locking. Removed locking for reads from the 9894ACPI 9895bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9896is 9897not required when reading the single-bit registers. The 9898AcpiGetRegisterUnlocked function is no longer needed and has been 9899removed. 9900This will improve performance for reads on these registers. ACPICA BZ 9901760. 9902 9903Fixed the parameter validation for AcpiRead/Write. Now return 9904AE_BAD_PARAMETER if the input register pointer is null, and 9905AE_BAD_ADDRESS 9906if 9907the register has an address of zero. Previously, these cases simply 9908returned 9909AE_OK. For optional registers such as PM1B status/enable/control, the 9910caller 9911should check for a valid register address before calling. ACPICA BZ 748. 9912 9913Renamed the external ACPI bit register access functions. Renamed 9914AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9915functions. The new names are AcpiReadBitRegister and 9916AcpiWriteBitRegister. 9917Also, restructured the code for these functions by simplifying the code 9918path 9919and condensing duplicate code to reduce code size. 9920 9921Added new functions to transparently handle the possibly split PM1 A/B 9922registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9923functions 9924now handle the split registers for PM1 Status, Enable, and Control. 9925ACPICA 9926BZ 9927746. 9928 9929Added a function to handle the PM1 control registers, 9930AcpiHwWritePm1Control. 9931This function writes both of the PM1 control registers (A/B). These 9932registers 9933are different than the PM1 A/B status and enable registers in that 9934different 9935values can be written to the A/B registers. Most notably, the SLP_TYP 9936bits 9937can be different, as per the values returned from the _Sx predefined 9938methods. 9939 9940Removed an extra register write within AcpiHwClearAcpiStatus. This 9941function 9942was writing an optional PM1B status register twice. The existing call to 9943the 9944low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9945A/B 9946register. ACPICA BZ 751. 9947 9948Split out the PM1 Status registers from the FADT. Added new globals for 9949these 9950registers (A/B), similar to the way the PM1 Enable registers are handled. 9951Instead of overloading the FADT Event Register blocks. This makes the 9952code 9953clearer and less prone to error. 9954 9955Fixed the warning message for when the platform contains too many ACPI 9956tables 9957for the default size of the global root table data structure. The 9958calculation 9959for the truncation value was incorrect. 9960 9961Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9962obsolete macro, since it is now a simple reference to ->common.type. 9963There 9964were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9965 9966Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9967TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9968simply SLEEP_TYPE. ACPICA BZ 754. 9969 9970Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9971function is only needed on 64-bit host operating systems and is thus not 9972included for 32-bit hosts. 9973 9974Debug output: print the input and result for invocations of the _OSI 9975reserved 9976control method via the ACPI_LV_INFO debug level. Also, reduced some of 9977the 9978verbosity of this debug level. Len Brown. 9979 9980Example Code and Data Size: These are the sizes for the OS-independent 9981acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9982debug version of the code includes the debug output trace mechanism and 9983has a 9984much larger code and data size. 9985 9986 Previous Release: 9987 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9988 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9989 Current Release: 9990 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9991 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9992 99932) iASL Compiler/Disassembler and Tools: 9994 9995Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9996various legal performance profiles. 9997 9998---------------------------------------- 999923 January 2009. Summary of changes for version 20090123: 10000 100011) ACPI CA Core Subsystem: 10002 10003Added the 2009 copyright to all module headers and signons. This affects 10004virtually every file in the ACPICA core subsystem, the iASL compiler, and 10005the tools/utilities. 10006 10007Implemented a change to allow the host to override any ACPI table, 10008including 10009dynamically loaded tables. Previously, only the DSDT could be replaced by 10010the 10011host. With this change, the AcpiOsTableOverride interface is called for 10012each 10013table found in the RSDT/XSDT during ACPICA initialization, and also 10014whenever 10015a table is dynamically loaded via the AML Load operator. 10016 10017Updated FADT flag definitions, especially the Boot Architecture flags. 10018 10019Debugger: For the Find command, automatically pad the input ACPI name 10020with 10021underscores if the name is shorter than 4 characters. This enables a 10022match 10023with the actual namespace entry which is itself padded with underscores. 10024 10025Example Code and Data Size: These are the sizes for the OS-independent 10026acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10027debug version of the code includes the debug output trace mechanism and 10028has a 10029much larger code and data size. 10030 10031 Previous Release: 10032 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 10033 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 10034 Current Release: 10035 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 10036 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 10037 100382) iASL Compiler/Disassembler and Tools: 10039 10040Fix build error under Bison-2.4. 10041 10042Disassembler: Enhanced FADT support. Added decoding of the Boot 10043Architecture 10044flags. Now decode all flags, regardless of the FADT version. Flag output 10045includes the FADT version which first defined each flag. 10046 10047The iASL -g option now dumps the RSDT to a file (in addition to the FADT 10048and 10049DSDT). Windows only. 10050 10051---------------------------------------- 1005204 December 2008. Summary of changes for version 20081204: 10053 100541) ACPI CA Core Subsystem: 10055 10056The ACPICA Programmer Reference has been completely updated and revamped 10057for 10058this release. This includes updates to the external interfaces, OSL 10059interfaces, the overview sections, and the debugger reference. 10060 10061Several new ACPICA interfaces have been implemented and documented in the 10062programmer reference: 10063AcpiReset - Writes the reset value to the FADT-defined reset register. 10064AcpiDisableAllGpes - Disable all available GPEs. 10065AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 10066AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 10067AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 10068AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 10069AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 10070 10071Most of the public ACPI hardware-related interfaces have been moved to a 10072new 10073file, components/hardware/hwxface.c 10074 10075Enhanced the FADT parsing and low-level ACPI register access: The ACPI 10076register lengths within the FADT are now used, and the low level ACPI 10077register access no longer hardcodes the ACPI register lengths. Given that 10078there may be some risk in actually trusting the FADT register lengths, a 10079run- 10080time option was added to fall back to the default hardcoded lengths if 10081the 10082FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 10083option is set to true for now, and a warning is issued if a suspicious 10084FADT 10085register length is overridden with the default value. 10086 10087Fixed a reference count issue in NsRepairObject. This problem was 10088introduced 10089in version 20081031 as part of a fix to repair Buffer objects within 10090Packages. Lin Ming. 10091 10092Added semaphore support to the Linux/Unix application OS-services layer 10093(OSL). ACPICA BZ 448. Lin Ming. 10094 10095Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 10096will 10097be implemented in the OSL, or will binary semaphores be used instead. 10098 10099Example Code and Data Size: These are the sizes for the OS-independent 10100acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10101debug version of the code includes the debug output trace mechanism and 10102has a 10103much larger code and data size. 10104 10105 Previous Release: 10106 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10107 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10108 Current Release: 10109 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 10110 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 10111 101122) iASL Compiler/Disassembler and Tools: 10113 10114iASL: Completed the '-e' option to include additional ACPI tables in 10115order 10116to 10117aid with disassembly and External statement generation. ACPICA BZ 742. 10118Lin 10119Ming. 10120 10121iASL: Removed the "named object in while loop" error. The compiler cannot 10122determine how many times a loop will execute. ACPICA BZ 730. 10123 10124Disassembler: Implemented support for FADT revision 2 (MS extension). 10125ACPICA 10126BZ 743. 10127 10128Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 10129MCFG). 10130 10131---------------------------------------- 1013231 October 2008. Summary of changes for version 20081031: 10133 101341) ACPI CA Core Subsystem: 10135 10136Restructured the ACPICA header files into public/private. acpi.h now 10137includes 10138only the "public" acpica headers. All other acpica headers are "private" 10139and 10140should not be included by acpica users. One new file, accommon.h is used 10141to 10142include the commonly used private headers for acpica code generation. 10143Future 10144plans include moving all private headers to a new subdirectory. 10145 10146Implemented an automatic Buffer->String return value conversion for 10147predefined ACPI methods. For these methods (such as _BIF), added 10148automatic 10149conversion for return objects that are required to be a String, but a 10150Buffer 10151was found instead. This can happen when reading string battery data from 10152an 10153operation region, because it used to be difficult to convert the data 10154from 10155buffer to string from within the ASL. Ensures that the host OS is 10156provided 10157with a valid null-terminated string. Linux BZ 11822. 10158 10159Updated the FACS waking vector interfaces. Split 10160AcpiSetFirmwareWakingVector 10161into two: one for the 32-bit vector, another for the 64-bit vector. This 10162is 10163required because the host OS must setup the wake much differently for 10164each 10165vector (real vs. protected mode, etc.) and the interface itself should 10166not 10167be 10168deciding which vector to use. Also, eliminated the 10169GetFirmwareWakingVector 10170interface, as it served no purpose (only the firmware reads the vector, 10171OS 10172only writes the vector.) ACPICA BZ 731. 10173 10174Implemented a mechanism to escape infinite AML While() loops. Added a 10175loop 10176counter to force exit from AML While loops if the count becomes too 10177large. 10178This can occur in poorly written AML when the hardware does not respond 10179within a while loop and the loop does not implement a timeout. The 10180maximum 10181loop count is configurable. A new exception code is returned when a loop 10182is 10183broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 10184 10185Optimized the execution of AML While loops. Previously, a control state 10186object was allocated and freed for each execution of the loop. The 10187optimization is to simply reuse the control state for each iteration. 10188This 10189speeds up the raw loop execution time by about 5%. 10190 10191Enhanced the implicit return mechanism. For Windows compatibility, return 10192an 10193implicit integer of value zero for methods that contain no executable 10194code. 10195Such methods are seen in the field as stubs (presumably), and can cause 10196drivers to fail if they expect a return value. Lin Ming. 10197 10198Allow multiple backslashes as root prefixes in namepaths. In a fully 10199qualified namepath, allow multiple backslash prefixes. This can happen 10200(and 10201is seen in the field) because of the use of a double-backslash in strings 10202(since backslash is the escape character) causing confusion. ACPICA BZ 10203739 10204Lin Ming. 10205 10206Emit a warning if two different FACS or DSDT tables are discovered in the 10207FADT. Checks if there are two valid but different addresses for the FACS 10208and 10209DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 10210 10211Consolidated the method argument count validation code. Merged the code 10212that 10213validates control method argument counts into the predefined validation 10214module. Eliminates possible multiple warnings for incorrect argument 10215counts. 10216 10217Implemented ACPICA example code. Includes code for ACPICA initialization, 10218handler installation, and calling a control method. Available at 10219source/tools/examples. 10220 10221Added a global pointer for FACS table to simplify internal FACS access. 10222Use 10223the global pointer instead of using AcpiGetTableByIndex for each FACS 10224access. 10225This simplifies the code for the Global Lock and the Firmware Waking 10226Vector(s). 10227 10228Example Code and Data Size: These are the sizes for the OS-independent 10229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10230debug version of the code includes the debug output trace mechanism and 10231has a 10232much larger code and data size. 10233 10234 Previous Release: 10235 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10236 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10237 Current Release: 10238 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10239 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10240 102412) iASL Compiler/Disassembler and Tools: 10242 10243iASL: Improved disassembly of external method calls. Added the -e option 10244to 10245allow the inclusion of additional ACPI tables to help with the 10246disassembly 10247of 10248method invocations and the generation of external declarations during the 10249disassembly. Certain external method invocations cannot be disassembled 10250properly without the actual declaration of the method. Use the -e option 10251to 10252include the table where the external method(s) are actually declared. 10253Most 10254useful for disassembling SSDTs that make method calls back to the master 10255DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 10256-d 10257-e dsdt.aml ssdt1.aml 10258 10259iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 10260problem where the use of an alias within a namepath would result in a not 10261found error or cause the compiler to fault. Also now allows forward 10262references from the Alias operator itself. ACPICA BZ 738. 10263 10264---------------------------------------- 1026526 September 2008. Summary of changes for version 20080926: 10266 102671) ACPI CA Core Subsystem: 10268 10269Designed and implemented a mechanism to validate predefined ACPI methods 10270and 10271objects. This code validates the predefined ACPI objects (objects whose 10272names 10273start with underscore) that appear in the namespace, at the time they are 10274evaluated. The argument count and the type of the returned object are 10275validated against the ACPI specification. The purpose of this validation 10276is 10277to detect problems with the BIOS-implemented predefined ACPI objects 10278before 10279the results are returned to the ACPI-related drivers. Future enhancements 10280may 10281include actual repair of incorrect return objects where possible. Two new 10282files are nspredef.c and acpredef.h. 10283 10284Fixed a fault in the AML parser if a memory allocation fails during the 10285Op 10286completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 10287 10288Fixed an issue with implicit return compatibility. This change improves 10289the 10290implicit return mechanism to be more compatible with the MS interpreter. 10291Lin 10292Ming, ACPICA BZ 349. 10293 10294Implemented support for zero-length buffer-to-string conversions. Allow 10295zero 10296length strings during interpreter buffer-to-string conversions. For 10297example, 10298during the ToDecimalString and ToHexString operators, as well as implicit 10299conversions. Fiodor Suietov, ACPICA BZ 585. 10300 10301Fixed two possible memory leaks in the error exit paths of 10302AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 10303are 10304similar in that they use a stack of state objects in order to eliminate 10305recursion. The stack must be fully unwound and deallocated if an error 10306occurs. Lin Ming. ACPICA BZ 383. 10307 10308Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 10309global 10310ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 10311Moore ACPICA BZ 442. 10312 10313Removed the obsolete version number in module headers. Removed the 10314"$Revision" number that appeared in each module header. This version 10315number 10316was useful under SourceSafe and CVS, but has no meaning under git. It is 10317not 10318only incorrect, it could also be misleading. 10319 10320Example Code and Data Size: These are the sizes for the OS-independent 10321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10322debug version of the code includes the debug output trace mechanism and 10323has a 10324much larger code and data size. 10325 10326 Previous Release: 10327 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10328 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10329 Current Release: 10330 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10331 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10332 10333---------------------------------------- 1033429 August 2008. Summary of changes for version 20080829: 10335 103361) ACPI CA Core Subsystem: 10337 10338Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 10339Reference. Changes include the elimination of cheating on the Object 10340field 10341for the DdbHandle subtype, addition of a reference class field to 10342differentiate the various reference types (instead of an AML opcode), and 10343the 10344cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 10345 10346Reduce an error to a warning for an incorrect method argument count. 10347Previously aborted with an error if too few arguments were passed to a 10348control method via the external ACPICA interface. Now issue a warning 10349instead 10350and continue. Handles the case where the method inadvertently declares 10351too 10352many arguments, but does not actually use the extra ones. Applies mainly 10353to 10354the predefined methods. Lin Ming. Linux BZ 11032. 10355 10356Disallow the evaluation of named object types with no intrinsic value. 10357Return 10358AE_TYPE for objects that have no value and therefore evaluation is 10359undefined: 10360Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 10361of 10362these types were allowed, but an exception would be generated at some 10363point 10364during the evaluation. Now, the error is generated up front. 10365 10366Fixed a possible memory leak in the AcpiNsGetExternalPathname function 10367(nsnames.c). Fixes a leak in the error exit path. 10368 10369Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 10370debug 10371levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 10372ACPI_EXCEPTION 10373interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 10374ACPI_LV_EVENTS. 10375 10376Removed obsolete and/or unused exception codes from the acexcep.h header. 10377There is the possibility that certain device drivers may be affected if 10378they 10379use any of these exceptions. 10380 10381The ACPICA documentation has been added to the public git source tree, 10382under 10383acpica/documents. Included are the ACPICA programmer reference, the iASL 10384compiler reference, and the changes.txt release logfile. 10385 10386Example Code and Data Size: These are the sizes for the OS-independent 10387acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10388debug version of the code includes the debug output trace mechanism and 10389has a 10390much larger code and data size. 10391 10392 Previous Release: 10393 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10394 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10395 Current Release: 10396 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10397 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10398 103992) iASL Compiler/Disassembler and Tools: 10400 10401Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 10402defines _SCP with 3 arguments. Previous versions defined it with only 1 10403argument. iASL now allows both definitions. 10404 10405iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 10406zero- 10407length subtables when disassembling ACPI tables. Also fixed a couple of 10408errors where a full 16-bit table type field was not extracted from the 10409input 10410properly. 10411 10412acpisrc: Improve comment counting mechanism for generating source code 10413statistics. Count first and last lines of multi-line comments as 10414whitespace, 10415not comment lines. Handle Linux legal header in addition to standard 10416acpica 10417header. 10418 10419---------------------------------------- 10420 1042129 July 2008. Summary of changes for version 20080729: 10422 104231) ACPI CA Core Subsystem: 10424 10425Fix a possible deadlock in the GPE dispatch. Remove call to 10426AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 10427attempt 10428to acquire the GPE lock but can deadlock since the GPE lock is already 10429held 10430at dispatch time. This code was introduced in version 20060831 as a 10431response 10432to Linux BZ 6881 and has since been removed from Linux. 10433 10434Add a function to dereference returned reference objects. Examines the 10435return 10436object from a call to AcpiEvaluateObject. Any Index or RefOf references 10437are 10438automatically dereferenced in an attempt to return something useful 10439(these 10440reference types cannot be converted into an external ACPI_OBJECT.) 10441Provides 10442MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 10443 10444x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 10445subtables for the MADT and one new subtable for the SRAT. Includes 10446disassembler and AcpiSrc support. Data from the Intel 64 Architecture 10447x2APIC 10448Specification, June 2008. 10449 10450Additional error checking for pathname utilities. Add error check after 10451all 10452calls to AcpiNsGetPathnameLength. Add status return from 10453AcpiNsBuildExternalPath and check after all calls. Add parameter 10454validation 10455to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 10456 10457Return status from the global init function AcpiUtGlobalInitialize. This 10458is 10459used by both the kernel subsystem and the utilities such as iASL 10460compiler. 10461The function could possibly fail when the caches are initialized. Yang 10462Yi. 10463 10464Add a function to decode reference object types to strings. Created for 10465improved error messages. 10466 10467Improve object conversion error messages. Better error messages during 10468object 10469conversion from internal to the external ACPI_OBJECT. Used for external 10470calls 10471to AcpiEvaluateObject. 10472 10473Example Code and Data Size: These are the sizes for the OS-independent 10474acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10475debug version of the code includes the debug output trace mechanism and 10476has a 10477much larger code and data size. 10478 10479 Previous Release: 10480 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10481 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10482 Current Release: 10483 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10484 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10485 104862) iASL Compiler/Disassembler and Tools: 10487 10488Debugger: fix a possible hang when evaluating non-methods. Fixes a 10489problem 10490introduced in version 20080701. If the object being evaluated (via 10491execute 10492command) is not a method, the debugger can hang while trying to obtain 10493non- 10494existent parameters. 10495 10496iASL: relax error for using reserved "_T_x" identifiers. These names can 10497appear in a disassembled ASL file if they were emitted by the original 10498compiler. Instead of issuing an error or warning and forcing the user to 10499manually change these names, issue a remark instead. 10500 10501iASL: error if named object created in while loop. Emit an error if any 10502named 10503object is created within a While loop. If allowed, this code will 10504generate 10505a 10506run-time error on the second iteration of the loop when an attempt is 10507made 10508to 10509create the same named object twice. ACPICA bugzilla 730. 10510 10511iASL: Support absolute pathnames for include files. Add support for 10512absolute 10513pathnames within the Include operator. previously, only relative 10514pathnames 10515were supported. 10516 10517iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 10518Descriptor. 10519The ACPI spec requires one interrupt minimum. BZ 423 10520 10521iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 10522Handles the case for the Interrupt Resource Descriptor where 10523the ResourceSource argument is omitted but ResourceSourceIndex 10524is present. Now leave room for the Index. BZ 426 10525 10526iASL: Prevent error message if CondRefOf target does not exist. Fixes 10527cases 10528where an error message is emitted if the target does not exist. BZ 516 10529 10530iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 10531(get ACPI tables on Windows). This was apparently broken in version 1053220070919. 10533 10534AcpiXtract: Handle EOF while extracting data. Correctly handle the case 10535where 10536the EOF happens immediately after the last table in the input file. Print 10537completion message. Previously, no message was displayed in this case. 10538 10539---------------------------------------- 1054001 July 2008. Summary of changes for version 20080701: 10541 105420) Git source tree / acpica.org 10543 10544Fixed a problem where a git-clone from http would not transfer the entire 10545source tree. 10546 105471) ACPI CA Core Subsystem: 10548 10549Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 10550enable bit. Now performs a read-change-write of the enable register 10551instead 10552of simply writing out the cached enable mask. This will prevent 10553inadvertent 10554enabling of GPEs if a rogue GPE is received during initialization (before 10555GPE 10556handlers are installed.) 10557 10558Implemented a copy for dynamically loaded tables. Previously, dynamically 10559loaded tables were simply mapped - but on some machines this memory is 10560corrupted after suspend. Now copy the table to a local buffer. For the 10561OpRegion case, added checksum verify. Use the table length from the table 10562header, not the region length. For the Buffer case, use the table length 10563also. Dennis Noordsij, Bob Moore. BZ 10734 10564 10565Fixed a problem where the same ACPI table could not be dynamically loaded 10566and 10567unloaded more than once. Without this change, a table cannot be loaded 10568again 10569once it has been loaded/unloaded one time. The current mechanism does not 10570unregister a table upon an unload. During a load, if the same table is 10571found, 10572this no longer returns an exception. BZ 722 10573 10574Fixed a problem where the wrong descriptor length was calculated for the 10575EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 10576EndTag 10577are calculated as 12 bytes long, but the actual length in the internal 10578descriptor is 16 because of the round-up to 8 on the 64-bit build. 10579Reported 10580by Linn Crosetto. BZ 728 10581 10582Fixed a possible memory leak in the Unload operator. The DdbHandle 10583returned 10584by Load() did not have its reference count decremented during unload, 10585leading 10586to a memory leak. Lin Ming. BZ 727 10587 10588Fixed a possible memory leak when deleting thermal/processor objects. Any 10589associated notify handlers (and objects) were not being deleted. Fiodor 10590Suietov. BZ 506 10591 10592Fixed the ordering of the ASCII names in the global mutex table to match 10593the 10594actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10595only. 10596Vegard Nossum. BZ 726 10597 10598Enhanced the AcpiGetObjectInfo interface to return the number of required 10599arguments if the object is a control method. Added this call to the 10600debugger 10601so the proper number of default arguments are passed to a method. This 10602prevents a warning when executing methods from AcpiExec. 10603 10604Added a check for an invalid handle in AcpiGetObjectInfo. Return 10605AE_BAD_PARAMETER if input handle is invalid. BZ 474 10606 10607Fixed an extraneous warning from exconfig.c on the 64-bit build. 10608 10609Example Code and Data Size: These are the sizes for the OS-independent 10610acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10611debug version of the code includes the debug output trace mechanism and 10612has a 10613much larger code and data size. 10614 10615 Previous Release: 10616 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10617 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10618 Current Release: 10619 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10620 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10621 106222) iASL Compiler/Disassembler and Tools: 10623 10624iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10625resource descriptor names. 10626 10627iASL: Detect invalid ASCII characters in input (windows version). Removed 10628the 10629"-CF" flag from the flex compile, enables correct detection of non-ASCII 10630characters in the input. BZ 441 10631 10632iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10633the 10634"result of operation not used" warning when the DDB handle returned from 10635LoadTable is not used. The warning is not needed. BZ 590 10636 10637AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10638method 10639to 10640pass address of table to the AML. Added option to disable OpRegion 10641simulation 10642to allow creation of an OpRegion with a real address that was passed to 10643_CFG. 10644All of this allows testing of the Load and Unload operators from 10645AcpiExec. 10646 10647Debugger: update tables command for unloaded tables. Handle unloaded 10648tables 10649and use the standard table header output routine. 10650 10651---------------------------------------- 1065209 June 2008. Summary of changes for version 20080609: 10653 106541) ACPI CA Core Subsystem: 10655 10656Implemented a workaround for reversed _PRT entries. A significant number 10657of 10658BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10659change dynamically detects and repairs this problem. Provides 10660compatibility 10661with MS ACPI. BZ 6859 10662 10663Simplified the internal ACPI hardware interfaces to eliminate the locking 10664flag parameter from Register Read/Write. Added a new external interface, 10665AcpiGetRegisterUnlocked. 10666 10667Fixed a problem where the invocation of a GPE control method could hang. 10668This 10669was a regression introduced in 20080514. The new method argument count 10670validation mechanism can enter an infinite loop when a GPE method is 10671dispatched. Problem fixed by removing the obsolete code that passed GPE 10672block 10673information to the notify handler via the control method parameter 10674pointer. 10675 10676Fixed a problem where the _SST execution status was incorrectly returned 10677to 10678the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10679in 1068020080514. _SST is optional and a NOT_FOUND exception should never be 10681returned. BZ 716 10682 10683Fixed a problem where a deleted object could be accessed from within the 10684AML 10685parser. This was a regression introduced in version 20080123 as a fix for 10686the 10687Unload operator. Lin Ming. BZ 10669 10688 10689Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10690operands 10691and eliminated the use of a negative index in a loop. Operands are now 10692displayed in the correct order, not backwards. This also fixes a 10693regression 10694introduced in 20080514 on 64-bit systems where the elimination of 10695ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10696715 10697 10698Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10699exit 10700path did not delete a locally allocated structure. 10701 10702Updated definitions for the DMAR and SRAT tables to synchronize with the 10703current specifications. Includes disassembler support. 10704 10705Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10706loop termination value was used. Loop terminated on iteration early, 10707missing 10708one mutex. Linn Crosetto 10709 10710Example Code and Data Size: These are the sizes for the OS-independent 10711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10712debug version of the code includes the debug output trace mechanism and 10713has a 10714much larger code and data size. 10715 10716 Previous Release: 10717 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10718 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10719 Current Release: 10720 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10721 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10722 107232) iASL Compiler/Disassembler and Tools: 10724 10725Disassembler: Implemented support for EisaId() within _CID objects. Now 10726disassemble integer _CID objects back to EisaId invocations, including 10727multiple integers within _CID packages. Includes single-step support for 10728debugger also. 10729 10730Disassembler: Added support for DMAR and SRAT table definition changes. 10731 10732---------------------------------------- 1073314 May 2008. Summary of changes for version 20080514: 10734 107351) ACPI CA Core Subsystem: 10736 10737Fixed a problem where GPEs were enabled too early during the ACPICA 10738initialization. This could lead to "handler not installed" errors on some 10739machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10740This 10741ensures that all operation regions and devices throughout the namespace 10742have 10743been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10744 10745Implemented a change to the enter sleep code. Moved execution of the _GTS 10746method to just before setting sleep enable bit. The execution was moved 10747from 10748AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10749immediately before the SLP_EN bit is set, as per the ACPI specification. 10750Luming Yu, BZ 1653. 10751 10752Implemented a fix to disable unknown GPEs (2nd version). Now always 10753disable 10754the GPE, even if ACPICA thinks that that it is already disabled. It is 10755possible that the AML or some other code has enabled the GPE unbeknownst 10756to 10757the ACPICA code. 10758 10759Fixed a problem with the Field operator where zero-length fields would 10760return 10761an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10762ASL 10763field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10764 10765Implemented a fix for the Load operator, now load the table at the 10766namespace 10767root. This reverts a change introduced in version 20071019. The table is 10768now 10769loaded at the namespace root even though this goes against the ACPI 10770specification. This provides compatibility with other ACPI 10771implementations. 10772The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10773Ming. 10774 10775Fixed a problem where ACPICA would not Load() tables with unusual 10776signatures. 10777Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10778acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10779Therefore, signature validation is worthless. Apparently MS ACPI accepts 10780such 10781signatures, ACPICA must be compatible. BZ 10454. 10782 10783Fixed a possible negative array index in AcpiUtValidateException. Added 10784NULL 10785fields to the exception string arrays to eliminate a -1 subtraction on 10786the 10787SubStatus field. 10788 10789Updated the debug tracking macros to reduce overall code and data size. 10790Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10791instead of pointers to static strings. Jan Beulich and Bob Moore. 10792 10793Implemented argument count checking in control method invocation via 10794AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10795too 10796many. This applies only to extern programmatic control method execution, 10797not 10798method-to-method calls within the AML. Lin Ming. 10799 10800Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10801no 10802longer needed, especially with the removal of 16-bit support. It was 10803replaced 10804mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10805bit 10806on 1080732/64-bit platforms is required. 10808 10809Added the C const qualifier for appropriate string constants -- mostly 10810MODULE_NAME and printf format strings. Jan Beulich. 10811 10812Example Code and Data Size: These are the sizes for the OS-independent 10813acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10814debug version of the code includes the debug output trace mechanism and 10815has a 10816much larger code and data size. 10817 10818 Previous Release: 10819 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10820 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10821 Current Release: 10822 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10823 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10824 108252) iASL Compiler/Disassembler and Tools: 10826 10827Implemented ACPI table revision ID validation in the disassembler. Zero 10828is 10829always invalid. For DSDTs, the ID controls the interpreter integer width. 108301 10831means 32-bit and this is unusual. 2 or greater is 64-bit. 10832 10833---------------------------------------- 1083421 March 2008. Summary of changes for version 20080321: 10835 108361) ACPI CA Core Subsystem: 10837 10838Implemented an additional change to the GPE support in order to suppress 10839spurious or stray GPEs. The AcpiEvDisableGpe function will now 10840permanently 10841disable incoming GPEs that are neither enabled nor disabled -- meaning 10842that 10843the GPE is unknown to the system. This should prevent future interrupt 10844floods 10845from that GPE. BZ 6217 (Zhang Rui) 10846 10847Fixed a problem where NULL package elements were not returned to the 10848AcpiEvaluateObject interface correctly. The element was simply ignored 10849instead of returning a NULL ACPI_OBJECT package element, potentially 10850causing 10851a buffer overflow and/or confusing the caller who expected a fixed number 10852of 10853elements. BZ 10132 (Lin Ming, Bob Moore) 10854 10855Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10856Dword, 10857Qword), Field, BankField, and IndexField operators when invoked from 10858inside 10859an executing control method. In this case, these operators created 10860namespace 10861nodes that were incorrectly left marked as permanent nodes instead of 10862temporary nodes. This could cause a problem if there is race condition 10863between an exiting control method and a running namespace walk. (Reported 10864by 10865Linn Crosetto) 10866 10867Fixed a problem where the CreateField and CreateXXXField operators would 10868incorrectly allow duplicate names (the name of the field) with no 10869exception 10870generated. 10871 10872Implemented several changes for Notify handling. Added support for new 10873Notify 10874values (ACPI 2.0+) and improved the Notify debug output. Notify on 10875PowerResource objects is no longer allowed, as per the ACPI 10876specification. 10877(Bob Moore, Zhang Rui) 10878 10879All Reference Objects returned via the AcpiEvaluateObject interface are 10880now 10881marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10882for 10883NULL objects - either NULL package elements or unresolved named 10884references. 10885 10886Fixed a problem where an extraneous debug message was produced for 10887package 10888objects (when debugging enabled). The message "Package List length larger 10889than NumElements count" is now produced in the correct case, and is now 10890an 10891error message rather than a debug message. Added a debug message for the 10892opposite case, where NumElements is larger than the Package List (the 10893package 10894will be padded out with NULL elements as per the ACPI spec.) 10895 10896Implemented several improvements for the output of the ASL "Debug" object 10897to 10898clarify and keep all data for a given object on one output line. 10899 10900Fixed two size calculation issues with the variable-length Start 10901Dependent 10902resource descriptor. 10903 10904Example Code and Data Size: These are the sizes for the OS-independent 10905acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10906debug version of the code includes the debug output trace mechanism and 10907has 10908a much larger code and data size. 10909 10910 Previous Release: 10911 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10912 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10913 Current Release: 10914 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10915 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10916 109172) iASL Compiler/Disassembler and Tools: 10918 10919Fixed a problem with the use of the Switch operator where execution of 10920the 10921containing method by multiple concurrent threads could cause an 10922AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10923actual Switch opcode, it must be simulated with local named temporary 10924variables and if/else pairs. The solution chosen was to mark any method 10925that 10926uses Switch as Serialized, thus preventing multiple thread entries. BZ 10927469. 10928 10929---------------------------------------- 1093013 February 2008. Summary of changes for version 20080213: 10931 109321) ACPI CA Core Subsystem: 10933 10934Implemented another MS compatibility design change for GPE/Notify 10935handling. 10936GPEs are now cleared/enabled asynchronously to allow all pending notifies 10937to 10938complete first. It is expected that the OSL will queue the enable request 10939behind all pending notify requests (may require changes to the local host 10940OSL 10941in AcpiOsExecute). Alexey Starikovskiy. 10942 10943Fixed a problem where buffer and package objects passed as arguments to a 10944control method via the external AcpiEvaluateObject interface could cause 10945an 10946AE_AML_INTERNAL exception depending on the order and type of operators 10947executed by the target control method. 10948 10949Fixed a problem where resource descriptor size optimization could cause a 10950problem when a _CRS resource template is passed to a _SRS method. The 10951_SRS 10952resource template must use the same descriptors (with the same size) as 10953returned from _CRS. This change affects the following resource 10954descriptors: 10955IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 109569487) 10957 10958Fixed a problem where a CopyObject to RegionField, BankField, and 10959IndexField 10960objects did not perform an implicit conversion as it should. These types 10961must 10962retain their initial type permanently as per the ACPI specification. 10963However, 10964a CopyObject to all other object types should not perform an implicit 10965conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10966 10967Fixed a problem with the AcpiGetDevices interface where the mechanism to 10968match device CIDs did not examine the entire list of available CIDs, but 10969instead aborted on the first non-matching CID. Andrew Patterson. 10970 10971Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10972was 10973inadvertently changed to return a 16-bit value instead of a 32-bit value, 10974truncating the upper dword of a 64-bit value. This macro is only used to 10975display debug output, so no incorrect calculations were made. Also, 10976reimplemented the macro so that a 64-bit shift is not performed by 10977inefficient compilers. 10978 10979Added missing va_end statements that should correspond with each va_start 10980statement. 10981 10982Example Code and Data Size: These are the sizes for the OS-independent 10983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10984debug version of the code includes the debug output trace mechanism and 10985has 10986a much larger code and data size. 10987 10988 Previous Release: 10989 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10990 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10991 Current Release: 10992 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10993 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10994 109952) iASL Compiler/Disassembler and Tools: 10996 10997Implemented full disassembler support for the following new ACPI tables: 10998BERT, EINJ, and ERST. Implemented partial disassembler support for the 10999complicated HEST table. These tables support the Windows Hardware Error 11000Architecture (WHEA). 11001 11002---------------------------------------- 1100323 January 2008. Summary of changes for version 20080123: 11004 110051) ACPI CA Core Subsystem: 11006 11007Added the 2008 copyright to all module headers and signons. This affects 11008virtually every file in the ACPICA core subsystem, the iASL compiler, and 11009the tools/utilities. 11010 11011Fixed a problem with the SizeOf operator when used with Package and 11012Buffer 11013objects. These objects have deferred execution for some arguments, and 11014the 11015execution is now completed before the SizeOf is executed. This problem 11016caused 11017unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 11018BZ 110199558 11020 11021Implemented an enhancement to the interpreter "slack mode". In the 11022absence 11023of 11024an explicit return or an implicitly returned object from the last 11025executed 11026opcode, a control method will now implicitly return an integer of value 0 11027for 11028Microsoft compatibility. (Lin Ming) BZ 392 11029 11030Fixed a problem with the Load operator where an exception was not 11031returned 11032in 11033the case where the table is already loaded. (Lin Ming) BZ 463 11034 11035Implemented support for the use of DDBHandles as an Indexed Reference, as 11036per 11037the ACPI spec. (Lin Ming) BZ 486 11038 11039Implemented support for UserTerm (Method invocation) for the Unload 11040operator 11041as per the ACPI spec. (Lin Ming) BZ 580 11042 11043Fixed a problem with the LoadTable operator where the OemId and 11044OemTableId 11045input strings could cause unexpected failures if they were shorter than 11046the 11047maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 11048 11049Implemented support for UserTerm (Method invocation) for the Unload 11050operator 11051as per the ACPI spec. (Lin Ming) BZ 580 11052 11053Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 11054HEST, 11055IBFT, UEFI, WDAT. Disassembler support is forthcoming. 11056 11057Example Code and Data Size: These are the sizes for the OS-independent 11058acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11059debug version of the code includes the debug output trace mechanism and 11060has 11061a much larger code and data size. 11062 11063 Previous Release: 11064 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 11065 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 11066 Current Release: 11067 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 11068 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 11069 110702) iASL Compiler/Disassembler and Tools: 11071 11072Implemented support in the disassembler for checksum validation on 11073incoming 11074binary DSDTs and SSDTs. If incorrect, a message is displayed within the 11075table 11076header dump at the start of the disassembly. 11077 11078Implemented additional debugging information in the namespace listing 11079file 11080created during compilation. In addition to the namespace hierarchy, the 11081full 11082pathname to each namespace object is displayed. 11083 11084Fixed a problem with the disassembler where invalid ACPI tables could 11085cause 11086faults or infinite loops. 11087 11088Fixed an unexpected parse error when using the optional "parameter types" 11089list in a control method declaration. (Lin Ming) BZ 397 11090 11091Fixed a problem where two External declarations with the same name did 11092not 11093cause an error (Lin Ming) BZ 509 11094 11095Implemented support for full TermArgs (adding Argx, Localx and method 11096invocation) for the ParameterData parameter to the LoadTable operator. 11097(Lin 11098Ming) BZ 583,587 11099 11100---------------------------------------- 1110119 December 2007. Summary of changes for version 20071219: 11102 111031) ACPI CA Core Subsystem: 11104 11105Implemented full support for deferred execution for the TermArg string 11106arguments for DataTableRegion. This enables forward references and full 11107operand resolution for the three string arguments. Similar to 11108OperationRegion 11109deferred argument execution.) Lin Ming. BZ 430 11110 11111Implemented full argument resolution support for the BankValue argument 11112to 11113BankField. Previously, only constants were supported, now any TermArg may 11114be 11115used. Lin Ming BZ 387, 393 11116 11117Fixed a problem with AcpiGetDevices where the search of a branch of the 11118device tree could be terminated prematurely. In accordance with the ACPI 11119specification, the search down the current branch is terminated if a 11120device 11121is both not present and not functional (instead of just not present.) 11122Yakui 11123Zhao. 11124 11125Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 11126if 11127the underlying AML code changed the GPE enable registers. Now, any 11128unknown 11129incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 11130disabled 11131instead of simply ignored. Rui Zhang. 11132 11133Fixed a problem with Index Fields where the Index register was 11134incorrectly 11135limited to a maximum of 32 bits. Now any size may be used. 11136 11137Fixed a couple memory leaks associated with "implicit return" objects 11138when 11139the AML Interpreter slack mode is enabled. Lin Ming BZ 349 11140 11141Example Code and Data Size: These are the sizes for the OS-independent 11142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11143debug version of the code includes the debug output trace mechanism and 11144has 11145a much larger code and data size. 11146 11147 Previous Release: 11148 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11149 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11150 Current Release: 11151 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 11152 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 11153 11154---------------------------------------- 1115514 November 2007. Summary of changes for version 20071114: 11156 111571) ACPI CA Core Subsystem: 11158 11159Implemented event counters for each of the Fixed Events, the ACPI SCI 11160(interrupt) itself, and control methods executed. Named 11161AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 11162These 11163should be useful for debugging and statistics. 11164 11165Implemented a new external interface, AcpiGetStatistics, to retrieve the 11166contents of the various event counters. Returns the current values for 11167AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 11168AcpiMethodCount. The interface can be expanded in the future if new 11169counters 11170are added. Device drivers should use this interface rather than access 11171the 11172counters directly. 11173 11174Fixed a problem with the FromBCD and ToBCD operators. With some 11175compilers, 11176the ShortDivide function worked incorrectly, causing problems with the 11177BCD 11178functions with large input values. A truncation from 64-bit to 32-bit 11179inadvertently occurred. Internal BZ 435. Lin Ming 11180 11181Fixed a problem with Index references passed as method arguments. 11182References 11183passed as arguments to control methods were dereferenced immediately 11184(before 11185control was passed to the called method). The references are now 11186correctly 11187passed directly to the called method. BZ 5389. Lin Ming 11188 11189Fixed a problem with CopyObject used in conjunction with the Index 11190operator. 11191The reference was incorrectly dereferenced before the copy. The reference 11192is 11193now correctly copied. BZ 5391. Lin Ming 11194 11195Fixed a problem with Control Method references within Package objects. 11196These 11197references are now correctly generated. This completes the package 11198construction overhaul that began in version 20071019. 11199 11200Example Code and Data Size: These are the sizes for the OS-independent 11201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11202debug version of the code includes the debug output trace mechanism and 11203has 11204a much larger code and data size. 11205 11206 Previous Release: 11207 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11208 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11209 Current Release: 11210 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11211 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11212 11213 112142) iASL Compiler/Disassembler and Tools: 11215 11216The AcpiExec utility now installs handlers for all of the predefined 11217Operation Region types. New types supported are: PCI_Config, CMOS, and 11218PCIBARTarget. 11219 11220Fixed a problem with the 64-bit version of AcpiExec where the extended 11221(64- 11222bit) address fields for the DSDT and FACS within the FADT were not being 11223used, causing truncation of the upper 32-bits of these addresses. Lin 11224Ming 11225and Bob Moore 11226 11227---------------------------------------- 1122819 October 2007. Summary of changes for version 20071019: 11229 112301) ACPI CA Core Subsystem: 11231 11232Fixed a problem with the Alias operator when the target of the alias is a 11233named ASL operator that opens a new scope -- Scope, Device, 11234PowerResource, 11235Processor, and ThermalZone. In these cases, any children of the original 11236operator could not be accessed via the alias, potentially causing 11237unexpected 11238AE_NOT_FOUND exceptions. (BZ 9067) 11239 11240Fixed a problem with the Package operator where all named references were 11241created as object references and left otherwise unresolved. According to 11242the 11243ACPI specification, a Package can only contain Data Objects or references 11244to 11245control methods. The implication is that named references to Data Objects 11246(Integer, Buffer, String, Package, BufferField, Field) should be resolved 11247immediately upon package creation. This is the approach taken with this 11248change. References to all other named objects (Methods, Devices, Scopes, 11249etc.) are all now properly created as reference objects. (BZ 5328) 11250 11251Reverted a change to Notify handling that was introduced in version 1125220070508. This version changed the Notify handling from asynchronous to 11253fully synchronous (Device driver Notify handling with respect to the 11254Notify 11255ASL operator). It was found that this change caused more problems than it 11256solved and was removed by most users. 11257 11258Fixed a problem with the Increment and Decrement operators where the type 11259of 11260the target object could be unexpectedly and incorrectly changed. (BZ 353) 11261Lin Ming. 11262 11263Fixed a problem with the Load and LoadTable operators where the table 11264location within the namespace was ignored. Instead, the table was always 11265loaded into the root or current scope. Lin Ming. 11266 11267Fixed a problem with the Load operator when loading a table from a buffer 11268object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 11269 11270Fixed a problem with the Debug object where a store of a DdbHandle 11271reference 11272object to the Debug object could cause a fault. 11273 11274Added a table checksum verification for the Load operator, in the case 11275where 11276the load is from a buffer. (BZ 578). 11277 11278Implemented additional parameter validation for the LoadTable operator. 11279The 11280length of the input strings SignatureString, OemIdString, and OemTableId 11281are 11282now checked for maximum lengths. (BZ 582) Lin Ming. 11283 11284Example Code and Data Size: These are the sizes for the OS-independent 11285acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11286debug version of the code includes the debug output trace mechanism and 11287has 11288a much larger code and data size. 11289 11290 Previous Release: 11291 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11292 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11293 Current Release: 11294 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11295 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11296 11297 112982) iASL Compiler/Disassembler: 11299 11300Fixed a problem where if a single file was specified and the file did not 11301exist, no error message was emitted. (Introduced with wildcard support in 11302version 20070917.) 11303 11304---------------------------------------- 1130519 September 2007. Summary of changes for version 20070919: 11306 113071) ACPI CA Core Subsystem: 11308 11309Designed and implemented new external interfaces to install and remove 11310handlers for ACPI table-related events. Current events that are defined 11311are 11312LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 11313they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 11314AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 11315 11316Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 11317(acpi_serialized option on Linux) could cause some systems to hang during 11318initialization. (Bob Moore) BZ 8171 11319 11320Fixed a problem where objects of certain types (Device, ThermalZone, 11321Processor, PowerResource) can be not found if they are declared and 11322referenced from within the same control method (Lin Ming) BZ 341 11323 11324Example Code and Data Size: These are the sizes for the OS-independent 11325acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11326debug version of the code includes the debug output trace mechanism and 11327has 11328a much larger code and data size. 11329 11330 Previous Release: 11331 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11332 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11333 Current Release: 11334 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11335 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11336 11337 113382) iASL Compiler/Disassembler: 11339 11340Implemented support to allow multiple files to be compiled/disassembled 11341in 11342a 11343single invocation. This includes command line wildcard support for both 11344the 11345Windows and Unix versions of the compiler. This feature simplifies the 11346disassembly and compilation of multiple ACPI tables in a single 11347directory. 11348 11349---------------------------------------- 1135008 May 2007. Summary of changes for version 20070508: 11351 113521) ACPI CA Core Subsystem: 11353 11354Implemented a Microsoft compatibility design change for the handling of 11355the 11356Notify AML operator. Previously, notify handlers were dispatched and 11357executed completely asynchronously in a deferred thread. The new design 11358still executes the notify handlers in a different thread, but the 11359original 11360thread that executed the Notify() now waits at a synchronization point 11361for 11362the notify handler to complete. Some machines depend on a synchronous 11363Notify 11364operator in order to operate correctly. 11365 11366Implemented support to allow Package objects to be passed as method 11367arguments to the external AcpiEvaluateObject interface. Previously, this 11368would return the AE_NOT_IMPLEMENTED exception. This feature had not been 11369implemented since there were no reserved control methods that required it 11370until recently. 11371 11372Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 11373that 11374contained invalid non-zero values in reserved fields could cause later 11375failures because these fields have meaning in later revisions of the 11376FADT. 11377For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 11378fields 11379are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 11380 11381Fixed a problem where the Global Lock handle was not properly updated if 11382a 11383thread that acquired the Global Lock via executing AML code then 11384attempted 11385to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 11386Joe 11387Liu. 11388 11389Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 11390could be corrupted if the interrupt being removed was at the head of the 11391list. Reported by Linn Crosetto. 11392 11393Example Code and Data Size: These are the sizes for the OS-independent 11394acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11395debug version of the code includes the debug output trace mechanism and 11396has 11397a much larger code and data size. 11398 11399 Previous Release: 11400 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11401 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11402 Current Release: 11403 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11404 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11405 11406---------------------------------------- 1140720 March 2007. Summary of changes for version 20070320: 11408 114091) ACPI CA Core Subsystem: 11410 11411Implemented a change to the order of interpretation and evaluation of AML 11412operand objects within the AML interpreter. The interpreter now evaluates 11413operands in the order that they appear in the AML stream (and the 11414corresponding ASL code), instead of in the reverse order (after the 11415entire 11416operand list has been parsed). The previous behavior caused several 11417subtle 11418incompatibilities with the Microsoft AML interpreter as well as being 11419somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 11420 11421Implemented a change to the ACPI Global Lock support. All interfaces to 11422the 11423global lock now allow the same thread to acquire the lock multiple times. 11424This affects the AcpiAcquireGlobalLock external interface to the global 11425lock 11426as well as the internal use of the global lock to support AML fields -- a 11427control method that is holding the global lock can now simultaneously 11428access 11429AML fields that require global lock protection. Previously, in both 11430cases, 11431this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 11432to 11433AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 11434Controller. There is no change to the behavior of the AML Acquire 11435operator, 11436as this can already be used to acquire a mutex multiple times by the same 11437thread. BZ 8066. With assistance from Alexey Starikovskiy. 11438 11439Fixed a problem where invalid objects could be referenced in the AML 11440Interpreter after error conditions. During operand evaluation, ensure 11441that 11442the internal "Return Object" field is cleared on error and only valid 11443pointers are stored there. Caused occasional access to deleted objects 11444that 11445resulted in "large reference count" warning messages. Valery Podrezov. 11446 11447Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 11448on 11449deeply nested control method invocations. BZ 7873, local BZ 487. Valery 11450Podrezov. 11451 11452Fixed an internal problem with the handling of result objects on the 11453interpreter result stack. BZ 7872. Valery Podrezov. 11454 11455Removed obsolete code that handled the case where AML_NAME_OP is the 11456target 11457of a reference (Reference.Opcode). This code was no longer necessary. BZ 114587874. Valery Podrezov. 11459 11460Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 11461was 11462a 11463remnant from the previously discontinued 16-bit support. 11464 11465Example Code and Data Size: These are the sizes for the OS-independent 11466acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11467debug version of the code includes the debug output trace mechanism and 11468has 11469a much larger code and data size. 11470 11471 Previous Release: 11472 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11473 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11474 Current Release: 11475 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11476 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11477 11478---------------------------------------- 1147926 January 2007. Summary of changes for version 20070126: 11480 114811) ACPI CA Core Subsystem: 11482 11483Added the 2007 copyright to all module headers and signons. This affects 11484virtually every file in the ACPICA core subsystem, the iASL compiler, and 11485the utilities. 11486 11487Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 11488during a table load. A bad pointer was passed in the case where the DSDT 11489is 11490overridden, causing a fault in this case. 11491 11492Example Code and Data Size: These are the sizes for the OS-independent 11493acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11494debug version of the code includes the debug output trace mechanism and 11495has 11496a much larger code and data size. 11497 11498 Previous Release: 11499 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11500 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11501 Current Release: 11502 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11503 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11504 11505---------------------------------------- 1150615 December 2006. Summary of changes for version 20061215: 11507 115081) ACPI CA Core Subsystem: 11509 11510Support for 16-bit ACPICA has been completely removed since it is no 11511longer 11512necessary and it clutters the code. All 16-bit macros, types, and 11513conditional compiles have been removed, cleaning up and simplifying the 11514code 11515across the entire subsystem. DOS support is no longer needed since the 11516bootable Linux firmware kit is now available. 11517 11518The handler for the Global Lock is now removed during AcpiTerminate to 11519enable a clean subsystem restart, via the implementation of the 11520AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 11521HP) 11522 11523Implemented enhancements to the multithreading support within the 11524debugger 11525to enable improved multithreading debugging and evaluation of the 11526subsystem. 11527(Valery Podrezov) 11528 11529Debugger: Enhanced the Statistics/Memory command to emit the total 11530(maximum) 11531memory used during the execution, as well as the maximum memory consumed 11532by 11533each of the various object types. (Valery Podrezov) 11534 11535Example Code and Data Size: These are the sizes for the OS-independent 11536acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11537debug version of the code includes the debug output trace mechanism and 11538has 11539a much larger code and data size. 11540 11541 Previous Release: 11542 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11543 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11544 Current Release: 11545 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11546 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11547 11548 115492) iASL Compiler/Disassembler and Tools: 11550 11551AcpiExec: Implemented a new option (-m) to display full memory use 11552statistics upon subsystem/program termination. (Valery Podrezov) 11553 11554---------------------------------------- 1155509 November 2006. Summary of changes for version 20061109: 11556 115571) ACPI CA Core Subsystem: 11558 11559Optimized the Load ASL operator in the case where the source operand is 11560an 11561operation region. Simply map the operation region memory, instead of 11562performing a bytewise read. (Region must be of type SystemMemory, see 11563below.) 11564 11565Fixed the Load ASL operator for the case where the source operand is a 11566region field. A buffer object is also allowed as the source operand. BZ 11567480 11568 11569Fixed a problem where the Load ASL operator allowed the source operand to 11570be 11571an operation region of any type. It is now restricted to regions of type 11572SystemMemory, as per the ACPI specification. BZ 481 11573 11574Additional cleanup and optimizations for the new Table Manager code. 11575 11576AcpiEnable will now fail if all of the required ACPI tables are not 11577loaded 11578(FADT, FACS, DSDT). BZ 477 11579 11580Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11581this 11582header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11583manually optimized to be aligned and will not work if it is byte-packed. 11584 11585Example Code and Data Size: These are the sizes for the OS-independent 11586acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11587debug version of the code includes the debug output trace mechanism and 11588has 11589a much larger code and data size. 11590 11591 Previous Release: 11592 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11593 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11594 Current Release: 11595 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11596 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11597 11598 115992) iASL Compiler/Disassembler and Tools: 11600 11601Fixed a problem where the presence of the _OSI predefined control method 11602within complex expressions could cause an internal compiler error. 11603 11604AcpiExec: Implemented full region support for multiple address spaces. 11605SpaceId is now part of the REGION object. BZ 429 11606 11607---------------------------------------- 1160811 October 2006. Summary of changes for version 20061011: 11609 116101) ACPI CA Core Subsystem: 11611 11612Completed an AML interpreter performance enhancement for control method 11613execution. Previously a 2-pass parse/execution, control methods are now 11614completely parsed and executed in a single pass. This improves overall 11615interpreter performance by ~25%, reduces code size, and reduces CPU stack 11616use. (Valery Podrezov + interpreter changes in version 20051202 that 11617eliminated namespace loading during the pass one parse.) 11618 11619Implemented _CID support for PCI Root Bridge detection. If the _HID does 11620not 11621match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11622now 11623obtained and also checked for an ID match. 11624 11625Implemented additional support for the PCI _ADR execution: upsearch until 11626a 11627device scope is found before executing _ADR. This allows PCI_Config 11628operation regions to be declared locally within control methods 11629underneath 11630PCI device objects. 11631 11632Fixed a problem with a possible race condition between threads executing 11633AcpiWalkNamespace and the AML interpreter. This condition was removed by 11634modifying AcpiWalkNamespace to (by default) ignore all temporary 11635namespace 11636entries created during any concurrent control method execution. An 11637additional namespace race condition is known to exist between 11638AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11639investigation. 11640 11641Restructured the AML ParseLoop function, breaking it into several 11642subfunctions in order to reduce CPU stack use and improve 11643maintainability. 11644(Mikhail Kouzmich) 11645 11646AcpiGetHandle: Fix for parameter validation to detect invalid 11647combinations 11648of prefix handle and pathname. BZ 478 11649 11650Example Code and Data Size: These are the sizes for the OS-independent 11651acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11652debug version of the code includes the debug output trace mechanism and 11653has 11654a much larger code and data size. 11655 11656 Previous Release: 11657 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11658 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11659 Current Release: 11660 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11661 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11662 116632) iASL Compiler/Disassembler and Tools: 11664 11665Ported the -g option (get local ACPI tables) to the new ACPICA Table 11666Manager 11667to restore original behavior. 11668 11669---------------------------------------- 1167027 September 2006. Summary of changes for version 20060927: 11671 116721) ACPI CA Core Subsystem: 11673 11674Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11675These functions now use a spinlock for mutual exclusion and the interrupt 11676level indication flag is not needed. 11677 11678Fixed a problem with the Global Lock where the lock could appear to be 11679obtained before it is actually obtained. The global lock semaphore was 11680inadvertently created with one unit instead of zero units. (BZ 464) 11681Fiodor 11682Suietov. 11683 11684Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11685during 11686a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11687 11688Example Code and Data Size: These are the sizes for the OS-independent 11689acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11690debug version of the code includes the debug output trace mechanism and 11691has 11692a much larger code and data size. 11693 11694 Previous Release: 11695 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11696 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11697 Current Release: 11698 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11699 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11700 11701 117022) iASL Compiler/Disassembler and Tools: 11703 11704Fixed a compilation problem with the pre-defined Resource Descriptor 11705field 11706names where an "object does not exist" error could be incorrectly 11707generated 11708if the parent ResourceTemplate pathname places the template within a 11709different namespace scope than the current scope. (BZ 7212) 11710 11711Fixed a problem where the compiler could hang after syntax errors 11712detected 11713in an ElseIf construct. (BZ 453) 11714 11715Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11716operator. An incorrect output filename was produced when this parameter 11717was 11718a null string (""). Now, the original input filename is used as the AML 11719output filename, with an ".aml" extension. 11720 11721Implemented a generic batch command mode for the AcpiExec utility 11722(execute 11723any AML debugger command) (Valery Podrezov). 11724 11725---------------------------------------- 1172612 September 2006. Summary of changes for version 20060912: 11727 117281) ACPI CA Core Subsystem: 11729 11730Enhanced the implementation of the "serialized mode" of the interpreter 11731(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11732specified, instead of creating a serialization semaphore per control 11733method, 11734the interpreter lock is simply no longer released before a blocking 11735operation during control method execution. This effectively makes the AML 11736Interpreter single-threaded. The overhead of a semaphore per-method is 11737eliminated. 11738 11739Fixed a regression where an error was no longer emitted if a control 11740method 11741attempts to create 2 objects of the same name. This once again returns 11742AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11743that 11744will dynamically serialize the control method to possible prevent future 11745errors. (BZ 440) 11746 11747Integrated a fix for a problem with PCI Express HID detection in the PCI 11748Config Space setup procedure. (BZ 7145) 11749 11750Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11751AcpiHwInitialize function - the FADT registers are now validated when the 11752table is loaded. 11753 11754Added two new warnings during FADT verification - 1) if the FADT is 11755larger 11756than the largest known FADT version, and 2) if there is a mismatch 11757between 11758a 1175932-bit block address and the 64-bit X counterpart (when both are non- 11760zero.) 11761 11762Example Code and Data Size: These are the sizes for the OS-independent 11763acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11764debug version of the code includes the debug output trace mechanism and 11765has 11766a much larger code and data size. 11767 11768 Previous Release: 11769 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11770 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11771 Current Release: 11772 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11773 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11774 11775 117762) iASL Compiler/Disassembler and Tools: 11777 11778Fixed a problem with the implementation of the Switch() operator where 11779the 11780temporary variable was declared too close to the actual Switch, instead 11781of 11782at method level. This could cause a problem if the Switch() operator is 11783within a while loop, causing an error on the second iteration. (BZ 460) 11784 11785Disassembler - fix for error emitted for unknown type for target of scope 11786operator. Now, ignore it and continue. 11787 11788Disassembly of an FADT now verifies the input FADT and reports any errors 11789found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11790 11791Disassembly of raw data buffers with byte initialization data now 11792prefixes 11793each output line with the current buffer offset. 11794 11795Disassembly of ASF! table now includes all variable-length data fields at 11796the end of some of the subtables. 11797 11798The disassembler now emits a comment if a buffer appears to be a 11799ResourceTemplate, but cannot be disassembled as such because the EndTag 11800does 11801not appear at the very end of the buffer. 11802 11803AcpiExec - Added the "-t" command line option to enable the serialized 11804mode 11805of the AML interpreter. 11806 11807---------------------------------------- 1180831 August 2006. Summary of changes for version 20060831: 11809 118101) ACPI CA Core Subsystem: 11811 11812Miscellaneous fixes for the Table Manager: 11813- Correctly initialize internal common FADT for all 64-bit "X" fields 11814- Fixed a couple table mapping issues during table load 11815- Fixed a couple alignment issues for IA64 11816- Initialize input array to zero in AcpiInitializeTables 11817- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11818AcpiGetTableByIndex 11819 11820Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11821now 11822immediately disabled to prevent the waking GPE from firing again and to 11823prevent other wake GPEs from interrupting the wake process. 11824 11825Added the AcpiGpeCount global that tracks the number of processed GPEs, 11826to 11827be used for debugging systems with a large number of ACPI interrupts. 11828 11829Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11830both the ACPICA headers and the disassembler. 11831 11832Example Code and Data Size: These are the sizes for the OS-independent 11833acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11834debug version of the code includes the debug output trace mechanism and 11835has 11836a much larger code and data size. 11837 11838 Previous Release: 11839 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11840 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11841 Current Release: 11842 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11843 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11844 11845 118462) iASL Compiler/Disassembler and Tools: 11847 11848Disassembler support for the DMAR ACPI table. 11849 11850---------------------------------------- 1185123 August 2006. Summary of changes for version 20060823: 11852 118531) ACPI CA Core Subsystem: 11854 11855The Table Manager component has been completely redesigned and 11856reimplemented. The new design is much simpler, and reduces the overall 11857code 11858and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11859is 11860now possible to obtain the ACPI tables very early during kernel 11861initialization, even before dynamic memory management is initialized. 11862(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11863 11864Obsolete ACPICA interfaces: 11865 11866- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11867init 11868time). 11869- AcpiLoadTable: Not needed. 11870- AcpiUnloadTable: Not needed. 11871 11872New ACPICA interfaces: 11873 11874- AcpiInitializeTables: Must be called before the table manager can be 11875used. 11876- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11877allocated memory after it becomes available. 11878- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11879tables 11880in the RSDT/XSDT. 11881 11882Other ACPICA changes: 11883 11884- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11885Use 11886AcpiOsUnmapMemory to free this mapping. 11887- AcpiGetTable returns the actual mapped table. The mapping is managed 11888internally and must not be deleted by the caller. Use of this interface 11889causes no additional dynamic memory allocation. 11890- AcpiFindRootPointer: Support for physical addressing has been 11891eliminated, 11892it appeared to be unused. 11893- The interface to AcpiOsMapMemory has changed to be consistent with the 11894other allocation interfaces. 11895- The interface to AcpiOsGetRootPointer has changed to eliminate 11896unnecessary 11897parameters. 11898- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1189964- 11900bit platforms. Was previously 64 bits on all platforms. 11901- The interface to the ACPI Global Lock acquire/release macros have 11902changed 11903slightly since ACPICA no longer keeps a local copy of the FACS with a 11904constructed pointer to the actual global lock. 11905 11906Porting to the new table manager: 11907 11908- AcpiInitializeTables: Must be called once, and can be called anytime 11909during the OS initialization process. It allows the host to specify an 11910area 11911of memory to be used to store the internal version of the RSDT/XSDT (root 11912table). This allows the host to access ACPI tables before memory 11913management 11914is initialized and running. 11915- AcpiReallocateRootTable: Can be called after memory management is 11916running 11917to copy the root table to a dynamically allocated array, freeing up the 11918scratch memory specified in the call to AcpiInitializeTables. 11919- AcpiSubsystemInitialize: This existing interface is independent of the 11920Table Manager, and does not have to be called before the Table Manager 11921can 11922be used, it only must be called before the rest of ACPICA can be used. 11923- ACPI Tables: Some changes have been made to the names and structure of 11924the 11925actbl.h and actbl1.h header files and may require changes to existing 11926code. 11927For example, bitfields have been completely removed because of their lack 11928of 11929portability across C compilers. 11930- Update interfaces to the Global Lock acquire/release macros if local 11931versions are used. (see acwin.h) 11932 11933Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11934 11935New files: tbfind.c 11936 11937Example Code and Data Size: These are the sizes for the OS-independent 11938acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11939debug version of the code includes the debug output trace mechanism and 11940has 11941a much larger code and data size. 11942 11943 Previous Release: 11944 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11945 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11946 Current Release: 11947 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11948 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11949 11950 119512) iASL Compiler/Disassembler and Tools: 11952 11953No changes for this release. 11954 11955---------------------------------------- 1195621 July 2006. Summary of changes for version 20060721: 11957 119581) ACPI CA Core Subsystem: 11959 11960The full source code for the ASL test suite used to validate the iASL 11961compiler and the ACPICA core subsystem is being released with the ACPICA 11962source for the first time. The source is contained in a separate package 11963and 11964consists of over 1100 files that exercise all ASL/AML operators. The 11965package 11966should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11967Fiodor 11968Suietov) 11969 11970Completed a new design and implementation for support of the ACPI Global 11971Lock. On the OS side, the global lock is now treated as a standard AML 11972mutex. Previously, multiple OS threads could "acquire" the global lock 11973simultaneously. However, this could cause the BIOS to be starved out of 11974the 11975lock - especially in cases such as the Embedded Controller driver where 11976there is a tight coupling between the OS and the BIOS. 11977 11978Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11979The Global Lock interrupt handler no longer queues the execution of a 11980separate thread to signal the global lock semaphore. Instead, the 11981semaphore 11982is signaled directly from the interrupt handler. 11983 11984Implemented support within the AML interpreter for package objects that 11985contain a larger AML length (package list length) than the package 11986element 11987count. In this case, the length of the package is truncated to match the 11988package element count. Some BIOS code apparently modifies the package 11989length 11990on the fly, and this change supports this behavior. Provides 11991compatibility 11992with the MS AML interpreter. (With assistance from Fiodor Suietov) 11993 11994Implemented a temporary fix for the BankValue parameter of a Bank Field 11995to 11996support all constant values, now including the Zero and One opcodes. 11997Evaluation of this parameter must eventually be converted to a full 11998TermArg 11999evaluation. A not-implemented error is now returned (temporarily) for 12000non- 12001constant values for this parameter. 12002 12003Fixed problem reports (Fiodor Suietov) integrated: 12004- Fix for premature object deletion after CopyObject on Operation Region 12005(BZ 12006350) 12007 12008Example Code and Data Size: These are the sizes for the OS-independent 12009acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12010debug version of the code includes the debug output trace mechanism and 12011has 12012a much larger code and data size. 12013 12014 Previous Release: 12015 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 12016 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 12017 Current Release: 12018 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 12019 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 12020 12021 120222) iASL Compiler/Disassembler and Tools: 12023 12024No changes for this release. 12025 12026---------------------------------------- 1202707 July 2006. Summary of changes for version 20060707: 12028 120291) ACPI CA Core Subsystem: 12030 12031Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 12032that do not allow the initialization of address pointers within packed 12033structures - even though the hardware itself may support misaligned 12034transfers. Some of the debug data structures are packed by default to 12035minimize size. 12036 12037Added an error message for the case where AcpiOsGetThreadId() returns 12038zero. 12039A non-zero value is required by the core ACPICA code to ensure the proper 12040operation of AML mutexes and recursive control methods. 12041 12042The DSDT is now the only ACPI table that determines whether the AML 12043interpreter is in 32-bit or 64-bit mode. Not really a functional change, 12044but 12045the hooks for per-table 32/64 switching have been removed from the code. 12046A 12047clarification to the ACPI specification is forthcoming in ACPI 3.0B. 12048 12049Fixed a possible leak of an OwnerID in the error path of 12050AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 12051deletion to a single place in AcpiTbUninstallTable to correct possible 12052leaks 12053when using the AcpiTbDeleteTablesByType interface (with assistance from 12054Lance Ortiz.) 12055 12056Fixed a problem with Serialized control methods where the semaphore 12057associated with the method could be over-signaled after multiple method 12058invocations. 12059 12060Fixed two issues with the locking of the internal namespace data 12061structure. 12062Both the Unload() operator and AcpiUnloadTable interface now lock the 12063namespace during the namespace deletion associated with the table unload 12064(with assistance from Linn Crosetto.) 12065 12066Fixed problem reports (Valery Podrezov) integrated: 12067- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 12068 12069Fixed problem reports (Fiodor Suietov) integrated: 12070- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 12071- On Address Space handler deletion, needless deactivation call (BZ 374) 12072- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 12073375) 12074- Possible memory leak, Notify sub-objects of Processor, Power, 12075ThermalZone 12076(BZ 376) 12077- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 12078- Minimum Length of RSDT should be validated (BZ 379) 12079- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 12080Handler (BZ (380) 12081- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 12082loaded 12083(BZ 381) 12084 12085Example Code and Data Size: These are the sizes for the OS-independent 12086acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12087debug version of the code includes the debug output trace mechanism and 12088has 12089a much larger code and data size. 12090 12091 Previous Release: 12092 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12093 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12094 Current Release: 12095 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 12096 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 12097 12098 120992) iASL Compiler/Disassembler and Tools: 12100 12101Fixed problem reports: 12102Compiler segfault when ASL contains a long (>1024) String declaration (BZ 12103436) 12104 12105---------------------------------------- 1210623 June 2006. Summary of changes for version 20060623: 12107 121081) ACPI CA Core Subsystem: 12109 12110Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 12111allows the type to be customized to the host OS for improved efficiency 12112(since a spinlock is usually a very small object.) 12113 12114Implemented support for "ignored" bits in the ACPI registers. According 12115to 12116the ACPI specification, these bits should be preserved when writing the 12117registers via a read/modify/write cycle. There are 3 bits preserved in 12118this 12119manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 12120 12121Implemented the initial deployment of new OSL mutex interfaces. Since 12122some 12123host operating systems have separate mutex and semaphore objects, this 12124feature was requested. The base code now uses mutexes (and the new mutex 12125interfaces) wherever a binary semaphore was used previously. However, for 12126the current release, the mutex interfaces are defined as macros to map 12127them 12128to the existing semaphore interfaces. Therefore, no OSL changes are 12129required 12130at this time. (See acpiosxf.h) 12131 12132Fixed several problems with the support for the control method SyncLevel 12133parameter. The SyncLevel now works according to the ACPI specification 12134and 12135in concert with the Mutex SyncLevel parameter, since the current 12136SyncLevel 12137is a property of the executing thread. Mutual exclusion for control 12138methods 12139is now implemented with a mutex instead of a semaphore. 12140 12141Fixed three instances of the use of the C shift operator in the bitfield 12142support code (exfldio.c) to avoid the use of a shift value larger than 12143the 12144target data width. The behavior of C compilers is undefined in this case 12145and 12146can cause unpredictable results, and therefore the case must be detected 12147and 12148avoided. (Fiodor Suietov) 12149 12150Added an info message whenever an SSDT or OEM table is loaded dynamically 12151via the Load() or LoadTable() ASL operators. This should improve 12152debugging 12153capability since it will show exactly what tables have been loaded 12154(beyond 12155the tables present in the RSDT/XSDT.) 12156 12157Example Code and Data Size: These are the sizes for the OS-independent 12158acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12159debug version of the code includes the debug output trace mechanism and 12160has 12161a much larger code and data size. 12162 12163 Previous Release: 12164 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12165 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12166 Current Release: 12167 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12168 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12169 12170 121712) iASL Compiler/Disassembler and Tools: 12172 12173No changes for this release. 12174 12175---------------------------------------- 1217608 June 2006. Summary of changes for version 20060608: 12177 121781) ACPI CA Core Subsystem: 12179 12180Converted the locking mutex used for the ACPI hardware to a spinlock. 12181This 12182change should eliminate all problems caused by attempting to acquire a 12183semaphore at interrupt level, and it means that all ACPICA external 12184interfaces that directly access the ACPI hardware can be safely called 12185from 12186interrupt level. OSL code that implements the semaphore interfaces should 12187be 12188able to eliminate any workarounds for being called at interrupt level. 12189 12190Fixed a regression introduced in 20060526 where the ACPI device 12191initialization could be prematurely aborted with an AE_NOT_FOUND if a 12192device 12193did not have an optional _INI method. 12194 12195Fixed an IndexField issue where a write to the Data Register should be 12196limited in size to the AccessSize (width) of the IndexField itself. (BZ 12197433, 12198Fiodor Suietov) 12199 12200Fixed problem reports (Valery Podrezov) integrated: 12201- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 12202 12203Fixed problem reports (Fiodor Suietov) integrated: 12204- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 12205 12206Removed four global mutexes that were obsolete and were no longer being 12207used. 12208 12209Example Code and Data Size: These are the sizes for the OS-independent 12210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12211debug version of the code includes the debug output trace mechanism and 12212has 12213a much larger code and data size. 12214 12215 Previous Release: 12216 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12217 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12218 Current Release: 12219 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12220 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12221 12222 122232) iASL Compiler/Disassembler and Tools: 12224 12225Fixed a fault when using -g option (get tables from registry) on Windows 12226machines. 12227 12228Fixed problem reports integrated: 12229- Generate error if CreateField NumBits parameter is zero. (BZ 405) 12230- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 12231Suietov) 12232- Global table revision override (-r) is ignored (BZ 413) 12233 12234---------------------------------------- 1223526 May 2006. Summary of changes for version 20060526: 12236 122371) ACPI CA Core Subsystem: 12238 12239Restructured, flattened, and simplified the internal interfaces for 12240namespace object evaluation - resulting in smaller code, less CPU stack 12241use, 12242and fewer interfaces. (With assistance from Mikhail Kouzmich) 12243 12244Fixed a problem with the CopyObject operator where the first parameter 12245was 12246not typed correctly for the parser, interpreter, compiler, and 12247disassembler. 12248Caused various errors and unexpected behavior. 12249 12250Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 12251produced incorrect results with some C compilers. Since the behavior of C 12252compilers when the shift value is larger than the datatype width is 12253apparently not well defined, the interpreter now detects this condition 12254and 12255simply returns zero as expected in all such cases. (BZ 395) 12256 12257Fixed problem reports (Valery Podrezov) integrated: 12258- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 12259- Allow interpreter to handle nested method declarations (BZ 5361) 12260 12261Fixed problem reports (Fiodor Suietov) integrated: 12262- AcpiTerminate doesn't free debug memory allocation list objects (BZ 12263355) 12264- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 12265356) 12266- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 12267- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 12268- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 12269- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 12270- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 12271- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 12272- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 12273365) 12274- Status of the Global Initialization Handler call not used (BZ 366) 12275- Incorrect object parameter to Global Initialization Handler (BZ 367) 12276 12277Example Code and Data Size: These are the sizes for the OS-independent 12278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12279debug version of the code includes the debug output trace mechanism and 12280has 12281a much larger code and data size. 12282 12283 Previous Release: 12284 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12285 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12286 Current Release: 12287 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12288 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12289 12290 122912) iASL Compiler/Disassembler and Tools: 12292 12293Modified the parser to allow the names IO, DMA, and IRQ to be used as 12294namespace identifiers with no collision with existing resource descriptor 12295macro names. This provides compatibility with other ASL compilers and is 12296most useful for disassembly/recompilation of existing tables without 12297parse 12298errors. (With assistance from Thomas Renninger) 12299 12300Disassembler: fixed an incorrect disassembly problem with the 12301DataTableRegion and CopyObject operators. Fixed a possible fault during 12302disassembly of some Alias operators. 12303 12304---------------------------------------- 1230512 May 2006. Summary of changes for version 20060512: 12306 123071) ACPI CA Core Subsystem: 12308 12309Replaced the AcpiOsQueueForExecution interface with a new interface named 12310AcpiOsExecute. The major difference is that the new interface does not 12311have 12312a Priority parameter, this appeared to be useless and has been replaced 12313by 12314a 12315Type parameter. The Type tells the host what type of execution is being 12316requested, such as global lock handler, notify handler, GPE handler, etc. 12317This allows the host to queue and execute the request as appropriate for 12318the 12319request type, possibly using different work queues and different 12320priorities 12321for the various request types. This enables fixes for multithreading 12322deadlock problems such as BZ #5534, and will require changes to all 12323existing 12324OS interface layers. (Alexey Starikovskiy and Bob Moore) 12325 12326Fixed a possible memory leak associated with the support for the so- 12327called 12328"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 12329Suietov) 12330 12331Fixed a problem with the Load() operator where a table load from an 12332operation region could overwrite an internal table buffer by up to 7 12333bytes 12334and cause alignment faults on IPF systems. (With assistance from Luming 12335Yu) 12336 12337Example Code and Data Size: These are the sizes for the OS-independent 12338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12339debug version of the code includes the debug output trace mechanism and 12340has 12341a much larger code and data size. 12342 12343 Previous Release: 12344 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12345 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12346 Current Release: 12347 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12348 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12349 12350 12351 123522) iASL Compiler/Disassembler and Tools: 12353 12354Disassembler: Implemented support to cross reference the internal 12355namespace 12356and automatically generate ASL External() statements for symbols not 12357defined 12358within the current table being disassembled. This will simplify the 12359disassembly and recompilation of interdependent tables such as SSDTs 12360since 12361these statements will no longer have to be added manually. 12362 12363Disassembler: Implemented experimental support to automatically detect 12364invocations of external control methods and generate appropriate 12365External() 12366statements. This is problematic because the AML cannot be correctly 12367parsed 12368until the number of arguments for each control method is known. 12369Currently, 12370standalone method invocations and invocations as the source operand of a 12371Store() statement are supported. 12372 12373Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 12374LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 12375LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 12376more readable and likely closer to the original ASL source. 12377 12378---------------------------------------- 1237921 April 2006. Summary of changes for version 20060421: 12380 123811) ACPI CA Core Subsystem: 12382 12383Removed a device initialization optimization introduced in 20051216 where 12384the _STA method was not run unless an _INI was also present for the same 12385device. This optimization could cause problems because it could allow 12386_INI 12387methods to be run within a not-present device subtree. (If a not-present 12388device had no _INI, _STA would not be run, the not-present status would 12389not 12390be discovered, and the children of the device would be incorrectly 12391traversed.) 12392 12393Implemented a new _STA optimization where namespace subtrees that do not 12394contain _INI are identified and ignored during device initialization. 12395Selectively running _STA can significantly improve boot time on large 12396machines (with assistance from Len Brown.) 12397 12398Implemented support for the device initialization case where the returned 12399_STA flags indicate a device not-present but functioning. In this case, 12400_INI 12401is not run, but the device children are examined for presence, as per the 12402ACPI specification. 12403 12404Implemented an additional change to the IndexField support in order to 12405conform to MS behavior. The value written to the Index Register is not 12406simply a byte offset, it is a byte offset in units of the access width of 12407the parent Index Field. (Fiodor Suietov) 12408 12409Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 12410interface is called during the creation of all AML operation regions, and 12411allows the host OS to exert control over what addresses it will allow the 12412AML code to access. Operation Regions whose addresses are disallowed will 12413cause a runtime exception when they are actually accessed (will not 12414affect 12415or abort table loading.) See oswinxf or osunixxf for an example 12416implementation. 12417 12418Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 12419interface allows the host OS to match the various "optional" 12420interface/behavior strings for the _OSI predefined control method as 12421appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 12422for an example implementation. 12423 12424Restructured and corrected various problems in the exception handling 12425code 12426paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 12427(with assistance from Takayoshi Kochi.) 12428 12429Modified the Linux source converter to ignore quoted string literals 12430while 12431converting identifiers from mixed to lower case. This will correct 12432problems 12433with the disassembler and other areas where such strings must not be 12434modified. 12435 12436The ACPI_FUNCTION_* macros no longer require quotes around the function 12437name. This allows the Linux source converter to convert the names, now 12438that 12439the converter ignores quoted strings. 12440 12441Example Code and Data Size: These are the sizes for the OS-independent 12442acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12443debug version of the code includes the debug output trace mechanism and 12444has 12445a much larger code and data size. 12446 12447 Previous Release: 12448 12449 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12450 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12451 Current Release: 12452 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12453 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12454 12455 124562) iASL Compiler/Disassembler and Tools: 12457 12458Implemented 3 new warnings for iASL, and implemented multiple warning 12459levels 12460(w2 flag). 12461 124621) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 12463not 12464WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 12465check for the possible timeout, a warning is issued. 12466 124672) Useless operators: If an ASL operator does not specify an optional 12468target 12469operand and it also does not use the function return value from the 12470operator, a warning is issued since the operator effectively does 12471nothing. 12472 124733) Unreferenced objects: If a namespace object is created, but never 12474referenced, a warning is issued. This is a warning level 2 since there 12475are 12476cases where this is ok, such as when a secondary table is loaded that 12477uses 12478the unreferenced objects. Even so, care is taken to only flag objects 12479that 12480don't look like they will ever be used. For example, the reserved methods 12481(starting with an underscore) are usually not referenced because it is 12482expected that the OS will invoke them. 12483 12484---------------------------------------- 1248531 March 2006. Summary of changes for version 20060331: 12486 124871) ACPI CA Core Subsystem: 12488 12489Implemented header file support for the following additional ACPI tables: 12490ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 12491support, 12492all current and known ACPI tables are now defined in the ACPICA headers 12493and 12494are available for use by device drivers and other software. 12495 12496Implemented support to allow tables that contain ACPI names with invalid 12497characters to be loaded. Previously, this would cause the table load to 12498fail, but since there are several known cases of such tables on existing 12499machines, this change was made to enable ACPI support for them. Also, 12500this 12501matches the behavior of the Microsoft ACPI implementation. 12502 12503Fixed a couple regressions introduced during the memory optimization in 12504the 1250520060317 release. The namespace node definition required additional 12506reorganization and an internal datatype that had been changed to 8-bit 12507was 12508restored to 32-bit. (Valery Podrezov) 12509 12510Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 12511could be passed through to AcpiOsReleaseObject which is unexpected. Such 12512null pointers are now trapped and ignored, matching the behavior of the 12513previous implementation before the deployment of AcpiOsReleaseObject. 12514(Valery Podrezov, Fiodor Suietov) 12515 12516Fixed a memory mapping leak during the deletion of a SystemMemory 12517operation 12518region where a cached memory mapping was not deleted. This became a 12519noticeable problem for operation regions that are defined within 12520frequently 12521used control methods. (Dana Meyers) 12522 12523Reorganized the ACPI table header files into two main files: one for the 12524ACPI tables consumed by the ACPICA core, and another for the 12525miscellaneous 12526ACPI tables that are consumed by the drivers and other software. The 12527various 12528FADT definitions were merged into one common section and three different 12529tables (ACPI 1.0, 1.0+, and 2.0) 12530 12531Example Code and Data Size: These are the sizes for the OS-independent 12532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12533debug version of the code includes the debug output trace mechanism and 12534has 12535a much larger code and data size. 12536 12537 Previous Release: 12538 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12539 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12540 Current Release: 12541 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12542 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12543 12544 125452) iASL Compiler/Disassembler and Tools: 12546 12547Disassembler: Implemented support to decode and format all non-AML ACPI 12548tables (tables other than DSDTs and SSDTs.) This includes the new tables 12549added to the ACPICA headers, therefore all current and known ACPI tables 12550are 12551supported. 12552 12553Disassembler: The change to allow ACPI names with invalid characters also 12554enables the disassembly of such tables. Invalid characters within names 12555are 12556changed to '*' to make the name printable; the iASL compiler will still 12557generate an error for such names, however, since this is an invalid ACPI 12558character. 12559 12560Implemented an option for AcpiXtract (-a) to extract all tables found in 12561the 12562input file. The default invocation extracts only the DSDTs and SSDTs. 12563 12564Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 12565makefile for the AcpiXtract utility. 12566 12567---------------------------------------- 1256817 March 2006. Summary of changes for version 20060317: 12569 125701) ACPI CA Core Subsystem: 12571 12572Implemented the use of a cache object for all internal namespace nodes. 12573Since there are about 1000 static nodes in a typical system, this will 12574decrease memory use for cache implementations that minimize per- 12575allocation 12576overhead (such as a slab allocator.) 12577 12578Removed the reference count mechanism for internal namespace nodes, since 12579it 12580was deemed unnecessary. This reduces the size of each namespace node by 12581about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12582case, 12583and 32 bytes for the 64-bit case. 12584 12585Optimized several internal data structures to reduce object size on 64- 12586bit 12587platforms by packing data within the 64-bit alignment. This includes the 12588frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12589instances corresponding to the namespace objects. 12590 12591Added two new strings for the predefined _OSI method: "Windows 2001.1 12592SP1" 12593and "Windows 2006". 12594 12595Split the allocation tracking mechanism out to a separate file, from 12596utalloc.c to uttrack.c. This mechanism appears to be only useful for 12597application-level code. Kernels may wish to not include uttrack.c in 12598distributions. 12599 12600Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12601associated 12602code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12603macros.) 12604 12605Code and Data Size: These are the sizes for the acpica.lib produced by 12606the 12607Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12608ACPI 12609driver or OSPM code. The debug version of the code includes the debug 12610output 12611trace mechanism and has a much larger code and data size. Note that these 12612values will vary depending on the efficiency of the compiler and the 12613compiler options used during generation. 12614 12615 Previous Release: 12616 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12617 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12618 Current Release: 12619 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12620 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12621 12622 126232) iASL Compiler/Disassembler and Tools: 12624 12625Implemented an ANSI C version of the acpixtract utility. This version 12626will 12627automatically extract the DSDT and all SSDTs from the input acpidump text 12628file and dump the binary output to separate files. It can also display a 12629summary of the input file including the headers for each table found and 12630will extract any single ACPI table, with any signature. (See 12631source/tools/acpixtract) 12632 12633---------------------------------------- 1263410 March 2006. Summary of changes for version 20060310: 12635 126361) ACPI CA Core Subsystem: 12637 12638Tagged all external interfaces to the subsystem with the new 12639ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12640assist 12641kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12642macro. The default definition is NULL. 12643 12644Added the ACPI_THREAD_ID type for the return value from 12645AcpiOsGetThreadId. 12646This allows the host to define this as necessary to simplify kernel 12647integration. The default definition is ACPI_NATIVE_UINT. 12648 12649Fixed two interpreter problems related to error processing, the deletion 12650of 12651objects, and placing invalid pointers onto the internal operator result 12652stack. BZ 6028, 6151 (Valery Podrezov) 12653 12654Increased the reference count threshold where a warning is emitted for 12655large 12656reference counts in order to eliminate unnecessary warnings on systems 12657with 12658large namespaces (especially 64-bit.) Increased the value from 0x400 to 126590x800. 12660 12661Due to universal disagreement as to the meaning of the 'c' in the 12662calloc() 12663function, the ACPI_MEM_CALLOCATE macro has been renamed to 12664ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12665ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12666ACPI_FREE. 12667 12668Code and Data Size: These are the sizes for the acpica.lib produced by 12669the 12670Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12671ACPI 12672driver or OSPM code. The debug version of the code includes the debug 12673output 12674trace mechanism and has a much larger code and data size. Note that these 12675values will vary depending on the efficiency of the compiler and the 12676compiler options used during generation. 12677 12678 Previous Release: 12679 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12680 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12681 Current Release: 12682 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12683 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12684 12685 126862) iASL Compiler/Disassembler: 12687 12688Disassembler: implemented support for symbolic resource descriptor 12689references. If a CreateXxxxField operator references a fixed offset 12690within 12691a 12692resource descriptor, a name is assigned to the descriptor and the offset 12693is 12694translated to the appropriate resource tag and pathname. The addition of 12695this support brings the disassembled code very close to the original ASL 12696source code and helps eliminate run-time errors when the disassembled 12697code 12698is modified (and recompiled) in such a way as to invalidate the original 12699fixed offsets. 12700 12701Implemented support for a Descriptor Name as the last parameter to the 12702ASL 12703Register() macro. This parameter was inadvertently left out of the ACPI 12704specification, and will be added for ACPI 3.0b. 12705 12706Fixed a problem where the use of the "_OSI" string (versus the full path 12707"\_OSI") caused an internal compiler error. ("No back ptr to op") 12708 12709Fixed a problem with the error message that occurs when an invalid string 12710is 12711used for a _HID object (such as one with an embedded asterisk: 12712"*PNP010A".) 12713The correct message is now displayed. 12714 12715---------------------------------------- 1271617 February 2006. Summary of changes for version 20060217: 12717 127181) ACPI CA Core Subsystem: 12719 12720Implemented a change to the IndexField support to match the behavior of 12721the 12722Microsoft AML interpreter. The value written to the Index register is now 12723a 12724byte offset, no longer an index based upon the width of the Data 12725register. 12726This should fix IndexField problems seen on some machines where the Data 12727register is not exactly one byte wide. The ACPI specification will be 12728clarified on this point. 12729 12730Fixed a problem where several resource descriptor types could overrun the 12731internal descriptor buffer due to size miscalculation: VendorShort, 12732VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12733affect all platforms. 12734 12735Fixed a problem where individual resource descriptors were misaligned 12736within 12737the internal buffer, causing alignment faults on IA64 platforms. 12738 12739Code and Data Size: These are the sizes for the acpica.lib produced by 12740the 12741Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12742ACPI 12743driver or OSPM code. The debug version of the code includes the debug 12744output 12745trace mechanism and has a much larger code and data size. Note that these 12746values will vary depending on the efficiency of the compiler and the 12747compiler options used during generation. 12748 12749 Previous Release: 12750 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12751 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12752 Current Release: 12753 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12754 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12755 12756 127572) iASL Compiler/Disassembler: 12758 12759Implemented support for new reserved names: _WDG and _WED are Microsoft 12760extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12761defined method (Throttling Depth Limit.) 12762 12763Fixed a problem where a zero-length VendorShort or VendorLong resource 12764descriptor was incorrectly emitted as a descriptor of length one. 12765 12766---------------------------------------- 1276710 February 2006. Summary of changes for version 20060210: 12768 127691) ACPI CA Core Subsystem: 12770 12771Removed a couple of extraneous ACPI_ERROR messages that appeared during 12772normal execution. These became apparent after the conversion from 12773ACPI_DEBUG_PRINT. 12774 12775Fixed a problem where the CreateField operator could hang if the BitIndex 12776or 12777NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12778 12779Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12780failed with an exception. This also fixes a couple of related RefOf and 12781DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12782 12783Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12784of 12785AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12786BZ 127875480) 12788 12789Implemented a memory cleanup at the end of the execution of each 12790iteration 12791of an AML While() loop, preventing the accumulation of outstanding 12792objects. 12793(Valery Podrezov, BZ 5427) 12794 12795Eliminated a chunk of duplicate code in the object resolution code. 12796(Valery 12797Podrezov, BZ 5336) 12798 12799Fixed several warnings during the 64-bit code generation. 12800 12801The AcpiSrc source code conversion tool now inserts one line of 12802whitespace 12803after an if() statement that is followed immediately by a comment, 12804improving 12805readability of the Linux code. 12806 12807Code and Data Size: The current and previous library sizes for the core 12808subsystem are shown below. These are the code and data sizes for the 12809acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12810These 12811values do not include any ACPI driver or OSPM code. The debug version of 12812the 12813code includes the debug output trace mechanism and has a much larger code 12814and data size. Note that these values will vary depending on the 12815efficiency 12816of the compiler and the compiler options used during generation. 12817 12818 Previous Release: 12819 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12820 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12821 Current Release: 12822 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12823 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12824 12825 128262) iASL Compiler/Disassembler: 12827 12828Fixed a problem with the disassembly of a BankField operator with a 12829complex 12830expression for the BankValue parameter. 12831 12832---------------------------------------- 1283327 January 2006. Summary of changes for version 20060127: 12834 128351) ACPI CA Core Subsystem: 12836 12837Implemented support in the Resource Manager to allow unresolved 12838namestring 12839references within resource package objects for the _PRT method. This 12840support 12841is in addition to the previously implemented unresolved reference support 12842within the AML parser. If the interpreter slack mode is enabled, these 12843unresolved references will be passed through to the caller as a NULL 12844package 12845entry. 12846 12847Implemented and deployed new macros and functions for error and warning 12848messages across the subsystem. These macros are simpler and generate less 12849code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12850ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12851macros remain defined to allow ACPI drivers time to migrate to the new 12852macros. 12853 12854Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12855the 12856Acquire/Release Lock OSL interfaces. 12857 12858Fixed a problem where Alias ASL operators are sometimes not correctly 12859resolved, in both the interpreter and the iASL compiler. 12860 12861Fixed several problems with the implementation of the 12862ConcatenateResTemplate 12863ASL operator. As per the ACPI specification, zero length buffers are now 12864treated as a single EndTag. One-length buffers always cause a fatal 12865exception. Non-zero length buffers that do not end with a full 2-byte 12866EndTag 12867cause a fatal exception. 12868 12869Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12870interface. (With assistance from Thomas Renninger) 12871 12872Code and Data Size: The current and previous library sizes for the core 12873subsystem are shown below. These are the code and data sizes for the 12874acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12875These 12876values do not include any ACPI driver or OSPM code. The debug version of 12877the 12878code includes the debug output trace mechanism and has a much larger code 12879and data size. Note that these values will vary depending on the 12880efficiency 12881of the compiler and the compiler options used during generation. 12882 12883 Previous Release: 12884 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12885 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12886 Current Release: 12887 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12888 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12889 12890 128912) iASL Compiler/Disassembler: 12892 12893Fixed an internal error that was generated for any forward references to 12894ASL 12895Alias objects. 12896 12897---------------------------------------- 1289813 January 2006. Summary of changes for version 20060113: 12899 129001) ACPI CA Core Subsystem: 12901 12902Added 2006 copyright to all module headers and signons. This affects 12903virtually every file in the ACPICA core subsystem, iASL compiler, and the 12904utilities. 12905 12906Enhanced the ACPICA error reporting in order to simplify user migration 12907to 12908the non-debug version of ACPICA. Replaced all instances of the 12909ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12910debug 12911levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12912respectively. This preserves all error and warning messages in the non- 12913debug 12914version of the ACPICA code (this has been referred to as the "debug lite" 12915option.) Over 200 cases were converted to create a total of over 380 12916error/warning messages across the ACPICA code. This increases the code 12917and 12918data size of the default non-debug version of the code somewhat (about 1291913K), 12920but all error/warning reporting may be disabled if desired (and code 12921eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12922configuration option. The size of the debug version of ACPICA remains 12923about 12924the same. 12925 12926Fixed a memory leak within the AML Debugger "Set" command. One object was 12927not properly deleted for every successful invocation of the command. 12928 12929Code and Data Size: The current and previous library sizes for the core 12930subsystem are shown below. These are the code and data sizes for the 12931acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12932These 12933values do not include any ACPI driver or OSPM code. The debug version of 12934the 12935code includes the debug output trace mechanism and has a much larger code 12936and data size. Note that these values will vary depending on the 12937efficiency 12938of the compiler and the compiler options used during generation. 12939 12940 Previous Release: 12941 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12942 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12943 Current Release: 12944 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12945 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12946 12947 129482) iASL Compiler/Disassembler: 12949 12950The compiler now officially supports the ACPI 3.0a specification that was 12951released on December 30, 2005. (Specification is available at 12952www.acpi.info) 12953 12954---------------------------------------- 1295516 December 2005. Summary of changes for version 20051216: 12956 129571) ACPI CA Core Subsystem: 12958 12959Implemented optional support to allow unresolved names within ASL Package 12960objects. A null object is inserted in the package when a named reference 12961cannot be located in the current namespace. Enabled via the interpreter 12962slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12963machines 12964that contain such code. 12965 12966Implemented an optimization to the initialization sequence that can 12967improve 12968boot time. During ACPI device initialization, the _STA method is now run 12969if 12970and only if the _INI method exists. The _STA method is used to determine 12971if 12972the device is present; An _INI can only be run if _STA returns present, 12973but 12974it is a waste of time to run the _STA method if the _INI does not exist. 12975(Prototype and assistance from Dong Wei) 12976 12977Implemented use of the C99 uintptr_t for the pointer casting macros if it 12978is 12979available in the current compiler. Otherwise, the default (void *) cast 12980is 12981used as before. 12982 12983Fixed some possible memory leaks found within the execution path of the 12984Break, Continue, If, and CreateField operators. (Valery Podrezov) 12985 12986Fixed a problem introduced in the 20051202 release where an exception is 12987generated during method execution if a control method attempts to declare 12988another method. 12989 12990Moved resource descriptor string constants that are used by both the AML 12991disassembler and AML debugger to the common utilities directory so that 12992these components are independent. 12993 12994Implemented support in the AcpiExec utility (-e switch) to globally 12995ignore 12996exceptions during control method execution (method is not aborted.) 12997 12998Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12999generation. 13000 13001Code and Data Size: The current and previous library sizes for the core 13002subsystem are shown below. These are the code and data sizes for the 13003acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13004These 13005values do not include any ACPI driver or OSPM code. The debug version of 13006the 13007code includes the debug output trace mechanism and has a much larger code 13008and data size. Note that these values will vary depending on the 13009efficiency 13010of the compiler and the compiler options used during generation. 13011 13012 Previous Release: 13013 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13014 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 13015 Current Release: 13016 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 13017 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 13018 13019 130202) iASL Compiler/Disassembler: 13021 13022Fixed a problem where a CPU stack overflow fault could occur if a 13023recursive 13024method call was made from within a Return statement. 13025 13026---------------------------------------- 1302702 December 2005. Summary of changes for version 20051202: 13028 130291) ACPI CA Core Subsystem: 13030 13031Modified the parsing of control methods to no longer create namespace 13032objects during the first pass of the parse. Objects are now created only 13033during the execute phase, at the moment the namespace creation operator 13034is 13035encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 13036This 13037should eliminate ALREADY_EXISTS exceptions seen on some machines where 13038reentrant control methods are protected by an AML mutex. The mutex will 13039now 13040correctly block multiple threads from attempting to create the same 13041object 13042more than once. 13043 13044Increased the number of available Owner Ids for namespace object tracking 13045from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 13046on 13047some machines with a large number of ACPI tables (either static or 13048dynamic). 13049 13050Fixed a problem with the AcpiExec utility where a fault could occur when 13051the 13052-b switch (batch mode) is used. 13053 13054Enhanced the namespace dump routine to output the owner ID for each 13055namespace object. 13056 13057Code and Data Size: The current and previous library sizes for the core 13058subsystem are shown below. These are the code and data sizes for the 13059acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13060These 13061values do not include any ACPI driver or OSPM code. The debug version of 13062the 13063code includes the debug output trace mechanism and has a much larger code 13064and data size. Note that these values will vary depending on the 13065efficiency 13066of the compiler and the compiler options used during generation. 13067 13068 Previous Release: 13069 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13070 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13071 Current Release: 13072 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13073 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 13074 13075 130762) iASL Compiler/Disassembler: 13077 13078Fixed a parse error during compilation of certain Switch/Case constructs. 13079To 13080simplify the parse, the grammar now allows for multiple Default 13081statements 13082and this error is now detected and flagged during the analysis phase. 13083 13084Disassembler: The disassembly now includes the contents of the original 13085table header within a comment at the start of the file. This includes the 13086name and version of the original ASL compiler. 13087 13088---------------------------------------- 1308917 November 2005. Summary of changes for version 20051117: 13090 130911) ACPI CA Core Subsystem: 13092 13093Fixed a problem in the AML parser where the method thread count could be 13094decremented below zero if any errors occurred during the method parse 13095phase. 13096This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 13097machines. 13098This also fixed a related regression with the mechanism that detects and 13099corrects methods that cannot properly handle reentrancy (related to the 13100deployment of the new OwnerId mechanism.) 13101 13102Eliminated the pre-parsing of control methods (to detect errors) during 13103table load. Related to the problem above, this was causing unwind issues 13104if 13105any errors occurred during the parse, and it seemed to be overkill. A 13106table 13107load should not be aborted if there are problems with any single control 13108method, thus rendering this feature rather pointless. 13109 13110Fixed a problem with the new table-driven resource manager where an 13111internal 13112buffer overflow could occur for small resource templates. 13113 13114Implemented a new external interface, AcpiGetVendorResource. This 13115interface 13116will find and return a vendor-defined resource descriptor within a _CRS 13117or 13118_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 13119Helgaas. 13120 13121Removed the length limit (200) on string objects as per the upcoming ACPI 131223.0A specification. This affects the following areas of the interpreter: 131231) 13124any implicit conversion of a Buffer to a String, 2) a String object 13125result 13126of the ASL Concatenate operator, 3) the String object result of the ASL 13127ToString operator. 13128 13129Fixed a problem in the Windows OS interface layer (OSL) where a 13130WAIT_FOREVER 13131on a semaphore object would incorrectly timeout. This allows the 13132multithreading features of the AcpiExec utility to work properly under 13133Windows. 13134 13135Updated the Linux makefiles for the iASL compiler and AcpiExec to include 13136the recently added file named "utresrc.c". 13137 13138Code and Data Size: The current and previous library sizes for the core 13139subsystem are shown below. These are the code and data sizes for the 13140acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13141These 13142values do not include any ACPI driver or OSPM code. The debug version of 13143the 13144code includes the debug output trace mechanism and has a much larger code 13145and data size. Note that these values will vary depending on the 13146efficiency 13147of the compiler and the compiler options used during generation. 13148 13149 Previous Release: 13150 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13151 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13152 Current Release: 13153 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13154 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13155 13156 131572) iASL Compiler/Disassembler: 13158 13159Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 13160specification. For the iASL compiler, this means that string literals 13161within 13162the source ASL can be of any length. 13163 13164Enhanced the listing output to dump the AML code for resource descriptors 13165immediately after the ASL code for each descriptor, instead of in a block 13166at 13167the end of the entire resource template. 13168 13169Enhanced the compiler debug output to dump the entire original parse tree 13170constructed during the parse phase, before any transforms are applied to 13171the 13172tree. The transformed tree is dumped also. 13173 13174---------------------------------------- 1317502 November 2005. Summary of changes for version 20051102: 13176 131771) ACPI CA Core Subsystem: 13178 13179Modified the subsystem initialization sequence to improve GPE support. 13180The 13181GPE initialization has been split into two parts in order to defer 13182execution 13183of the _PRW methods (Power Resources for Wake) until after the hardware 13184is 13185fully initialized and the SCI handler is installed. This allows the _PRW 13186methods to access fields protected by the Global Lock. This will fix 13187systems 13188where a NO_GLOBAL_LOCK exception has been seen during initialization. 13189 13190Converted the ACPI internal object disassemble and display code within 13191the 13192AML debugger to fully table-driven operation, reducing code size and 13193increasing maintainability. 13194 13195Fixed a regression with the ConcatenateResTemplate() ASL operator 13196introduced 13197in the 20051021 release. 13198 13199Implemented support for "local" internal ACPI object types within the 13200debugger "Object" command and the AcpiWalkNamespace external interfaces. 13201These local types include RegionFields, BankFields, IndexFields, Alias, 13202and 13203reference objects. 13204 13205Moved common AML resource handling code into a new file, "utresrc.c". 13206This 13207code is shared by both the Resource Manager and the AML Debugger. 13208 13209Code and Data Size: The current and previous library sizes for the core 13210subsystem are shown below. These are the code and data sizes for the 13211acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13212These 13213values do not include any ACPI driver or OSPM code. The debug version of 13214the 13215code includes the debug output trace mechanism and has a much larger code 13216and data size. Note that these values will vary depending on the 13217efficiency 13218of the compiler and the compiler options used during generation. 13219 13220 Previous Release: 13221 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13222 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13223 Current Release: 13224 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13225 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13226 13227 132282) iASL Compiler/Disassembler: 13229 13230Fixed a problem with very large initializer lists (more than 4000 13231elements) 13232for both Buffer and Package objects where the parse stack could overflow. 13233 13234Enhanced the pre-compile source code scan for non-ASCII characters to 13235ignore 13236characters within comment fields. The scan is now always performed and is 13237no 13238longer optional, detecting invalid characters within a source file 13239immediately rather than during the parse phase or later. 13240 13241Enhanced the ASL grammar definition to force early reductions on all 13242list- 13243style grammar elements so that the overall parse stack usage is greatly 13244reduced. This should improve performance and reduce the possibility of 13245parse 13246stack overflow. 13247 13248Eliminated all reduce/reduce conflicts in the iASL parser generation. 13249Also, 13250with the addition of a %expected statement, the compiler generates from 13251source with no warnings. 13252 13253Fixed a possible segment fault in the disassembler if the input filename 13254does not contain a "dot" extension (Thomas Renninger). 13255 13256---------------------------------------- 1325721 October 2005. Summary of changes for version 20051021: 13258 132591) ACPI CA Core Subsystem: 13260 13261Implemented support for the EM64T and other x86-64 processors. This 13262essentially entails recognizing that these processors support non-aligned 13263memory transfers. Previously, all 64-bit processors were assumed to lack 13264hardware support for non-aligned transfers. 13265 13266Completed conversion of the Resource Manager to nearly full table-driven 13267operation. Specifically, the resource conversion code (convert AML to 13268internal format and the reverse) and the debug code to dump internal 13269resource descriptors are fully table-driven, reducing code and data size 13270and 13271improving maintainability. 13272 13273The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 13274word 13275on 64-bit processors instead of a fixed 32-bit word. (With assistance 13276from 13277Alexey Starikovskiy) 13278 13279Implemented support within the resource conversion code for the Type- 13280Specific byte within the various ACPI 3.0 *WordSpace macros. 13281 13282Fixed some issues within the resource conversion code for the type- 13283specific 13284flags for both Memory and I/O address resource descriptors. For Memory, 13285implemented support for the MTP and TTP flags. For I/O, split the TRS and 13286TTP flags into two separate fields. 13287 13288Code and Data Size: The current and previous library sizes for the core 13289subsystem are shown below. These are the code and data sizes for the 13290acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13291These 13292values do not include any ACPI driver or OSPM code. The debug version of 13293the 13294code includes the debug output trace mechanism and has a much larger code 13295and data size. Note that these values will vary depending on the 13296efficiency 13297of the compiler and the compiler options used during generation. 13298 13299 Previous Release: 13300 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13301 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13302 Current Release: 13303 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13304 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13305 13306 13307 133082) iASL Compiler/Disassembler: 13309 13310Relaxed a compiler restriction that disallowed a ResourceIndex byte if 13311the 13312corresponding ResourceSource string was not also present in a resource 13313descriptor declaration. This restriction caused problems with existing 13314AML/ASL code that includes the Index byte without the string. When such 13315AML 13316was disassembled, it could not be compiled without modification. Further, 13317the modified code created a resource template with a different size than 13318the 13319original, breaking code that used fixed offsets into the resource 13320template 13321buffer. 13322 13323Removed a recent feature of the disassembler to ignore a lone 13324ResourceIndex 13325byte. This byte is now emitted if present so that the exact AML can be 13326reproduced when the disassembled code is recompiled. 13327 13328Improved comments and text alignment for the resource descriptor code 13329emitted by the disassembler. 13330 13331Implemented disassembler support for the ACPI 3.0 AccessSize field within 13332a 13333Register() resource descriptor. 13334 13335---------------------------------------- 1333630 September 2005. Summary of changes for version 20050930: 13337 133381) ACPI CA Core Subsystem: 13339 13340Completed a major overhaul of the Resource Manager code - specifically, 13341optimizations in the area of the AML/internal resource conversion code. 13342The 13343code has been optimized to simplify and eliminate duplicated code, CPU 13344stack 13345use has been decreased by optimizing function parameters and local 13346variables, and naming conventions across the manager have been 13347standardized 13348for clarity and ease of maintenance (this includes function, parameter, 13349variable, and struct/typedef names.) The update may force changes in some 13350driver code, depending on how resources are handled by the host OS. 13351 13352All Resource Manager dispatch and information tables have been moved to a 13353single location for clarity and ease of maintenance. One new file was 13354created, named "rsinfo.c". 13355 13356The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 13357guarantee that the argument is not evaluated twice, making them less 13358prone 13359to macro side-effects. However, since there exists the possibility of 13360additional stack use if a particular compiler cannot optimize them (such 13361as 13362in the debug generation case), the original macros are optionally 13363available. 13364Note that some invocations of the return_VALUE macro may now cause size 13365mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 13366to 13367eliminate these. (From Randy Dunlap) 13368 13369Implemented a new mechanism to enable debug tracing for individual 13370control 13371methods. A new external interface, AcpiDebugTrace, is provided to enable 13372this mechanism. The intent is to allow the host OS to easily enable and 13373disable tracing for problematic control methods. This interface can be 13374easily exposed to a user or debugger interface if desired. See the file 13375psxface.c for details. 13376 13377AcpiUtCallocate will now return a valid pointer if a length of zero is 13378specified - a length of one is used and a warning is issued. This matches 13379the behavior of AcpiUtAllocate. 13380 13381Code and Data Size: The current and previous library sizes for the core 13382subsystem are shown below. These are the code and data sizes for the 13383acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13384These 13385values do not include any ACPI driver or OSPM code. The debug version of 13386the 13387code includes the debug output trace mechanism and has a much larger code 13388and data size. Note that these values will vary depending on the 13389efficiency 13390of the compiler and the compiler options used during generation. 13391 13392 Previous Release: 13393 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13394 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13395 Current Release: 13396 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13397 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13398 13399 134002) iASL Compiler/Disassembler: 13401 13402A remark is issued if the effective compile-time length of a package or 13403buffer is zero. Previously, this was a warning. 13404 13405---------------------------------------- 1340616 September 2005. Summary of changes for version 20050916: 13407 134081) ACPI CA Core Subsystem: 13409 13410Fixed a problem within the Resource Manager where support for the Generic 13411Register descriptor was not fully implemented. This descriptor is now 13412fully 13413recognized, parsed, disassembled, and displayed. 13414 13415Completely restructured the Resource Manager code to utilize table-driven 13416dispatch and lookup, eliminating many of the large switch() statements. 13417This 13418reduces overall subsystem code size and code complexity. Affects the 13419resource parsing and construction, disassembly, and debug dump output. 13420 13421Cleaned up and restructured the debug dump output for all resource 13422descriptors. Improved readability of the output and reduced code size. 13423 13424Fixed a problem where changes to internal data structures caused the 13425optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 13426 13427Code and Data Size: The current and previous library sizes for the core 13428subsystem are shown below. These are the code and data sizes for the 13429acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13430These 13431values do not include any ACPI driver or OSPM code. The debug version of 13432the 13433code includes the debug output trace mechanism and has a much larger code 13434and data size. Note that these values will vary depending on the 13435efficiency 13436of the compiler and the compiler options used during generation. 13437 13438 Previous Release: 13439 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13440 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13441 Current Release: 13442 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13443 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13444 13445 134462) iASL Compiler/Disassembler: 13447 13448Updated the disassembler to automatically insert an EndDependentFn() 13449macro 13450into the ASL stream if this macro is missing in the original AML code, 13451simplifying compilation of the resulting ASL module. 13452 13453Fixed a problem in the disassembler where a disassembled ResourceSource 13454string (within a large resource descriptor) was not surrounded by quotes 13455and 13456not followed by a comma, causing errors when the resulting ASL module was 13457compiled. Also, escape sequences within a ResourceSource string are now 13458handled correctly (especially "\\") 13459 13460---------------------------------------- 1346102 September 2005. Summary of changes for version 20050902: 13462 134631) ACPI CA Core Subsystem: 13464 13465Fixed a problem with the internal Owner ID allocation and deallocation 13466mechanisms for control method execution and recursive method invocation. 13467This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 13468messages seen on some systems. Recursive method invocation depth is 13469currently limited to 255. (Alexey Starikovskiy) 13470 13471Completely eliminated all vestiges of support for the "module-level 13472executable code" until this support is fully implemented and debugged. 13473This 13474should eliminate the NO_RETURN_VALUE exceptions seen during table load on 13475some systems that invoke this support. 13476 13477Fixed a problem within the resource manager code where the transaction 13478flags 13479for a 64-bit address descriptor were handled incorrectly in the type- 13480specific flag byte. 13481 13482Consolidated duplicate code within the address descriptor resource 13483manager 13484code, reducing overall subsystem code size. 13485 13486Fixed a fault when using the AML debugger "disassemble" command to 13487disassemble individual control methods. 13488 13489Removed references to the "release_current" directory within the Unix 13490release package. 13491 13492Code and Data Size: The current and previous core subsystem library sizes 13493are shown below. These are the code and data sizes for the acpica.lib 13494produced by the Microsoft Visual C++ 6.0 compiler. These values do not 13495include any ACPI driver or OSPM code. The debug version of the code 13496includes 13497the debug output trace mechanism and has a much larger code and data 13498size. 13499Note that these values will vary depending on the efficiency of the 13500compiler 13501and the compiler options used during generation. 13502 13503 Previous Release: 13504 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13505 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13506 Current Release: 13507 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13508 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13509 13510 135112) iASL Compiler/Disassembler: 13512 13513Implemented an error check for illegal duplicate values in the interrupt 13514and 13515dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 13516Interrupt(). 13517 13518Implemented error checking for the Irq() and IrqNoFlags() macros to 13519detect 13520too many values in the interrupt list (16 max) and invalid values in the 13521list (range 0 - 15) 13522 13523The maximum length string literal within an ASL file is now restricted to 13524200 characters as per the ACPI specification. 13525 13526Fixed a fault when using the -ln option (generate namespace listing). 13527 13528Implemented an error check to determine if a DescriptorName within a 13529resource descriptor has already been used within the current scope. 13530 13531---------------------------------------- 1353215 August 2005. Summary of changes for version 20050815: 13533 135341) ACPI CA Core Subsystem: 13535 13536Implemented a full bytewise compare to determine if a table load request 13537is 13538attempting to load a duplicate table. The compare is performed if the 13539table 13540signatures and table lengths match. This will allow different tables with 13541the same OEM Table ID and revision to be loaded - probably against the 13542ACPI 13543specification, but discovered in the field nonetheless. 13544 13545Added the changes.txt logfile to each of the zipped release packages. 13546 13547Code and Data Size: Current and previous core subsystem library sizes are 13548shown below. These are the code and data sizes for the acpica.lib 13549produced 13550by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13551any ACPI driver or OSPM code. The debug version of the code includes the 13552debug output trace mechanism and has a much larger code and data size. 13553Note 13554that these values will vary depending on the efficiency of the compiler 13555and 13556the compiler options used during generation. 13557 13558 Previous Release: 13559 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13560 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13561 Current Release: 13562 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13563 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13564 13565 135662) iASL Compiler/Disassembler: 13567 13568Fixed a problem where incorrect AML code could be generated for Package 13569objects if optimization is disabled (via the -oa switch). 13570 13571Fixed a problem with where incorrect AML code is generated for variable- 13572length packages when the package length is not specified and the number 13573of 13574initializer values is greater than 255. 13575 13576 13577---------------------------------------- 1357829 July 2005. Summary of changes for version 20050729: 13579 135801) ACPI CA Core Subsystem: 13581 13582Implemented support to ignore an attempt to install/load a particular 13583ACPI 13584table more than once. Apparently there exists BIOS code that repeatedly 13585attempts to load the same SSDT upon certain events. With assistance from 13586Venkatesh Pallipadi. 13587 13588Restructured the main interface to the AML parser in order to correctly 13589handle all exceptional conditions. This will prevent leakage of the 13590OwnerId 13591resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13592some 13593machines. With assistance from Alexey Starikovskiy. 13594 13595Support for "module level code" has been disabled in this version due to 13596a 13597number of issues that have appeared on various machines. The support can 13598be 13599enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13600compilation. When the issues are fully resolved, the code will be enabled 13601by 13602default again. 13603 13604Modified the internal functions for debug print support to define the 13605FunctionName parameter as a (const char *) for compatibility with 13606compiler 13607built-in macros such as __FUNCTION__, etc. 13608 13609Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13610 13611Implemented support to display an object count summary for the AML 13612Debugger 13613commands Object and Methods. 13614 13615Code and Data Size: Current and previous core subsystem library sizes are 13616shown below. These are the code and data sizes for the acpica.lib 13617produced 13618by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13619any ACPI driver or OSPM code. The debug version of the code includes the 13620debug output trace mechanism and has a much larger code and data size. 13621Note 13622that these values will vary depending on the efficiency of the compiler 13623and 13624the compiler options used during generation. 13625 13626 Previous Release: 13627 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13628 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13629 Current Release: 13630 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13631 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13632 13633 136342) iASL Compiler/Disassembler: 13635 13636Fixed a regression that appeared in the 20050708 version of the compiler 13637where an error message was inadvertently emitted for invocations of the 13638_OSI 13639reserved control method. 13640 13641---------------------------------------- 1364208 July 2005. Summary of changes for version 20050708: 13643 136441) ACPI CA Core Subsystem: 13645 13646The use of the CPU stack in the debug version of the subsystem has been 13647considerably reduced. Previously, a debug structure was declared in every 13648function that used the debug macros. This structure has been removed in 13649favor of declaring the individual elements as parameters to the debug 13650functions. This reduces the cumulative stack use during nested execution 13651of 13652ACPI function calls at the cost of a small increase in the code size of 13653the 13654debug version of the subsystem. With assistance from Alexey Starikovskiy 13655and 13656Len Brown. 13657 13658Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13659headers to define a macro that will return the current function name at 13660runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13661by 13662the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13663compiler-dependent header, the function name is saved on the CPU stack 13664(one 13665pointer per function.) This mechanism is used because apparently there 13666exists no standard ANSI-C defined macro that that returns the function 13667name. 13668 13669Redesigned and reimplemented the "Owner ID" mechanism used to track 13670namespace objects created/deleted by ACPI tables and control method 13671execution. A bitmap is now used to allocate and free the IDs, thus 13672solving 13673the wraparound problem present in the previous implementation. The size 13674of 13675the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13676Starikovskiy). 13677 13678Removed the UINT32_BIT and UINT16_BIT types that were used for the 13679bitfield 13680flag definitions within the headers for the predefined ACPI tables. These 13681have been replaced by UINT8_BIT in order to increase the code portability 13682of 13683the subsystem. If the use of UINT8 remains a problem, we may be forced to 13684eliminate bitfields entirely because of a lack of portability. 13685 13686Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13687This 13688is a frequently used function and this improvement increases the 13689performance 13690of the entire subsystem (Alexey Starikovskiy). 13691 13692Fixed several possible memory leaks and the inverse - premature object 13693deletion (Alexey Starikovskiy). 13694 13695Code and Data Size: Current and previous core subsystem library sizes are 13696shown below. These are the code and data sizes for the acpica.lib 13697produced 13698by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13699any ACPI driver or OSPM code. The debug version of the code includes the 13700debug output trace mechanism and has a much larger code and data size. 13701Note 13702that these values will vary depending on the efficiency of the compiler 13703and 13704the compiler options used during generation. 13705 13706 Previous Release: 13707 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13708 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13709 Current Release: 13710 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13711 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13712 13713---------------------------------------- 1371424 June 2005. Summary of changes for version 20050624: 13715 137161) ACPI CA Core Subsystem: 13717 13718Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13719the host-defined cache object. This allows the OSL implementation to 13720define 13721and type this object in any manner desired, simplifying the OSL 13722implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13723Linux, and should be defined in the OS-specific header file for other 13724operating systems as required. 13725 13726Changed the interface to AcpiOsAcquireObject to directly return the 13727requested object as the function return (instead of ACPI_STATUS.) This 13728change was made for performance reasons, since this is the purpose of the 13729interface in the first place. AcpiOsAcquireObject is now similar to the 13730AcpiOsAllocate interface. 13731 13732Implemented a new AML debugger command named Businfo. This command 13733displays 13734information about all devices that have an associate _PRT object. The 13735_ADR, 13736_HID, _UID, and _CID are displayed for these devices. 13737 13738Modified the initialization sequence in AcpiInitializeSubsystem to call 13739the 13740OSL interface AcpiOslInitialize first, before any local initialization. 13741This 13742change was required because the global initialization now calls OSL 13743interfaces. 13744 13745Enhanced the Dump command to display the entire contents of Package 13746objects 13747(including all sub-objects and their values.) 13748 13749Restructured the code base to split some files because of size and/or 13750because the code logically belonged in a separate file. New files are 13751listed 13752below. All makefiles and project files included in the ACPI CA release 13753have 13754been updated. 13755 utilities/utcache.c /* Local cache interfaces */ 13756 utilities/utmutex.c /* Local mutex support */ 13757 utilities/utstate.c /* State object support */ 13758 interpreter/parser/psloop.c /* Main AML parse loop */ 13759 13760Code and Data Size: Current and previous core subsystem library sizes are 13761shown below. These are the code and data sizes for the acpica.lib 13762produced 13763by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13764any ACPI driver or OSPM code. The debug version of the code includes the 13765debug output trace mechanism and has a much larger code and data size. 13766Note 13767that these values will vary depending on the efficiency of the compiler 13768and 13769the compiler options used during generation. 13770 13771 Previous Release: 13772 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13773 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13774 Current Release: 13775 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13776 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13777 13778 137792) iASL Compiler/Disassembler: 13780 13781Fixed a regression introduced in version 20050513 where the use of a 13782Package 13783object within a Case() statement caused a compile time exception. The 13784original behavior has been restored (a Match() operator is emitted.) 13785 13786---------------------------------------- 1378717 June 2005. Summary of changes for version 20050617: 13788 137891) ACPI CA Core Subsystem: 13790 13791Moved the object cache operations into the OS interface layer (OSL) to 13792allow 13793the host OS to handle these operations if desired (for example, the Linux 13794OSL will invoke the slab allocator). This support is optional; the 13795compile 13796time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13797cache 13798code in the ACPI CA core. The new OSL interfaces are shown below. See 13799utalloc.c for an example implementation, and acpiosxf.h for the exact 13800interface definitions. With assistance from Alexey Starikovskiy. 13801 AcpiOsCreateCache 13802 AcpiOsDeleteCache 13803 AcpiOsPurgeCache 13804 AcpiOsAcquireObject 13805 AcpiOsReleaseObject 13806 13807Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13808return 13809and restore a flags parameter. This fits better with many OS lock models. 13810Note: the current execution state (interrupt handler or not) is no longer 13811passed to these interfaces. If necessary, the OSL must determine this 13812state 13813by itself, a simple and fast operation. With assistance from Alexey 13814Starikovskiy. 13815 13816Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13817present if the revision of the RSDP was 2 or greater. According to the 13818ACPI 13819specification, the XSDT is optional in all cases, and the table manager 13820therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13821Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13822contain 13823only the RSDT. 13824 13825Fixed an interpreter problem with the Mid() operator in the case of an 13826input 13827string where the resulting output string is of zero length. It now 13828correctly 13829returns a valid, null terminated string object instead of a string object 13830with a null pointer. 13831 13832Fixed a problem with the control method argument handling to allow a 13833store 13834to an Arg object that already contains an object of type Device. The 13835Device 13836object is now correctly overwritten. Previously, an error was returned. 13837 13838 13839Enhanced the debugger Find command to emit object values in addition to 13840the 13841found object pathnames. The output format is the same as the dump 13842namespace 13843command. 13844 13845Enhanced the debugger Set command. It now has the ability to set the 13846value 13847of any Named integer object in the namespace (Previously, only method 13848locals 13849and args could be set.) 13850 13851Code and Data Size: Current and previous core subsystem library sizes are 13852shown below. These are the code and data sizes for the acpica.lib 13853produced 13854by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13855any ACPI driver or OSPM code. The debug version of the code includes the 13856debug output trace mechanism and has a much larger code and data size. 13857Note 13858that these values will vary depending on the efficiency of the compiler 13859and 13860the compiler options used during generation. 13861 13862 Previous Release: 13863 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13864 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13865 Current Release: 13866 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13867 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13868 13869 138702) iASL Compiler/Disassembler: 13871 13872Fixed a regression in the disassembler where if/else/while constructs 13873were 13874output incorrectly. This problem was introduced in the previous release 13875(20050526). This problem also affected the single-step disassembly in the 13876debugger. 13877 13878Fixed a problem where compiling the reserved _OSI method would randomly 13879(but 13880rarely) produce compile errors. 13881 13882Enhanced the disassembler to emit compilable code in the face of 13883incorrect 13884AML resource descriptors. If the optional ResourceSourceIndex is present, 13885but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13886disassembly. Otherwise, the resulting code cannot be compiled without 13887errors. 13888 13889---------------------------------------- 1389026 May 2005. Summary of changes for version 20050526: 13891 138921) ACPI CA Core Subsystem: 13893 13894Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13895the module level (not within a control method.) These opcodes are 13896executed 13897exactly once at the time the table is loaded. This type of code was legal 13898up 13899until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13900in 13901order to provide backwards compatibility with earlier BIOS 13902implementations. 13903This eliminates the "Encountered executable code at module level" warning 13904that was previously generated upon detection of such code. 13905 13906Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13907inadvertently be generated during the lookup of namespace objects in the 13908second pass parse of ACPI tables and control methods. It appears that 13909this 13910problem could occur during the resolution of forward references to 13911namespace 13912objects. 13913 13914Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13915corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13916allows the deadlock detection debug code to be compiled out in the normal 13917case, improving mutex performance (and overall subsystem performance) 13918considerably. 13919 13920Implemented a handful of miscellaneous fixes for possible memory leaks on 13921error conditions and error handling control paths. These fixes were 13922suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13923 13924Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13925(tbxfroot.c) 13926to prevent a fault in this error case. 13927 13928Code and Data Size: Current and previous core subsystem library sizes are 13929shown below. These are the code and data sizes for the acpica.lib 13930produced 13931by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13932any ACPI driver or OSPM code. The debug version of the code includes the 13933debug output trace mechanism and has a much larger code and data size. 13934Note 13935that these values will vary depending on the efficiency of the compiler 13936and 13937the compiler options used during generation. 13938 13939 Previous Release: 13940 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13941 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13942 Current Release: 13943 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13944 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13945 13946 139472) iASL Compiler/Disassembler: 13948 13949Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13950the module level (not within a control method.) These operators will be 13951executed once at the time the table is loaded. This type of code was 13952legal 13953up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13954compiler in order to provide backwards compatibility with earlier BIOS 13955ASL 13956code. 13957 13958The ACPI integer width (specified via the table revision ID or the -r 13959override, 32 or 64 bits) is now used internally during compile-time 13960constant 13961folding to ensure that constants are truncated to 32 bits if necessary. 13962Previously, the revision ID value was only emitted in the AML table 13963header. 13964 13965An error message is now generated for the Mutex and Method operators if 13966the 13967SyncLevel parameter is outside the legal range of 0 through 15. 13968 13969Fixed a problem with the Method operator ParameterTypes list handling 13970(ACPI 139713.0). Previously, more than 2 types or 2 arguments generated a syntax 13972error. 13973The actual underlying implementation of method argument typechecking is 13974still under development, however. 13975 13976---------------------------------------- 1397713 May 2005. Summary of changes for version 20050513: 13978 139791) ACPI CA Core Subsystem: 13980 13981Implemented support for PCI Express root bridges -- added support for 13982device 13983PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13984 13985The interpreter now automatically truncates incoming 64-bit constants to 1398632 13987bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13988This 13989also affects the iASL compiler constant folding. (Note: as per below, the 13990iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13991 13992Fixed a problem where string and buffer objects with "static" pointers 13993(pointers to initialization data within an ACPI table) were not handled 13994consistently. The internal object copy operation now always copies the 13995data 13996to a newly allocated buffer, regardless of whether the source object is 13997static or not. 13998 13999Fixed a problem with the FromBCD operator where an implicit result 14000conversion was improperly performed while storing the result to the 14001target 14002operand. Since this is an "explicit conversion" operator, the implicit 14003conversion should never be performed on the output. 14004 14005Fixed a problem with the CopyObject operator where a copy to an existing 14006named object did not always completely overwrite the existing object 14007stored 14008at name. Specifically, a buffer-to-buffer copy did not delete the 14009existing 14010buffer. 14011 14012Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 14013and 14014structs for consistency. 14015 14016Code and Data Size: Current and previous core subsystem library sizes are 14017shown below. These are the code and data sizes for the acpica.lib 14018produced 14019by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14020any ACPI driver or OSPM code. The debug version of the code includes the 14021debug output trace mechanism and has a much larger code and data size. 14022Note 14023that these values will vary depending on the efficiency of the compiler 14024and 14025the compiler options used during generation. 14026 14027 Previous Release: 14028 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14029 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14030 Current Release: (Same sizes) 14031 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14032 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14033 14034 140352) iASL Compiler/Disassembler: 14036 14037The compiler now emits a warning if an attempt is made to generate a 64- 14038bit 14039integer constant from within a 32-bit ACPI table (Revision < 2). The 14040integer 14041is truncated to 32 bits. 14042 14043Fixed a problem with large package objects: if the static length of the 14044package is greater than 255, the "variable length package" opcode is 14045emitted. Previously, this caused an error. This requires an update to the 14046ACPI spec, since it currently (incorrectly) states that packages larger 14047than 14048255 elements are not allowed. 14049 14050The disassembler now correctly handles variable length packages and 14051packages 14052larger than 255 elements. 14053 14054---------------------------------------- 1405508 April 2005. Summary of changes for version 20050408: 14056 140571) ACPI CA Core Subsystem: 14058 14059Fixed three cases in the interpreter where an "index" argument to an ASL 14060function was still (internally) 32 bits instead of the required 64 bits. 14061This was the Index argument to the Index, Mid, and Match operators. 14062 14063The "strupr" function is now permanently local (AcpiUtStrupr), since this 14064is 14065not a POSIX-defined function and not present in most kernel-level C 14066libraries. All references to the C library strupr function have been 14067removed 14068from the headers. 14069 14070Completed the deployment of static functions/prototypes. All prototypes 14071with 14072the static attribute have been moved from the headers to the owning C 14073file. 14074 14075Implemented an extract option (-e) for the AcpiBin utility (AML binary 14076utility). This option allows the utility to extract individual ACPI 14077tables 14078from the output of AcpiDmp. It provides the same functionality of the 14079acpixtract.pl perl script without the worry of setting the correct perl 14080options. AcpiBin runs on Windows and has not yet been generated/validated 14081in 14082the Linux/Unix environment (but should be soon). 14083 14084Updated and fixed the table dump option for AcpiBin (-d). This option 14085converts a single ACPI table to a hex/ascii file, similar to the output 14086of 14087AcpiDmp. 14088 14089Code and Data Size: Current and previous core subsystem library sizes are 14090shown below. These are the code and data sizes for the acpica.lib 14091produced 14092by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14093any ACPI driver or OSPM code. The debug version of the code includes the 14094debug output trace mechanism and has a much larger code and data size. 14095Note 14096that these values will vary depending on the efficiency of the compiler 14097and 14098the compiler options used during generation. 14099 14100 Previous Release: 14101 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14102 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14103 Current Release: 14104 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14105 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14106 14107 141082) iASL Compiler/Disassembler: 14109 14110Disassembler fix: Added a check to ensure that the table length found in 14111the 14112ACPI table header within the input file is not longer than the actual 14113input 14114file size. This indicates some kind of file or table corruption. 14115 14116---------------------------------------- 1411729 March 2005. Summary of changes for version 20050329: 14118 141191) ACPI CA Core Subsystem: 14120 14121An error is now generated if an attempt is made to create a Buffer Field 14122of 14123length zero (A CreateField with a length operand of zero.) 14124 14125The interpreter now issues a warning whenever executable code at the 14126module 14127level is detected during ACPI table load. This will give some idea of the 14128prevalence of this type of code. 14129 14130Implemented support for references to named objects (other than control 14131methods) within package objects. 14132 14133Enhanced package object output for the debug object. Package objects are 14134now 14135completely dumped, showing all elements. 14136 14137Enhanced miscellaneous object output for the debug object. Any object can 14138now be written to the debug object (for example, a device object can be 14139written, and the type of the object will be displayed.) 14140 14141The "static" qualifier has been added to all local functions across both 14142the 14143core subsystem and the iASL compiler. 14144 14145The number of "long" lines (> 80 chars) within the source has been 14146significantly reduced, by about 1/3. 14147 14148Cleaned up all header files to ensure that all CA/iASL functions are 14149prototyped (even static functions) and the formatting is consistent. 14150 14151Two new header files have been added, acopcode.h and acnames.h. 14152 14153Removed several obsolete functions that were no longer used. 14154 14155Code and Data Size: Current and previous core subsystem library sizes are 14156shown below. These are the code and data sizes for the acpica.lib 14157produced 14158by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14159any ACPI driver or OSPM code. The debug version of the code includes the 14160debug output trace mechanism and has a much larger code and data size. 14161Note 14162that these values will vary depending on the efficiency of the compiler 14163and 14164the compiler options used during generation. 14165 14166 Previous Release: 14167 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14168 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14169 Current Release: 14170 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14171 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14172 14173 14174 141752) iASL Compiler/Disassembler: 14176 14177Fixed a problem with the resource descriptor generation/support. For the 14178ResourceSourceIndex and the ResourceSource fields, both must be present, 14179or 14180both must be not present - can't have one without the other. 14181 14182The compiler now returns non-zero from the main procedure if any errors 14183have 14184occurred during the compilation. 14185 14186 14187---------------------------------------- 1418809 March 2005. Summary of changes for version 20050309: 14189 141901) ACPI CA Core Subsystem: 14191 14192The string-to-buffer implicit conversion code has been modified again 14193after 14194a change to the ACPI specification. In order to match the behavior of 14195the 14196other major ACPI implementation, the target buffer is no longer truncated 14197if 14198the source string is smaller than an existing target buffer. This change 14199requires an update to the ACPI spec, and should eliminate the recent 14200AE_AML_BUFFER_LIMIT issues. 14201 14202The "implicit return" support was rewritten to a new algorithm that 14203solves 14204the general case. Rather than attempt to determine when a method is about 14205to 14206exit, the result of every ASL operator is saved momentarily until the 14207very 14208next ASL operator is executed. Therefore, no matter how the method exits, 14209there will always be a saved implicit return value. This feature is only 14210enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 14211eliminate 14212AE_AML_NO_RETURN_VALUE errors when enabled. 14213 14214Implemented implicit conversion support for the predicate (operand) of 14215the 14216If, Else, and While operators. String and Buffer arguments are 14217automatically 14218converted to Integers. 14219 14220Changed the string-to-integer conversion behavior to match the new ACPI 14221errata: "If no integer object exists, a new integer is created. The ASCII 14222string is interpreted as a hexadecimal constant. Each string character is 14223interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 14224with the first character as the most significant digit, and ending with 14225the 14226first non-hexadecimal character or end-of-string." This means that the 14227first 14228non-hex character terminates the conversion and this is the code that was 14229changed. 14230 14231Fixed a problem where the ObjectType operator would fail (fault) when 14232used 14233on an Index of a Package which pointed to a null package element. The 14234operator now properly returns zero (Uninitialized) in this case. 14235 14236Fixed a problem where the While operator used excessive memory by not 14237properly popping the result stack during execution. There was no memory 14238leak 14239after execution, however. (Code provided by Valery Podrezov.) 14240 14241Fixed a problem where references to control methods within Package 14242objects 14243caused the method to be invoked, instead of producing a reference object 14244pointing to the method. 14245 14246Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 14247to 14248improve performance and reduce code size. (Code provided by Alexey 14249Starikovskiy.) 14250 14251Code and Data Size: Current and previous core subsystem library sizes are 14252shown below. These are the code and data sizes for the acpica.lib 14253produced 14254by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14255any ACPI driver or OSPM code. The debug version of the code includes the 14256debug output trace mechanism and has a much larger code and data size. 14257Note 14258that these values will vary depending on the efficiency of the compiler 14259and 14260the compiler options used during generation. 14261 14262 Previous Release: 14263 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14264 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14265 Current Release: 14266 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14267 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14268 14269 142702) iASL Compiler/Disassembler: 14271 14272Fixed a problem with the Return operator with no arguments. Since the AML 14273grammar for the byte encoding requires an operand for the Return opcode, 14274the 14275compiler now emits a Return(Zero) for this case. An ACPI specification 14276update has been written for this case. 14277 14278For tables other than the DSDT, namepath optimization is automatically 14279disabled. This is because SSDTs can be loaded anywhere in the namespace, 14280the 14281compiler has no knowledge of where, and thus cannot optimize namepaths. 14282 14283Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 14284inadvertently omitted from the ACPI specification, and will require an 14285update to the spec. 14286 14287The source file scan for ASCII characters is now optional (-a). This 14288change 14289was made because some vendors place non-ascii characters within comments. 14290However, the scan is simply a brute-force byte compare to ensure all 14291characters in the file are in the range 0x00 to 0x7F. 14292 14293Fixed a problem with the CondRefOf operator where the compiler was 14294inappropriately checking for the existence of the target. Since the point 14295of 14296the operator is to check for the existence of the target at run-time, the 14297compiler no longer checks for the target existence. 14298 14299Fixed a problem where errors generated from the internal AML interpreter 14300during constant folding were not handled properly, causing a fault. 14301 14302Fixed a problem with overly aggressive range checking for the Stall 14303operator. The valid range (max 255) is now only checked if the operand is 14304of 14305type Integer. All other operand types cannot be statically checked. 14306 14307Fixed a problem where control method references within the RefOf, 14308DeRefOf, 14309and ObjectType operators were not treated properly. They are now treated 14310as 14311actual references, not method invocations. 14312 14313Fixed and enhanced the "list namespace" option (-ln). This option was 14314broken 14315a number of releases ago. 14316 14317Improved error handling for the Field, IndexField, and BankField 14318operators. 14319The compiler now cleanly reports and recovers from errors in the field 14320component (FieldUnit) list. 14321 14322Fixed a disassembler problem where the optional ResourceDescriptor fields 14323TRS and TTP were not always handled correctly. 14324 14325Disassembler - Comments in output now use "//" instead of "/*" 14326 14327---------------------------------------- 1432828 February 2005. Summary of changes for version 20050228: 14329 143301) ACPI CA Core Subsystem: 14331 14332Fixed a problem where the result of an Index() operator (an object 14333reference) must increment the reference count on the target object for 14334the 14335life of the object reference. 14336 14337Implemented AML Interpreter and Debugger support for the new ACPI 3.0 14338Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 14339WordSpace 14340resource descriptors. 14341 14342Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 14343Space Descriptor" string, indicating interpreter support for the 14344descriptors 14345above. 14346 14347Implemented header support for the new ACPI 3.0 FADT flag bits. 14348 14349Implemented header support for the new ACPI 3.0 PCI Express bits for the 14350PM1 14351status/enable registers. 14352 14353Updated header support for the MADT processor local Apic struct and MADT 14354platform interrupt source struct for new ACPI 3.0 fields. 14355 14356Implemented header support for the SRAT and SLIT ACPI tables. 14357 14358Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 14359flag 14360at runtime. 14361 14362Code and Data Size: Current and previous core subsystem library sizes are 14363shown below. These are the code and data sizes for the acpica.lib 14364produced 14365by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14366any ACPI driver or OSPM code. The debug version of the code includes the 14367debug output trace mechanism and has a much larger code and data size. 14368Note 14369that these values will vary depending on the efficiency of the compiler 14370and 14371the compiler options used during generation. 14372 14373 Previous Release: 14374 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14375 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14376 Current Release: 14377 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14378 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14379 14380 143812) iASL Compiler/Disassembler: 14382 14383Fixed a problem with the internal 64-bit String-to-integer conversion 14384with 14385strings less than two characters long. 14386 14387Fixed a problem with constant folding where the result of the Index() 14388operator can not be considered a constant. This means that Index() cannot 14389be 14390a type3 opcode and this will require an update to the ACPI specification. 14391 14392Disassembler: Implemented support for the TTP, MTP, and TRS resource 14393descriptor fields. These fields were inadvertently ignored and not output 14394in 14395the disassembly of the resource descriptor. 14396 14397 14398 ---------------------------------------- 1439911 February 2005. Summary of changes for version 20050211: 14400 144011) ACPI CA Core Subsystem: 14402 14403Implemented ACPI 3.0 support for implicit conversion within the Match() 14404operator. MatchObjects can now be of type integer, buffer, or string 14405instead 14406of just type integer. Package elements are implicitly converted to the 14407type 14408of the MatchObject. This change aligns the behavior of Match() with the 14409behavior of the other logical operators (LLess(), etc.) It also requires 14410an 14411errata change to the ACPI specification as this support was intended for 14412ACPI 3.0, but was inadvertently omitted. 14413 14414Fixed a problem with the internal implicit "to buffer" conversion. 14415Strings 14416that are converted to buffers will cause buffer truncation if the string 14417is 14418smaller than the target buffer. Integers that are converted to buffers 14419will 14420not cause buffer truncation, only zero extension (both as per the ACPI 14421spec.) The problem was introduced when code was added to truncate the 14422buffer, but this should not be performed in all cases, only the string 14423case. 14424 14425Fixed a problem with the Buffer and Package operators where the 14426interpreter 14427would get confused if two such operators were used as operands to an ASL 14428operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 14429stack was not being popped after the execution of these operators, 14430resulting 14431in an AE_NO_RETURN_VALUE exception. 14432 14433Fixed a problem with constructs of the form Store(Index(...),...). The 14434reference object returned from Index was inadvertently resolved to an 14435actual 14436value. This problem was introduced in version 20050114 when the behavior 14437of 14438Store() was modified to restrict the object types that can be used as the 14439source operand (to match the ACPI specification.) 14440 14441Reduced excessive stack use within the AcpiGetObjectInfo procedure. 14442 14443Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 14444 14445Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 14446 14447Code and Data Size: Current and previous core subsystem library sizes are 14448shown below. These are the code and data sizes for the acpica.lib 14449produced 14450by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14451any ACPI driver or OSPM code. The debug version of the code includes the 14452debug output trace mechanism and has a much larger code and data size. 14453Note 14454that these values will vary depending on the efficiency of the compiler 14455and 14456the compiler options used during generation. 14457 14458 Previous Release: 14459 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14460 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14461 Current Release: 14462 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14463 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14464 14465 144662) iASL Compiler/Disassembler: 14467 14468Fixed a code generation problem in the constant folding optimization code 14469where incorrect code was generated if a constant was reduced to a buffer 14470object (i.e., a reduced type 5 opcode.) 14471 14472Fixed a typechecking problem for the ToBuffer operator. Caused by an 14473incorrect return type in the internal opcode information table. 14474 14475---------------------------------------- 1447625 January 2005. Summary of changes for version 20050125: 14477 144781) ACPI CA Core Subsystem: 14479 14480Fixed a recently introduced problem with the Global Lock where the 14481underlying semaphore was not created. This problem was introduced in 14482version 20050114, and caused an AE_AML_NO_OPERAND exception during an 14483Acquire() operation on _GL. 14484 14485The local object cache is now optional, and is disabled by default. Both 14486AcpiExec and the iASL compiler enable the cache because they run in user 14487mode and this enhances their performance. #define 14488ACPI_ENABLE_OBJECT_CACHE 14489to enable the local cache. 14490 14491Fixed an issue in the internal function AcpiUtEvaluateObject concerning 14492the 14493optional "implicit return" support where an error was returned if no 14494return 14495object was expected, but one was implicitly returned. AE_OK is now 14496returned 14497in this case and the implicitly returned object is deleted. 14498AcpiUtEvaluateObject is only occasionally used, and only to execute 14499reserved 14500methods such as _STA and _INI where the return type is known up front. 14501 14502Fixed a few issues with the internal convert-to-integer code. It now 14503returns 14504an error if an attempt is made to convert a null string, a string of only 14505blanks/tabs, or a zero-length buffer. This affects both implicit 14506conversion 14507and explicit conversion via the ToInteger() operator. 14508 14509The internal debug code in AcpiUtAcquireMutex has been commented out. It 14510is 14511not needed for normal operation and should increase the performance of 14512the 14513entire subsystem. The code remains in case it is needed for debug 14514purposes 14515again. 14516 14517The AcpiExec source and makefile are included in the Unix/Linux package 14518for 14519the first time. 14520 14521Code and Data Size: Current and previous core subsystem library sizes are 14522shown below. These are the code and data sizes for the acpica.lib 14523produced 14524by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14525any ACPI driver or OSPM code. The debug version of the code includes the 14526debug output trace mechanism and has a much larger code and data size. 14527Note 14528that these values will vary depending on the efficiency of the compiler 14529and 14530the compiler options used during generation. 14531 14532 Previous Release: 14533 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14534 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14535 Current Release: 14536 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14537 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14538 145392) iASL Compiler/Disassembler: 14540 14541Switch/Case support: A warning is now issued if the type of the Switch 14542value 14543cannot be determined at compile time. For example, Switch(Arg0) will 14544generate the warning, and the type is assumed to be an integer. As per 14545the 14546ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 14547the 14548warning. 14549 14550Switch/Case support: Implemented support for buffer and string objects as 14551the switch value. This is an ACPI 3.0 feature, now that LEqual supports 14552buffers and strings. 14553 14554Switch/Case support: The emitted code for the LEqual() comparisons now 14555uses 14556the switch value as the first operand, not the second. The case value is 14557now 14558the second operand, and this allows the case value to be implicitly 14559converted to the type of the switch value, not the other way around. 14560 14561Switch/Case support: Temporary variables are now emitted immediately 14562within 14563the control method, not at the global level. This means that there are 14564now 1456536 temps available per-method, not 36 temps per-module as was the case 14566with 14567the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 14568 14569---------------------------------------- 1457014 January 2005. Summary of changes for version 20050114: 14571 14572Added 2005 copyright to all module headers. This affects every module in 14573the core subsystem, iASL compiler, and the utilities. 14574 145751) ACPI CA Core Subsystem: 14576 14577Fixed an issue with the String-to-Buffer conversion code where the string 14578null terminator was not included in the buffer after conversion, but 14579there 14580is existing ASL that assumes the string null terminator is included. This 14581is 14582the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14583introduced in the previous version when the code was updated to correctly 14584set the converted buffer size as per the ACPI specification. The ACPI 14585spec 14586is ambiguous and will be updated to specify that the null terminator must 14587be 14588included in the converted buffer. This also affects the ToBuffer() ASL 14589operator. 14590 14591Fixed a problem with the Mid() ASL/AML operator where it did not work 14592correctly on Buffer objects. Newly created sub-buffers were not being 14593marked 14594as initialized. 14595 14596 14597Fixed a problem in AcpiTbFindTable where incorrect string compares were 14598performed on the OemId and OemTableId table header fields. These fields 14599are 14600not null terminated, so strncmp is now used instead of strcmp. 14601 14602Implemented a restriction on the Store() ASL/AML operator to align the 14603behavior with the ACPI specification. Previously, any object could be 14604used 14605as the source operand. Now, the only objects that may be used are 14606Integers, 14607Buffers, Strings, Packages, Object References, and DDB Handles. If 14608necessary, the original behavior can be restored by enabling the 14609EnableInterpreterSlack flag. 14610 14611Enhanced the optional "implicit return" support to allow an implicit 14612return 14613value from methods that are invoked externally via the AcpiEvaluateObject 14614interface. This enables implicit returns from the _STA and _INI methods, 14615for example. 14616 14617Changed the Revision() ASL/AML operator to return the current version of 14618the 14619AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14620returned 14621the supported ACPI version (This is the function of the _REV method). 14622 14623Updated the _REV predefined method to return the currently supported 14624version 14625of ACPI, now 3. 14626 14627Implemented batch mode option for the AcpiExec utility (-b). 14628 14629Code and Data Size: Current and previous core subsystem library sizes are 14630shown below. These are the code and data sizes for the acpica.lib 14631produced 14632by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14633any ACPI driver or OSPM code. The debug version of the code includes the 14634debug output trace mechanism and has a much larger code and data size. 14635Note 14636that these values will vary depending on the efficiency of the compiler 14637and 14638the compiler options used during generation. 14639 14640 Previous Release: 14641 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14642 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14643 Current Release: 14644 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14645 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14646 14647---------------------------------------- 1464810 December 2004. Summary of changes for version 20041210: 14649 14650ACPI 3.0 support is nearing completion in both the iASL compiler and the 14651ACPI CA core subsystem. 14652 146531) ACPI CA Core Subsystem: 14654 14655Fixed a problem in the ToDecimalString operator where the resulting 14656string 14657length was incorrectly calculated. The length is now calculated exactly, 14658eliminating incorrect AE_STRING_LIMIT exceptions. 14659 14660Fixed a problem in the ToHexString operator to allow a maximum 200 14661character 14662string to be produced. 14663 14664Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14665copy 14666routine where the length of the resulting buffer was not truncated to the 14667new size (if the target buffer already existed). 14668 14669Code and Data Size: Current and previous core subsystem library sizes are 14670shown below. These are the code and data sizes for the acpica.lib 14671produced 14672by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14673any ACPI driver or OSPM code. The debug version of the code includes the 14674debug output trace mechanism and has a much larger code and data size. 14675Note 14676that these values will vary depending on the efficiency of the compiler 14677and 14678the compiler options used during generation. 14679 14680 Previous Release: 14681 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14682 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14683 Current Release: 14684 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14685 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14686 14687 146882) iASL Compiler/Disassembler: 14689 14690Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14691ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14692Includes support in the disassembler. 14693 14694Implemented support for the new (ACPI 3.0) parameter to the Register 14695macro, 14696AccessSize. 14697 14698Fixed a problem where the _HE resource name for the Interrupt macro was 14699referencing bit 0 instead of bit 1. 14700 14701Implemented check for maximum 255 interrupts in the Interrupt macro. 14702 14703Fixed a problem with the predefined resource descriptor names where 14704incorrect AML code was generated if the offset within the resource buffer 14705was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14706but did not update the surrounding package lengths. 14707 14708Changes to the Dma macro: All channels within the channel list must be 14709in 14710the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14711optional (default is BusMaster). 14712 14713Implemented check for maximum 7 data bytes for the VendorShort macro. 14714 14715The ReadWrite parameter is now optional for the Memory32 and similar 14716macros. 14717 14718---------------------------------------- 1471903 December 2004. Summary of changes for version 20041203: 14720 147211) ACPI CA Core Subsystem: 14722 14723The low-level field insertion/extraction code (exfldio) has been 14724completely 14725rewritten to eliminate unnecessary complexity, bugs, and boundary 14726conditions. 14727 14728Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14729ToDecimalString 14730operators where the input operand could be inadvertently deleted if no 14731conversion was necessary (e.g., if the input to ToInteger was an Integer 14732object.) 14733 14734Fixed a problem with the ToDecimalString and ToHexString where an 14735incorrect 14736exception code was returned if the resulting string would be > 200 chars. 14737AE_STRING_LIMIT is now returned. 14738 14739Fixed a problem with the Concatenate operator where AE_OK was always 14740returned, even if the operation failed. 14741 14742Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14743semaphores to be allocated. 14744 14745Code and Data Size: Current and previous core subsystem library sizes are 14746shown below. These are the code and data sizes for the acpica.lib 14747produced 14748by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14749any ACPI driver or OSPM code. The debug version of the code includes the 14750debug output trace mechanism and has a much larger code and data size. 14751Note 14752that these values will vary depending on the efficiency of the compiler 14753and 14754the compiler options used during generation. 14755 14756 Previous Release: 14757 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14758 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14759 Current Release: 14760 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14761 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14762 14763 147642) iASL Compiler/Disassembler: 14765 14766Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14767recently introduced in 20041119. 14768 14769Fixed a problem with the ToUUID macro where the upper nybble of each 14770buffer 14771byte was inadvertently set to zero. 14772 14773---------------------------------------- 1477419 November 2004. Summary of changes for version 20041119: 14775 147761) ACPI CA Core Subsystem: 14777 14778Fixed a problem in the internal ConvertToInteger routine where new 14779integers 14780were not truncated to 32 bits for 32-bit ACPI tables. This routine 14781converts 14782buffers and strings to integers. 14783 14784Implemented support to store a value to an Index() on a String object. 14785This 14786is an ACPI 2.0 feature that had not yet been implemented. 14787 14788Implemented new behavior for storing objects to individual package 14789elements 14790(via the Index() operator). The previous behavior was to invoke the 14791implicit 14792conversion rules if an object was already present at the index. The new 14793behavior is to simply delete any existing object and directly store the 14794new 14795object. Although the ACPI specification seems unclear on this subject, 14796other 14797ACPI implementations behave in this manner. (This is the root of the 14798AE_BAD_HEX_CONSTANT issue.) 14799 14800Modified the RSDP memory scan mechanism to support the extended checksum 14801for 14802ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14803RSDP signature is found with a valid checksum. 14804 14805Code and Data Size: Current and previous core subsystem library sizes are 14806shown below. These are the code and data sizes for the acpica.lib 14807produced 14808by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14809any ACPI driver or OSPM code. The debug version of the code includes the 14810debug output trace mechanism and has a much larger code and data size. 14811Note 14812that these values will vary depending on the efficiency of the compiler 14813and 14814the compiler options used during generation. 14815 14816 Previous Release: 14817 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14818 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14819 Current Release: 14820 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14821 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14822 14823 148242) iASL Compiler/Disassembler: 14825 14826Fixed a missing semicolon in the aslcompiler.y file. 14827 14828---------------------------------------- 1482905 November 2004. Summary of changes for version 20041105: 14830 148311) ACPI CA Core Subsystem: 14832 14833Implemented support for FADT revision 2. This was an interim table 14834(between 14835ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14836 14837Implemented optional support to allow uninitialized LocalX and ArgX 14838variables in a control method. The variables are initialized to an 14839Integer 14840object with a value of zero. This support is enabled by setting the 14841AcpiGbl_EnableInterpreterSlack flag to TRUE. 14842 14843Implemented support for Integer objects for the SizeOf operator. Either 148444 14845or 8 is returned, depending on the current integer size (32-bit or 64- 14846bit, 14847depending on the parent table revision). 14848 14849Fixed a problem in the implementation of the SizeOf and ObjectType 14850operators 14851where the operand was resolved to a value too early, causing incorrect 14852return values for some objects. 14853 14854Fixed some possible memory leaks during exceptional conditions. 14855 14856Code and Data Size: Current and previous core subsystem library sizes are 14857shown below. These are the code and data sizes for the acpica.lib 14858produced 14859by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14860any ACPI driver or OSPM code. The debug version of the code includes the 14861debug output trace mechanism and has a much larger code and data size. 14862Note 14863that these values will vary depending on the efficiency of the compiler 14864and 14865the compiler options used during generation. 14866 14867 Previous Release: 14868 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14869 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14870 Current Release: 14871 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14872 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14873 14874 148752) iASL Compiler/Disassembler: 14876 14877Implemented support for all ACPI 3.0 reserved names and methods. 14878 14879Implemented all ACPI 3.0 grammar elements in the front-end, including 14880support for semicolons. 14881 14882Implemented the ACPI 3.0 Function() and ToUUID() macros 14883 14884Fixed a problem in the disassembler where a Scope() operator would not be 14885emitted properly if the target of the scope was in another table. 14886 14887---------------------------------------- 1488815 October 2004. Summary of changes for version 20041015: 14889 14890Note: ACPI CA is currently undergoing an in-depth and complete formal 14891evaluation to test/verify the following areas. Other suggestions are 14892welcome. This will result in an increase in the frequency of releases and 14893the number of bug fixes in the next few months. 14894 - Functional tests for all ASL/AML operators 14895 - All implicit/explicit type conversions 14896 - Bit fields and operation regions 14897 - 64-bit math support and 32-bit-only "truncated" math support 14898 - Exceptional conditions, both compiler and interpreter 14899 - Dynamic object deletion and memory leaks 14900 - ACPI 3.0 support when implemented 14901 - External interfaces to the ACPI subsystem 14902 14903 149041) ACPI CA Core Subsystem: 14905 14906Fixed two alignment issues on 64-bit platforms - within debug statements 14907in 14908AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14909Address 14910field within the non-aligned ACPI generic address structure. 14911 14912Fixed a problem in the Increment and Decrement operators where incorrect 14913operand resolution could result in the inadvertent modification of the 14914original integer when the integer is passed into another method as an 14915argument and the arg is then incremented/decremented. 14916 14917Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14918bit 14919BCD number were truncated during conversion. 14920 14921Fixed a problem in the ToDecimal operator where the length of the 14922resulting 14923string could be set incorrectly too long if the input operand was a 14924Buffer 14925object. 14926 14927Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14928(0) 14929within a buffer would prematurely terminate a compare between buffer 14930objects. 14931 14932Added a check for string overflow (>200 characters as per the ACPI 14933specification) during the Concatenate operator with two string operands. 14934 14935Code and Data Size: Current and previous core subsystem library sizes are 14936shown below. These are the code and data sizes for the acpica.lib 14937produced 14938by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14939any ACPI driver or OSPM code. The debug version of the code includes the 14940debug output trace mechanism and has a much larger code and data size. 14941Note 14942that these values will vary depending on the efficiency of the compiler 14943and 14944the compiler options used during generation. 14945 14946 Previous Release: 14947 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14948 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14949 Current Release: 14950 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14951 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14952 14953 14954 149552) iASL Compiler/Disassembler: 14956 14957Allow the use of the ObjectType operator on uninitialized Locals and Args 14958(returns 0 as per the ACPI specification). 14959 14960Fixed a problem where the compiler would fault if there was a syntax 14961error 14962in the FieldName of all of the various CreateXXXField operators. 14963 14964Disallow the use of lower case letters within the EISAID macro, as per 14965the 14966ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14967Where 14968U is an uppercase letter and N is a hex digit. 14969 14970 14971---------------------------------------- 1497206 October 2004. Summary of changes for version 20041006: 14973 149741) ACPI CA Core Subsystem: 14975 14976Implemented support for the ACPI 3.0 Timer operator. This ASL function 14977implements a 64-bit timer with 100 nanosecond granularity. 14978 14979Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14980implement the ACPI 3.0 Timer operator. This allows the host OS to 14981implement 14982the timer with the best clock available. Also, it keeps the core 14983subsystem 14984out of the clock handling business, since the host OS (usually) performs 14985this function. 14986 14987Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14988functions use a 64-bit address which is part of the packed ACPI Generic 14989Address Structure. Since the structure is non-aligned, the alignment 14990macros 14991are now used to extract the address to a local variable before use. 14992 14993Fixed a problem where the ToInteger operator assumed all input strings 14994were 14995hexadecimal. The operator now handles both decimal strings and hex 14996strings 14997(prefixed with "0x"). 14998 14999Fixed a problem where the string length in the string object created as a 15000result of the internal ConvertToString procedure could be incorrect. This 15001potentially affected all implicit conversions and also the 15002ToDecimalString 15003and ToHexString operators. 15004 15005Fixed two problems in the ToString operator. If the length parameter was 15006zero, an incorrect string object was created and the value of the input 15007length parameter was inadvertently changed from zero to Ones. 15008 15009Fixed a problem where the optional ResourceSource string in the 15010ExtendedIRQ 15011resource macro was ignored. 15012 15013Simplified the interfaces to the internal division functions, reducing 15014code 15015size and complexity. 15016 15017Code and Data Size: Current and previous core subsystem library sizes are 15018shown below. These are the code and data sizes for the acpica.lib 15019produced 15020by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15021any ACPI driver or OSPM code. The debug version of the code includes the 15022debug output trace mechanism and has a much larger code and data size. 15023Note 15024that these values will vary depending on the efficiency of the compiler 15025and 15026the compiler options used during generation. 15027 15028 Previous Release: 15029 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 15030 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 15031 Current Release: 15032 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15033 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 15034 15035 150362) iASL Compiler/Disassembler: 15037 15038Implemented support for the ACPI 3.0 Timer operator. 15039 15040Fixed a problem where the Default() operator was inadvertently ignored in 15041a 15042Switch/Case block. This was a problem in the translation of the Switch 15043statement to If...Else pairs. 15044 15045Added support to allow a standalone Return operator, with no parentheses 15046(or 15047operands). 15048 15049Fixed a problem with code generation for the ElseIf operator where the 15050translated Else...If parse tree was improperly constructed leading to the 15051loss of some code. 15052 15053---------------------------------------- 1505422 September 2004. Summary of changes for version 20040922: 15055 150561) ACPI CA Core Subsystem: 15057 15058Fixed a problem with the implementation of the LNot() operator where 15059"Ones" 15060was not returned for the TRUE case. Changed the code to return Ones 15061instead 15062of (!Arg) which was usually 1. This change affects iASL constant folding 15063for 15064this operator also. 15065 15066Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 15067not 15068initialized properly -- Now zero the entire buffer in this case where the 15069buffer already exists. 15070 15071Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 15072Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 15073related code considerably. This will require changes/updates to all OS 15074interface layers (OSLs.) 15075 15076Implemented a new external interface, AcpiInstallExceptionHandler, to 15077allow 15078a system exception handler to be installed. This handler is invoked upon 15079any 15080run-time exception that occurs during control method execution. 15081 15082Added support for the DSDT in AcpiTbFindTable. This allows the 15083DataTableRegion() operator to access the local copy of the DSDT. 15084 15085Code and Data Size: Current and previous core subsystem library sizes are 15086shown below. These are the code and data sizes for the acpica.lib 15087produced 15088by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15089any ACPI driver or OSPM code. The debug version of the code includes the 15090debug output trace mechanism and has a much larger code and data size. 15091Note 15092that these values will vary depending on the efficiency of the compiler 15093and 15094the compiler options used during generation. 15095 15096 Previous Release: 15097 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15098 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15099 Current Release: 15100 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 15101 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 15102 15103 151042) iASL Compiler/Disassembler: 15105 15106Fixed a problem with constant folding and the LNot operator. LNot was 15107returning 1 in the TRUE case, not Ones as per the ACPI specification. 15108This 15109could result in the generation of an incorrect folded/reduced constant. 15110 15111End-Of-File is now allowed within a "//"-style comment. A parse error no 15112longer occurs if such a comment is at the very end of the input ASL 15113source 15114file. 15115 15116Implemented the "-r" option to override the Revision in the table header. 15117The initial use of this option will be to simplify the evaluation of the 15118AML 15119interpreter by allowing a single ASL source module to be compiled for 15120either 1512132-bit or 64-bit integers. 15122 15123 15124---------------------------------------- 1512527 August 2004. Summary of changes for version 20040827: 15126 151271) ACPI CA Core Subsystem: 15128 15129- Implemented support for implicit object conversion in the non-numeric 15130logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 15131and 15132LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 15133the second operand is implicitly converted on the fly to match the type 15134of 15135the first operand. For example: 15136 15137 LEqual (Source1, Source2) 15138 15139Source1 and Source2 must each evaluate to an integer, a string, or a 15140buffer. 15141The data type of Source1 dictates the required type of Source2. Source2 15142is 15143implicitly converted if necessary to match the type of Source1. 15144 15145- Updated and corrected the behavior of the string conversion support. 15146The 15147rules concerning conversion of buffers to strings (according to the ACPI 15148specification) are as follows: 15149 15150ToDecimalString - explicit byte-wise conversion of buffer to string of 15151decimal values (0-255) separated by commas. ToHexString - explicit byte- 15152wise 15153conversion of buffer to string of hex values (0-FF) separated by commas. 15154ToString - explicit byte-wise conversion of buffer to string. Byte-by- 15155byte 15156copy with no transform except NULL terminated. Any other implicit buffer- 15157to- 15158string conversion - byte-wise conversion of buffer to string of hex 15159values 15160(0-FF) separated by spaces. 15161 15162- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 15163 15164- Fixed a problem in AcpiNsGetPathnameLength where the returned length 15165was 15166one byte too short in the case of a node in the root scope. This could 15167cause a fault during debug output. 15168 15169- Code and Data Size: Current and previous core subsystem library sizes 15170are 15171shown below. These are the code and data sizes for the acpica.lib 15172produced 15173by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15174any ACPI driver or OSPM code. The debug version of the code includes the 15175debug output trace mechanism and has a much larger code and data size. 15176Note 15177that these values will vary depending on the efficiency of the compiler 15178and 15179the compiler options used during generation. 15180 15181 Previous Release: 15182 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15183 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15184 Current Release: 15185 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15186 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15187 15188 151892) iASL Compiler/Disassembler: 15190 15191- Fixed a Linux generation error. 15192 15193 15194---------------------------------------- 1519516 August 2004. Summary of changes for version 20040816: 15196 151971) ACPI CA Core Subsystem: 15198 15199Designed and implemented support within the AML interpreter for the so- 15200called "implicit return". This support returns the result of the last 15201ASL 15202operation within a control method, in the absence of an explicit Return() 15203operator. A few machines depend on this behavior, even though it is not 15204explicitly supported by the ASL language. It is optional support that 15205can 15206be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 15207 15208Removed support for the PCI_Config address space from the internal low 15209level 15210hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 15211support was not used internally, and would not work correctly anyway 15212because 15213the PCI bus number and segment number were not supported. There are 15214separate interfaces for PCI configuration space access because of the 15215unique 15216interface. 15217 15218Code and Data Size: Current and previous core subsystem library sizes are 15219shown below. These are the code and data sizes for the acpica.lib 15220produced 15221by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15222any ACPI driver or OSPM code. The debug version of the code includes the 15223debug output trace mechanism and has a much larger code and data size. 15224Note 15225that these values will vary depending on the efficiency of the compiler 15226and 15227the compiler options used during generation. 15228 15229 Previous Release: 15230 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15231 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15232 Current Release: 15233 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15234 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15235 15236 152372) iASL Compiler/Disassembler: 15238 15239Fixed a problem where constants in ASL expressions at the root level (not 15240within a control method) could be inadvertently truncated during code 15241generation. This problem was introduced in the 20040715 release. 15242 15243 15244---------------------------------------- 1524515 July 2004. Summary of changes for version 20040715: 15246 152471) ACPI CA Core Subsystem: 15248 15249Restructured the internal HW GPE interfaces to pass/track the current 15250state 15251of interrupts (enabled/disabled) in order to avoid possible deadlock and 15252increase flexibility of the interfaces. 15253 15254Implemented a "lexicographical compare" for String and Buffer objects 15255within 15256the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 15257- 15258as per further clarification to the ACPI specification. Behavior is 15259similar 15260to C library "strcmp". 15261 15262Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 15263external function. In the 32-bit non-debug case, the stack use has been 15264reduced from 168 bytes to 32 bytes. 15265 15266Deployed a new run-time configuration flag, 15267AcpiGbl_EnableInterpreterSlack, 15268whose purpose is to allow the AML interpreter to forgive certain bad AML 15269constructs. Default setting is FALSE. 15270 15271Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 15272IO 15273support code. If enabled, it allows field access to go beyond the end of 15274a 15275region definition if the field is within the region length rounded up to 15276the 15277next access width boundary (a common coding error.) 15278 15279Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 15280ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 15281these 15282symbols are lowercase by the latest version of the AcpiSrc tool. 15283 15284The prototypes for the PCI interfaces in acpiosxf.h have been updated to 15285rename "Register" to simply "Reg" to prevent certain compilers from 15286complaining. 15287 15288Code and Data Size: Current and previous core subsystem library sizes are 15289shown below. These are the code and data sizes for the acpica.lib 15290produced 15291by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15292any ACPI driver or OSPM code. The debug version of the code includes the 15293debug output trace mechanism and has a much larger code and data size. 15294Note 15295that these values will vary depending on the efficiency of the compiler 15296and 15297the compiler options used during generation. 15298 15299 Previous Release: 15300 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15301 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15302 Current Release: 15303 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15304 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15305 15306 153072) iASL Compiler/Disassembler: 15308 15309Implemented full support for Package objects within the Case() operator. 15310Note: The Break() operator is currently not supported within Case blocks 15311(TermLists) as there is some question about backward compatibility with 15312ACPI 153131.0 interpreters. 15314 15315 15316Fixed a problem where complex terms were not supported properly within 15317the 15318Switch() operator. 15319 15320Eliminated extraneous warning for compiler-emitted reserved names of the 15321form "_T_x". (Used in Switch/Case operators.) 15322 15323Eliminated optimization messages for "_T_x" objects and small constants 15324within the DefinitionBlock operator. 15325 15326 15327---------------------------------------- 1532815 June 2004. Summary of changes for version 20040615: 15329 153301) ACPI CA Core Subsystem: 15331 15332Implemented support for Buffer and String objects (as per ACPI 2.0) for 15333the 15334following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15335LLessEqual. 15336 15337All directory names in the entire source package are lower case, as they 15338were in earlier releases. 15339 15340Implemented "Disassemble" command in the AML debugger that will 15341disassemble 15342a single control method. 15343 15344Code and Data Size: Current and previous core subsystem library sizes are 15345shown below. These are the code and data sizes for the acpica.lib 15346produced 15347by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15348any ACPI driver or OSPM code. The debug version of the code includes the 15349debug output trace mechanism and has a much larger code and data size. 15350Note 15351that these values will vary depending on the efficiency of the compiler 15352and 15353the compiler options used during generation. 15354 15355 Previous Release: 15356 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15357 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15358 15359 Current Release: 15360 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15361 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15362 15363 153642) iASL Compiler/Disassembler: 15365 15366Implemented support for Buffer and String objects (as per ACPI 2.0) for 15367the 15368following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15369LLessEqual. 15370 15371All directory names in the entire source package are lower case, as they 15372were in earlier releases. 15373 15374Fixed a fault when using the -g or -d<nofilename> options if the FADT was 15375not found. 15376 15377Fixed an issue with the Windows version of the compiler where later 15378versions 15379of Windows place the FADT in the registry under the name "FADT" and not 15380"FACP" as earlier versions did. This applies when using the -g or - 15381d<nofilename> options. The compiler now looks for both strings as 15382necessary. 15383 15384Fixed a problem with compiler namepath optimization where a namepath 15385within 15386the Scope() operator could not be optimized if the namepath was a subpath 15387of 15388the current scope path. 15389 15390---------------------------------------- 1539127 May 2004. Summary of changes for version 20040527: 15392 153931) ACPI CA Core Subsystem: 15394 15395Completed a new design and implementation for EBDA (Extended BIOS Data 15396Area) 15397support in the RSDP scan code. The original code improperly scanned for 15398the 15399EBDA by simply scanning from memory location 0 to 0x400. The correct 15400method 15401is to first obtain the EBDA pointer from within the BIOS data area, then 15402scan 1K of memory starting at the EBDA pointer. There appear to be few 15403if 15404any machines that place the RSDP in the EBDA, however. 15405 15406Integrated a fix for a possible fault during evaluation of BufferField 15407arguments. Obsolete code that was causing the problem was removed. 15408 15409Found and fixed a problem in the Field Support Code where data could be 15410corrupted on a bit field read that starts on an aligned boundary but does 15411not end on an aligned boundary. Merged the read/write "datum length" 15412calculation code into a common procedure. 15413 15414Rolled in a couple of changes to the FreeBSD-specific header. 15415 15416 15417Code and Data Size: Current and previous core subsystem library sizes are 15418shown below. These are the code and data sizes for the acpica.lib 15419produced 15420by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15421any ACPI driver or OSPM code. The debug version of the code includes the 15422debug output trace mechanism and has a much larger code and data size. 15423Note 15424that these values will vary depending on the efficiency of the compiler 15425and 15426the compiler options used during generation. 15427 15428 Previous Release: 15429 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15430 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15431 Current Release: 15432 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15433 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15434 15435 154362) iASL Compiler/Disassembler: 15437 15438Fixed a generation warning produced by some overly-verbose compilers for 15439a 1544064-bit constant. 15441 15442---------------------------------------- 1544314 May 2004. Summary of changes for version 20040514: 15444 154451) ACPI CA Core Subsystem: 15446 15447Fixed a problem where hardware GPE enable bits sometimes not set properly 15448during and after GPE method execution. Result of 04/27 changes. 15449 15450Removed extra "clear all GPEs" when sleeping/waking. 15451 15452Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 15453AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 15454to 15455the new AcpiEv* calls as appropriate. 15456 15457ACPI_OS_NAME was removed from the OS-specific headers. The default name 15458is 15459now "Microsoft Windows NT" for maximum compatibility. However this can 15460be 15461changed by modifying the acconfig.h file. 15462 15463Allow a single invocation of AcpiInstallNotifyHandler for a handler that 15464traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 15465 15466Run _INI methods on ThermalZone objects. This is against the ACPI 15467specification, but there is apparently ASL code in the field that has 15468these 15469_INI methods, and apparently "other" AML interpreters execute them. 15470 15471Performed a full 16/32/64 bit lint that resulted in some small changes. 15472 15473Added a sleep simulation command to the AML debugger to test sleep code. 15474 15475Code and Data Size: Current and previous core subsystem library sizes are 15476shown below. These are the code and data sizes for the acpica.lib 15477produced 15478by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15479any ACPI driver or OSPM code. The debug version of the code includes the 15480debug output trace mechanism and has a much larger code and data size. 15481Note 15482that these values will vary depending on the efficiency of the compiler 15483and 15484the compiler options used during generation. 15485 15486 Previous Release: 15487 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15488 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15489 Current Release: 15490 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15491 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15492 15493---------------------------------------- 1549427 April 2004. Summary of changes for version 20040427: 15495 154961) ACPI CA Core Subsystem: 15497 15498Completed a major overhaul of the GPE handling within ACPI CA. There are 15499now three types of GPEs: wake-only, runtime-only, and combination 15500wake/run. 15501The only GPEs allowed to be combination wake/run are for button-style 15502devices such as a control-method power button, control-method sleep 15503button, 15504or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 15505not 15506referenced by any _PRW methods are marked for "runtime" and hardware 15507enabled. Any GPE that is referenced by a _PRW method is marked for 15508"wake" 15509(and disabled at runtime). However, at sleep time, only those GPEs that 15510have been specifically enabled for wake via the AcpiEnableGpe interface 15511will 15512actually be hardware enabled. 15513 15514A new external interface has been added, AcpiSetGpeType(), that is meant 15515to 15516be used by device drivers to force a GPE to a particular type. It will 15517be 15518especially useful for the drivers for the button devices mentioned above. 15519 15520Completed restructuring of the ACPI CA initialization sequence so that 15521default operation region handlers are installed before GPEs are 15522initialized 15523and the _PRW methods are executed. This will prevent errors when the 15524_PRW 15525methods attempt to access system memory or I/O space. 15526 15527GPE enable/disable no longer reads the GPE enable register. We now keep 15528the 15529enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 15530thus no longer depend on the hardware to maintain these bits. 15531 15532Always clear the wake status and fixed/GPE status bits before sleep, even 15533for state S5. 15534 15535Improved the AML debugger output for displaying the GPE blocks and their 15536current status. 15537 15538Added new strings for the _OSI method, of the form "Windows 2001 SPx" 15539where 15540x = 0,1,2,3,4. 15541 15542Fixed a problem where the physical address was incorrectly calculated 15543when 15544the Load() operator was used to directly load from an Operation Region 15545(vs. 15546loading from a Field object.) Also added check for minimum table length 15547for 15548this case. 15549 15550Fix for multiple mutex acquisition. Restore original thread SyncLevel on 15551mutex release. 15552 15553Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 15554consistency with the other fields returned. 15555 15556Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 15557structure for each GPE in the system, so the size of this structure is 15558important. 15559 15560CPU stack requirement reduction: Cleaned up the method execution and 15561object 15562evaluation paths so that now a parameter structure is passed, instead of 15563copying the various method parameters over and over again. 15564 15565In evregion.c: Correctly exit and reenter the interpreter region if and 15566only if dispatching an operation region request to a user-installed 15567handler. 15568Do not exit/reenter when dispatching to a default handler (e.g., default 15569system memory or I/O handlers) 15570 15571 15572Notes for updating drivers for the new GPE support. The following 15573changes 15574must be made to ACPI-related device drivers that are attached to one or 15575more 15576GPEs: (This information will be added to the ACPI CA Programmer 15577Reference.) 15578 155791) AcpiInstallGpeHandler no longer automatically enables the GPE, you 15580must 15581explicitly call AcpiEnableGpe. 155822) There is a new interface called AcpiSetGpeType. This should be called 15583before enabling the GPE. Also, this interface will automatically disable 15584the GPE if it is currently enabled. 155853) AcpiEnableGpe no longer supports a GPE type flag. 15586 15587Specific drivers that must be changed: 155881) EC driver: 15589 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15590AeGpeHandler, NULL); 15591 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15592 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15593 155942) Button Drivers (Power, Lid, Sleep): 15595Run _PRW method under parent device 15596If _PRW exists: /* This is a control-method button */ 15597 Extract GPE number and possibly GpeDevice 15598 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15599 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15600 15601For all other devices that have _PRWs, we automatically set the GPE type 15602to 15603ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15604This 15605must be done on a selective basis, usually requiring some kind of user 15606app 15607to allow the user to pick the wake devices. 15608 15609 15610Code and Data Size: Current and previous core subsystem library sizes are 15611shown below. These are the code and data sizes for the acpica.lib 15612produced 15613by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15614any ACPI driver or OSPM code. The debug version of the code includes the 15615debug output trace mechanism and has a much larger code and data size. 15616Note 15617that these values will vary depending on the efficiency of the compiler 15618and 15619the compiler options used during generation. 15620 15621 Previous Release: 15622 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15623 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15624 Current Release: 15625 15626 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15627 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15628 15629 15630 15631---------------------------------------- 1563202 April 2004. Summary of changes for version 20040402: 15633 156341) ACPI CA Core Subsystem: 15635 15636Fixed an interpreter problem where an indirect store through an ArgX 15637parameter was incorrectly applying the "implicit conversion rules" during 15638the store. From the ACPI specification: "If the target is a method local 15639or 15640argument (LocalX or ArgX), no conversion is performed and the result is 15641stored directly to the target". The new behavior is to disable implicit 15642conversion during ALL stores to an ArgX. 15643 15644Changed the behavior of the _PRW method scan to ignore any and all errors 15645returned by a given _PRW. This prevents the scan from aborting from the 15646failure of any single _PRW. 15647 15648Moved the runtime configuration parameters from the global init procedure 15649to 15650static variables in acglobal.h. This will allow the host to override the 15651default values easily. 15652 15653Code and Data Size: Current and previous core subsystem library sizes are 15654shown below. These are the code and data sizes for the acpica.lib 15655produced 15656by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15657any ACPI driver or OSPM code. The debug version of the code includes the 15658debug output trace mechanism and has a much larger code and data size. 15659Note 15660that these values will vary depending on the efficiency of the compiler 15661and 15662the compiler options used during generation. 15663 15664 Previous Release: 15665 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15666 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15667 Current Release: 15668 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15669 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15670 15671 156722) iASL Compiler/Disassembler: 15673 15674iASL now fully disassembles SSDTs. However, External() statements are 15675not 15676generated automatically for unresolved symbols at this time. This is a 15677planned feature for future implementation. 15678 15679Fixed a scoping problem in the disassembler that occurs when the type of 15680the 15681target of a Scope() operator is overridden. This problem caused an 15682incorrectly nested internal namespace to be constructed. 15683 15684Any warnings or errors that are emitted during disassembly are now 15685commented 15686out automatically so that the resulting file can be recompiled without 15687any 15688hand editing. 15689 15690---------------------------------------- 1569126 March 2004. Summary of changes for version 20040326: 15692 156931) ACPI CA Core Subsystem: 15694 15695Implemented support for "wake" GPEs via interaction between GPEs and the 15696_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15697identified as a WAKE GPE and by default will no longer be enabled at 15698runtime. Previously, we were blindly enabling all GPEs with a 15699corresponding 15700_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15701We 15702believe this has been the cause of thousands of "spurious" GPEs on some 15703systems. 15704 15705This new GPE behavior is can be reverted to the original behavior (enable 15706ALL GPEs at runtime) via a runtime flag. 15707 15708Fixed a problem where aliased control methods could not access objects 15709properly. The proper scope within the namespace was not initialized 15710(transferred to the target of the aliased method) before executing the 15711target method. 15712 15713Fixed a potential race condition on internal object deletion on the 15714return 15715object in AcpiEvaluateObject. 15716 15717Integrated a fix for resource descriptors where both _MEM and _MTP were 15718being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15719wide, 0x0F instead of 0x03.) 15720 15721Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15722preventing 15723a 15724fault in some cases. 15725 15726Updated Notify() values for debug statements in evmisc.c 15727 15728Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15729 15730Code and Data Size: Current and previous core subsystem library sizes are 15731shown below. These are the code and data sizes for the acpica.lib 15732produced 15733by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15734any ACPI driver or OSPM code. The debug version of the code includes the 15735debug output trace mechanism and has a much larger code and data size. 15736Note 15737that these values will vary depending on the efficiency of the compiler 15738and 15739the compiler options used during generation. 15740 15741 Previous Release: 15742 15743 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15744 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15745 Current Release: 15746 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15747 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15748 15749---------------------------------------- 1575011 March 2004. Summary of changes for version 20040311: 15751 157521) ACPI CA Core Subsystem: 15753 15754Fixed a problem where errors occurring during the parse phase of control 15755method execution did not abort cleanly. For example, objects created and 15756installed in the namespace were not deleted. This caused all subsequent 15757invocations of the method to return the AE_ALREADY_EXISTS exception. 15758 15759Implemented a mechanism to force a control method to "Serialized" 15760execution 15761if the method attempts to create namespace objects. (The root of the 15762AE_ALREADY_EXISTS problem.) 15763 15764Implemented support for the predefined _OSI "internal" control method. 15765Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15766and 15767"Windows 2001.1", and can be easily upgraded for new strings as 15768necessary. 15769This feature will allow "other" operating systems to execute the fully 15770tested, "Windows" code path through the ASL code 15771 15772Global Lock Support: Now allows multiple acquires and releases with any 15773internal thread. Removed concept of "owning thread" for this special 15774mutex. 15775 15776Fixed two functions that were inappropriately declaring large objects on 15777the 15778CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15779during 15780method execution considerably. 15781 15782Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15783S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15784 15785Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15786defined on the machine. 15787 15788Implemented two runtime options: One to force all control method 15789execution 15790to "Serialized" to mimic Windows behavior, another to disable _OSI 15791support 15792if it causes problems on a given machine. 15793 15794Code and Data Size: Current and previous core subsystem library sizes are 15795shown below. These are the code and data sizes for the acpica.lib 15796produced 15797by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15798any ACPI driver or OSPM code. The debug version of the code includes the 15799debug output trace mechanism and has a much larger code and data size. 15800Note 15801that these values will vary depending on the efficiency of the compiler 15802and 15803the compiler options used during generation. 15804 15805 Previous Release: 15806 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15807 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15808 Current Release: 15809 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15810 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15811 158122) iASL Compiler/Disassembler: 15813 15814Fixed an array size problem for FreeBSD that would cause the compiler to 15815fault. 15816 15817---------------------------------------- 1581820 February 2004. Summary of changes for version 20040220: 15819 15820 158211) ACPI CA Core Subsystem: 15822 15823Implemented execution of _SxD methods for Device objects in the 15824GetObjectInfo interface. 15825 15826Fixed calls to _SST method to pass the correct arguments. 15827 15828Added a call to _SST on wake to restore to "working" state. 15829 15830Check for End-Of-Buffer failure case in the WalkResources interface. 15831 15832Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15833structures to the beginning of the file. 15834 15835After wake, clear GPE status register(s) before enabling GPEs. 15836 15837After wake, clear/enable power button. (Perhaps we should clear/enable 15838all 15839fixed events upon wake.) 15840 15841Fixed a couple of possible memory leaks in the Namespace manager. 15842 15843Integrated latest acnetbsd.h file. 15844 15845---------------------------------------- 1584611 February 2004. Summary of changes for version 20040211: 15847 15848 158491) ACPI CA Core Subsystem: 15850 15851Completed investigation and implementation of the call-by-reference 15852mechanism for control method arguments. 15853 15854Fixed a problem where a store of an object into an indexed package could 15855fail if the store occurs within a different method than the method that 15856created the package. 15857 15858Fixed a problem where the ToDecimal operator could return incorrect 15859results. 15860 15861Fixed a problem where the CopyObject operator could fail on some of the 15862more 15863obscure objects (e.g., Reference objects.) 15864 15865Improved the output of the Debug object to display buffer, package, and 15866index objects. 15867 15868Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15869return 15870the expected result. 15871 15872Added permanent ACPI_REPORT_ERROR macros for all instances of the 15873ACPI_AML_INTERNAL exception. 15874 15875Integrated latest version of acfreebsd.h 15876 15877---------------------------------------- 1587816 January 2004. Summary of changes for version 20040116: 15879 15880The purpose of this release is primarily to update the copyright years in 15881each module, thus causing a huge number of diffs. There are a few small 15882functional changes, however. 15883 158841) ACPI CA Core Subsystem: 15885 15886Improved error messages when there is a problem finding one or more of 15887the 15888required base ACPI tables 15889 15890Reintroduced the definition of APIC_HEADER in actbl.h 15891 15892Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15893 15894Removed extraneous reference to NewObj in dsmthdat.c 15895 158962) iASL compiler 15897 15898Fixed a problem introduced in December that disabled the correct 15899disassembly 15900of Resource Templates 15901 15902 15903---------------------------------------- 1590403 December 2003. Summary of changes for version 20031203: 15905 159061) ACPI CA Core Subsystem: 15907 15908Changed the initialization of Operation Regions during subsystem 15909init to perform two entire walks of the ACPI namespace; The first 15910to initialize the regions themselves, the second to execute the 15911_REG methods. This fixed some interdependencies across _REG 15912methods found on some machines. 15913 15914Fixed a problem where a Store(Local0, Local1) could simply update 15915the object reference count, and not create a new copy of the 15916object if the Local1 is uninitialized. 15917 15918Implemented support for the _SST reserved method during sleep 15919transitions. 15920 15921Implemented support to clear the SLP_TYP and SLP_EN bits when 15922waking up, this is apparently required by some machines. 15923 15924When sleeping, clear the wake status only if SleepState is not S5. 15925 15926Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15927pointer arithmetic advanced a string pointer too far. 15928 15929Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15930could be returned if the requested table has not been loaded. 15931 15932Within the support for IRQ resources, restructured the handling of 15933the active and edge/level bits. 15934 15935Fixed a few problems in AcpiPsxExecute() where memory could be 15936leaked under certain error conditions. 15937 15938Improved error messages for the cases where the ACPI mode could 15939not be entered. 15940 15941Code and Data Size: Current and previous core subsystem library 15942sizes are shown below. These are the code and data sizes for the 15943acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15944these values do not include any ACPI driver or OSPM code. The 15945debug version of the code includes the debug output trace 15946mechanism and has a much larger code and data size. Note that 15947these values will vary depending on the efficiency of the compiler 15948and the compiler options used during generation. 15949 15950 Previous Release (20031029): 15951 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15952 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15953 Current Release: 15954 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15955 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15956 159572) iASL Compiler/Disassembler: 15958 15959Implemented a fix for the iASL disassembler where a bad index was 15960generated. This was most noticeable on 64-bit platforms 15961 15962 15963---------------------------------------- 1596429 October 2003. Summary of changes for version 20031029: 15965 159661) ACPI CA Core Subsystem: 15967 15968 15969Fixed a problem where a level-triggered GPE with an associated 15970_Lxx control method was incorrectly cleared twice. 15971 15972Fixed a problem with the Field support code where an access can 15973occur beyond the end-of-region if the field is non-aligned but 15974extends to the very end of the parent region (resulted in an 15975AE_AML_REGION_LIMIT exception.) 15976 15977Fixed a problem with ACPI Fixed Events where an RT Clock handler 15978would not get invoked on an RTC event. The RTC event bitmasks for 15979the PM1 registers were not being initialized properly. 15980 15981Implemented support for executing _STA and _INI methods for 15982Processor objects. Although this is currently not part of the 15983ACPI specification, there is existing ASL code that depends on the 15984init-time execution of these methods. 15985 15986Implemented and deployed a GetDescriptorName function to decode 15987the various types of internal descriptors. Guards against null 15988descriptors during debug output also. 15989 15990Implemented and deployed a GetNodeName function to extract the 4- 15991character namespace node name. This function simplifies the debug 15992and error output, as well as guarding against null pointers during 15993output. 15994 15995Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15996simplify the debug and error output of 64-bit integers. This 15997macro replaces the HIDWORD and LODWORD macros for dumping these 15998integers. 15999 16000Updated the implementation of the Stall() operator to only call 16001AcpiOsStall(), and also return an error if the operand is larger 16002than 255. This preserves the required behavior of not 16003relinquishing the processor, as would happen if AcpiOsSleep() was 16004called for "long stalls". 16005 16006Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 16007initialized are now treated as NOOPs. 16008 16009Cleaned up a handful of warnings during 64-bit generation. 16010 16011Fixed a reported error where and incorrect GPE number was passed 16012to the GPE dispatch handler. This value is only used for error 16013output, however. Used this opportunity to clean up and streamline 16014the GPE dispatch code. 16015 16016Code and Data Size: Current and previous core subsystem library 16017sizes are shown below. These are the code and data sizes for the 16018acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16019these values do not include any ACPI driver or OSPM code. The 16020 16021debug version of the code includes the debug output trace 16022mechanism and has a much larger code and data size. Note that 16023these values will vary depending on the efficiency of the compiler 16024and the compiler options used during generation. 16025 16026 Previous Release (20031002): 16027 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 16028 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 16029 Current Release: 16030 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 16031 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 16032 16033 160342) iASL Compiler/Disassembler: 16035 16036Updated the iASL compiler to return an error if the operand to the 16037Stall() operator is larger than 255. 16038 16039 16040---------------------------------------- 1604102 October 2003. Summary of changes for version 20031002: 16042 16043 160441) ACPI CA Core Subsystem: 16045 16046Fixed a problem with Index Fields where the index was not 16047incremented for fields that require multiple writes to the 16048index/data registers (Fields that are wider than the data 16049register.) 16050 16051Fixed a problem with all Field objects where a write could go 16052beyond the end-of-field if the field was larger than the access 16053granularity and therefore required multiple writes to complete the 16054request. An extra write beyond the end of the field could happen 16055inadvertently. 16056 16057Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 16058would incorrectly be returned if the width of the Data Register 16059was larger than the specified field access width. 16060 16061Completed fixes for LoadTable() and Unload() and verified their 16062operation. Implemented full support for the "DdbHandle" object 16063throughout the ACPI CA subsystem. 16064 16065Implemented full support for the MADT and ECDT tables in the ACPI 16066CA header files. Even though these tables are not directly 16067consumed by ACPI CA, the header definitions are useful for ACPI 16068device drivers. 16069 16070Integrated resource descriptor fixes posted to the Linux ACPI 16071list. This included checks for minimum descriptor length, and 16072support for trailing NULL strings within descriptors that have 16073optional string elements. 16074 16075Code and Data Size: Current and previous core subsystem library 16076sizes are shown below. These are the code and data sizes for the 16077acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16078these values do not include any ACPI driver or OSPM code. The 16079debug version of the code includes the debug output trace 16080mechanism and has a much larger code and data size. Note that 16081these values will vary depending on the efficiency of the compiler 16082and the compiler options used during generation. 16083 16084 Previous Release (20030918): 16085 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16086 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16087 Current Release: 16088 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 16089 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 16090 16091 160922) iASL Compiler: 16093 16094Implemented detection of non-ASCII characters within the input 16095source ASL file. This catches attempts to compile binary (AML) 16096files early in the compile, with an informative error message. 16097 16098Fixed a problem where the disassembler would fault if the output 16099filename could not be generated or if the output file could not be 16100opened. 16101 16102---------------------------------------- 1610318 September 2003. Summary of changes for version 20030918: 16104 16105 161061) ACPI CA Core Subsystem: 16107 16108Found and fixed a longstanding problem with the late execution of 16109the various deferred AML opcodes (such as Operation Regions, 16110Buffer Fields, Buffers, and Packages). If the name string 16111specified for the name of the new object placed the object in a 16112scope other than the current scope, the initialization/execution 16113of the opcode failed. The solution to this problem was to 16114implement a mechanism where the late execution of such opcodes 16115does not attempt to lookup/create the name a second time in an 16116incorrect scope. This fixes the "region size computed 16117incorrectly" problem. 16118 16119Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 16120Global Lock AE_BAD_PARAMETER error. 16121 16122Fixed several 64-bit issues with prototypes, casting and data 16123types. 16124 16125Removed duplicate prototype from acdisasm.h 16126 16127Fixed an issue involving EC Operation Region Detach (Shaohua Li) 16128 16129Code and Data Size: Current and previous core subsystem library 16130sizes are shown below. These are the code and data sizes for the 16131acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16132these values do not include any ACPI driver or OSPM code. The 16133debug version of the code includes the debug output trace 16134mechanism and has a much larger code and data size. Note that 16135these values will vary depending on the efficiency of the compiler 16136and the compiler options used during generation. 16137 16138 Previous Release: 16139 16140 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16141 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16142 Current Release: 16143 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16144 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16145 16146 161472) Linux: 16148 16149Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 16150correct sleep time in seconds. 16151 16152---------------------------------------- 1615314 July 2003. Summary of changes for version 20030619: 16154 161551) ACPI CA Core Subsystem: 16156 16157Parse SSDTs in order discovered, as opposed to reverse order 16158(Hrvoje Habjanic) 16159 16160Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 16161Klausner, 16162 Nate Lawson) 16163 16164 161652) Linux: 16166 16167Dynamically allocate SDT list (suggested by Andi Kleen) 16168 16169proc function return value cleanups (Andi Kleen) 16170 16171Correctly handle NMI watchdog during long stalls (Andrew Morton) 16172 16173Make it so acpismp=force works (reported by Andrew Morton) 16174 16175 16176---------------------------------------- 1617719 June 2003. Summary of changes for version 20030619: 16178 161791) ACPI CA Core Subsystem: 16180 16181Fix To/FromBCD, eliminating the need for an arch-specific #define. 16182 16183Do not acquire a semaphore in the S5 shutdown path. 16184 16185Fix ex_digits_needed for 0. (Takayoshi Kochi) 16186 16187Fix sleep/stall code reversal. (Andi Kleen) 16188 16189Revert a change having to do with control method calling 16190semantics. 16191 161922) Linux: 16193 16194acpiphp update (Takayoshi Kochi) 16195 16196Export acpi_disabled for sonypi (Stelian Pop) 16197 16198Mention acpismp=force in config help 16199 16200Re-add acpitable.c and acpismp=force. This improves backwards 16201 16202compatibility and also cleans up the code to a significant degree. 16203 16204Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 16205 16206---------------------------------------- 1620722 May 2003. Summary of changes for version 20030522: 16208 162091) ACPI CA Core Subsystem: 16210 16211Found and fixed a reported problem where an AE_NOT_FOUND error 16212occurred occasionally during _BST evaluation. This turned out to 16213be an Owner ID allocation issue where a called method did not get 16214a new ID assigned to it. Eventually, (after 64k calls), the Owner 16215ID UINT16 would wraparound so that the ID would be the same as the 16216caller's and the called method would delete the caller's 16217namespace. 16218 16219Implemented extended error reporting for control methods that are 16220aborted due to a run-time exception. Output includes the exact 16221AML instruction that caused the method abort, a dump of the method 16222locals and arguments at the time of the abort, and a trace of all 16223nested control method calls. 16224 16225Modified the interpreter to allow the creation of buffers of zero 16226length from the AML code. Implemented new code to ensure that no 16227attempt is made to actually allocate a memory buffer (of length 16228zero) - instead, a simple buffer object with a NULL buffer pointer 16229and length zero is created. A warning is no longer issued when 16230the AML attempts to create a zero-length buffer. 16231 16232Implemented a workaround for the "leading asterisk issue" in 16233_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 16234asterisk is automatically removed if present in any HID, UID, or 16235CID strings. The iASL compiler will still flag this asterisk as 16236an error, however. 16237 16238Implemented full support for _CID methods that return a package of 16239multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 16240now additionally returns a device _CID list if present. This 16241required a change to the external interface in order to pass an 16242ACPI_BUFFER object as a parameter since the _CID list is of 16243variable length. 16244 16245Fixed a problem with the new AE_SAME_HANDLER exception where 16246handler initialization code did not know about this exception. 16247 16248Code and Data Size: Current and previous core subsystem library 16249sizes are shown below. These are the code and data sizes for the 16250acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16251these values do not include any ACPI driver or OSPM code. The 16252debug version of the code includes the debug output trace 16253mechanism and has a much larger code and data size. Note that 16254these values will vary depending on the efficiency of the compiler 16255and the compiler options used during generation. 16256 16257 Previous Release (20030509): 16258 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16259 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16260 Current Release: 16261 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16262 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16263 16264 162652) Linux: 16266 16267Fixed a bug in which we would reinitialize the ACPI interrupt 16268after it was already working, thus disabling all ACPI and the IRQs 16269for any other device sharing the interrupt. (Thanks to Stian 16270Jordet) 16271 16272Toshiba driver update (John Belmonte) 16273 16274Return only 0 or 1 for our interrupt handler status (Andrew 16275Morton) 16276 16277 162783) iASL Compiler: 16279 16280Fixed a reported problem where multiple (nested) ElseIf() 16281statements were not handled correctly by the compiler, resulting 16282in incorrect warnings and incorrect AML code. This was a problem 16283in both the ASL parser and the code generator. 16284 16285 162864) Documentation: 16287 16288Added changes to existing interfaces, new exception codes, and new 16289text concerning reference count object management versus garbage 16290collection. 16291 16292---------------------------------------- 1629309 May 2003. Summary of changes for version 20030509. 16294 16295 162961) ACPI CA Core Subsystem: 16297 16298Changed the subsystem initialization sequence to hold off 16299installation of address space handlers until the hardware has been 16300initialized and the system has entered ACPI mode. This is because 16301the installation of space handlers can cause _REG methods to be 16302run. Previously, the _REG methods could potentially be run before 16303ACPI mode was enabled. 16304 16305Fixed some memory leak issues related to address space handler and 16306notify handler installation. There were some problems with the 16307reference count mechanism caused by the fact that the handler 16308objects are shared across several namespace objects. 16309 16310Fixed a reported problem where reference counts within the 16311namespace were not properly updated when named objects created by 16312method execution were deleted. 16313 16314Fixed a reported problem where multiple SSDTs caused a deletion 16315issue during subsystem termination. Restructured the table data 16316structures to simplify the linked lists and the related code. 16317 16318Fixed a problem where the table ID associated with secondary 16319tables (SSDTs) was not being propagated into the namespace objects 16320created by those tables. This would only present a problem for 16321tables that are unloaded at run-time, however. 16322 16323Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 16324type as the length parameter (instead of UINT32). 16325 16326Solved a long-standing problem where an ALREADY_EXISTS error 16327appears on various systems. This problem could happen when there 16328are multiple PCI_Config operation regions under a single PCI root 16329bus. This doesn't happen very frequently, but there are some 16330systems that do this in the ASL. 16331 16332Fixed a reported problem where the internal DeleteNode function 16333was incorrectly handling the case where a namespace node was the 16334first in the parent's child list, and had additional peers (not 16335the only child, but first in the list of children.) 16336 16337Code and Data Size: Current core subsystem library sizes are shown 16338below. These are the code and data sizes for the acpica.lib 16339produced by the Microsoft Visual C++ 6.0 compiler, and these 16340values do not include any ACPI driver or OSPM code. The debug 16341version of the code includes the debug output trace mechanism and 16342has a much larger code and data size. Note that these values will 16343vary depending on the efficiency of the compiler and the compiler 16344options used during generation. 16345 16346 Previous Release 16347 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16348 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16349 Current Release: 16350 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16351 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16352 16353 163542) Linux: 16355 16356Allow ":" in OS override string (Ducrot Bruno) 16357 16358Kobject fix (Greg KH) 16359 16360 163613 iASL Compiler/Disassembler: 16362 16363Fixed a problem in the generation of the C source code files (AML 16364is emitted in C source statements for BIOS inclusion) where the 16365Ascii dump that appears within a C comment at the end of each line 16366could cause a compile time error if the AML sequence happens to 16367have an open comment or close comment sequence embedded. 16368 16369 16370---------------------------------------- 1637124 April 2003. Summary of changes for version 20030424. 16372 16373 163741) ACPI CA Core Subsystem: 16375 16376Support for big-endian systems has been implemented. Most of the 16377support has been invisibly added behind big-endian versions of the 16378ACPI_MOVE_* macros. 16379 16380Fixed a problem in AcpiHwDisableGpeBlock() and 16381AcpiHwClearGpeBlock() where an incorrect offset was passed to the 16382low level hardware write routine. The offset parameter was 16383actually eliminated from the low level read/write routines because 16384they had become obsolete. 16385 16386Fixed a problem where a handler object was deleted twice during 16387the removal of a fixed event handler. 16388 16389 163902) Linux: 16391 16392A fix for SMP systems with link devices was contributed by 16393 16394Compaq's Dan Zink. 16395 16396(2.5) Return whether we handled the interrupt in our IRQ handler. 16397(Linux ISRs no longer return void, so we can propagate the handler 16398return value from the ACPI CA core back to the OS.) 16399 16400 16401 164023) Documentation: 16403 16404The ACPI CA Programmer Reference has been updated to reflect new 16405interfaces and changes to existing interfaces. 16406 16407---------------------------------------- 1640828 March 2003. Summary of changes for version 20030328. 16409 164101) ACPI CA Core Subsystem: 16411 16412The GPE Block Device support has been completed. New interfaces 16413are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 16414interfaces (enable, disable, clear, getstatus) have been split 16415into separate interfaces for Fixed Events and General Purpose 16416Events (GPEs) in order to support GPE Block Devices properly. 16417 16418Fixed a problem where the error message "Failed to acquire 16419semaphore" would appear during operations on the embedded 16420controller (EC). 16421 16422Code and Data Size: Current core subsystem library sizes are shown 16423below. These are the code and data sizes for the acpica.lib 16424produced by the Microsoft Visual C++ 6.0 compiler, and these 16425values do not include any ACPI driver or OSPM code. The debug 16426version of the code includes the debug output trace mechanism and 16427has a much larger code and data size. Note that these values will 16428vary depending on the efficiency of the compiler and the compiler 16429options used during generation. 16430 16431 Previous Release 16432 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16433 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16434 Current Release: 16435 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16436 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16437 16438 16439---------------------------------------- 1644028 February 2003. Summary of changes for version 20030228. 16441 16442 164431) ACPI CA Core Subsystem: 16444 16445The GPE handling and dispatch code has been completely overhauled 16446in preparation for support of GPE Block Devices (ID ACPI0006). 16447This affects internal data structures and code only; there should 16448be no differences visible externally. One new file has been 16449added, evgpeblk.c 16450 16451The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 16452fields that are used to determine the GPE block lengths. The 16453REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 16454structures are ignored. This is per the ACPI specification but it 16455isn't very clear. The full 256 Block 0/1 GPEs are now supported 16456(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 16457 16458In the SCI interrupt handler, removed the read of the PM1_CONTROL 16459register to look at the SCI_EN bit. On some machines, this read 16460causes an SMI event and greatly slows down SCI events. (This may 16461in fact be the cause of slow battery status response on some 16462systems.) 16463 16464Fixed a problem where a store of a NULL string to a package object 16465could cause the premature deletion of the object. This was seen 16466during execution of the battery _BIF method on some systems, 16467resulting in no battery data being returned. 16468 16469Added AcpiWalkResources interface to simplify parsing of resource 16470lists. 16471 16472Code and Data Size: Current core subsystem library sizes are shown 16473below. These are the code and data sizes for the acpica.lib 16474produced by the Microsoft Visual C++ 6.0 compiler, and these 16475values do not include any ACPI driver or OSPM code. The debug 16476version of the code includes the debug output trace mechanism and 16477has a much larger code and data size. Note that these values will 16478vary depending on the efficiency of the compiler and the compiler 16479options used during generation. 16480 16481 Previous Release 16482 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16483 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16484 Current Release: 16485 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16486 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16487 16488 164892) Linux 16490 16491S3 fixes (Ole Rohne) 16492 16493Update ACPI PHP driver with to use new acpi_walk_resource API 16494(Bjorn Helgaas) 16495 16496Add S4BIOS support (Pavel Machek) 16497 16498Map in entire table before performing checksum (John Stultz) 16499 16500Expand the mem= cmdline to allow the specification of reserved and 16501ACPI DATA blocks (Pavel Machek) 16502 16503Never use ACPI on VISWS 16504 16505Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 16506 16507Revert a change that allowed P_BLK lengths to be 4 or 5. This is 16508causing us to think that some systems support C2 when they really 16509don't. 16510 16511Do not count processor objects for non-present CPUs (Thanks to 16512Dominik Brodowski) 16513 16514 165153) iASL Compiler: 16516 16517Fixed a problem where ASL include files could not be found and 16518opened. 16519 16520Added support for the _PDC reserved name. 16521 16522 16523---------------------------------------- 1652422 January 2003. Summary of changes for version 20030122. 16525 16526 165271) ACPI CA Core Subsystem: 16528 16529Added a check for constructs of the form: Store (Local0, Local0) 16530where Local0 is not initialized. Apparently, some BIOS 16531programmers believe that this is a NOOP. Since this store doesn't 16532do anything anyway, the new prototype behavior will ignore this 16533error. This is a case where we can relax the strict checking in 16534the interpreter in the name of compatibility. 16535 16536 165372) Linux 16538 16539The AcpiSrc Source Conversion Utility has been released with the 16540Linux package for the first time. This is the utility that is 16541used to convert the ACPI CA base source code to the Linux version. 16542 16543(Both) Handle P_BLK lengths shorter than 6 more gracefully 16544 16545(Both) Move more headers to include/acpi, and delete an unused 16546header. 16547 16548(Both) Move drivers/acpi/include directory to include/acpi 16549 16550(Both) Boot functions don't use cmdline, so don't pass it around 16551 16552(Both) Remove include of unused header (Adrian Bunk) 16553 16554(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 16555the 16556former now also includes the latter, acpiphp.h only needs the one, 16557now. 16558 16559(2.5) Make it possible to select method of bios restoring after S3 16560resume. [=> no more ugly ifdefs] (Pavel Machek) 16561 16562(2.5) Make proc write interfaces work (Pavel Machek) 16563 16564(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 16565 16566(2.5) Break out ACPI Perf code into its own module, under cpufreq 16567(Dominik Brodowski) 16568 16569(2.4) S4BIOS support (Ducrot Bruno) 16570 16571(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 16572Visinoni) 16573 16574 165753) iASL Compiler: 16576 16577Added support to disassemble SSDT and PSDTs. 16578 16579Implemented support to obtain SSDTs from the Windows registry if 16580available. 16581 16582 16583---------------------------------------- 1658409 January 2003. Summary of changes for version 20030109. 16585 165861) ACPI CA Core Subsystem: 16587 16588Changed the behavior of the internal Buffer-to-String conversion 16589function. The current ACPI specification states that the contents 16590of the buffer are "converted to a string of two-character 16591hexadecimal numbers, each separated by a space". Unfortunately, 16592this definition is not backwards compatible with existing ACPI 1.0 16593implementations (although the behavior was not defined in the ACPI 165941.0 specification). The new behavior simply copies data from the 16595buffer to the string until a null character is found or the end of 16596the buffer is reached. The new String object is always null 16597terminated. This problem was seen during the generation of _BIF 16598battery data where incorrect strings were returned for battery 16599type, etc. This will also require an errata to the ACPI 16600specification. 16601 16602Renamed all instances of NATIVE_UINT and NATIVE_INT to 16603ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16604 16605Copyright in all module headers (both Linux and non-Linux) has be 16606updated to 2003. 16607 16608Code and Data Size: Current core subsystem library sizes are shown 16609below. These are the code and data sizes for the acpica.lib 16610produced by the Microsoft Visual C++ 6.0 compiler, and these 16611values do not include any ACPI driver or OSPM code. The debug 16612version of the code includes the debug output trace mechanism and 16613has a much larger code and data size. Note that these values will 16614vary depending on the efficiency of the compiler and the compiler 16615options used during generation. 16616 16617 Previous Release 16618 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16619 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16620 Current Release: 16621 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16622 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16623 16624 166252) Linux 16626 16627Fixed an oops on module insertion/removal (Matthew Tippett) 16628 16629(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16630 16631(2.5) Replace pr_debug (Randy Dunlap) 16632 16633(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16634 16635(Both) Eliminate spawning of thread from timer callback, in favor 16636of schedule_work() 16637 16638(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16639 16640(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16641 16642(Both) Add missing statics to button.c (Pavel Machek) 16643 16644Several changes have been made to the source code translation 16645utility that generates the Linux Code in order to make the code 16646more "Linux-like": 16647 16648All typedefs on structs and unions have been removed in keeping 16649with the Linux coding style. 16650 16651Removed the non-Linux SourceSafe module revision number from each 16652module header. 16653 16654Completed major overhaul of symbols to be lowercase for linux. 16655Doubled the number of symbols that are lowercase. 16656 16657Fixed a problem where identifiers within procedure headers and 16658within quotes were not fully lower cased (they were left with a 16659starting capital.) 16660 16661Some C macros whose only purpose is to allow the generation of 16- 16662bit code are now completely removed in the Linux code, increasing 16663readability and maintainability. 16664 16665---------------------------------------- 16666 1666712 December 2002. Summary of changes for version 20021212. 16668 16669 166701) ACPI CA Core Subsystem: 16671 16672Fixed a problem where the creation of a zero-length AML Buffer 16673would cause a fault. 16674 16675Fixed a problem where a Buffer object that pointed to a static AML 16676buffer (in an ACPI table) could inadvertently be deleted, causing 16677memory corruption. 16678 16679Fixed a problem where a user buffer (passed in to the external 16680ACPI CA interfaces) could be overwritten if the buffer was too 16681small to complete the operation, causing memory corruption. 16682 16683Fixed a problem in the Buffer-to-String conversion code where a 16684string of length one was always returned, regardless of the size 16685of the input Buffer object. 16686 16687Removed the NATIVE_CHAR data type across the entire source due to 16688lack of need and lack of consistent use. 16689 16690Code and Data Size: Current core subsystem library sizes are shown 16691below. These are the code and data sizes for the acpica.lib 16692produced by the Microsoft Visual C++ 6.0 compiler, and these 16693values do not include any ACPI driver or OSPM code. The debug 16694version of the code includes the debug output trace mechanism and 16695has a much larger code and data size. Note that these values will 16696vary depending on the efficiency of the compiler and the compiler 16697options used during generation. 16698 16699 Previous Release 16700 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16701 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16702 Current Release: 16703 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16704 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16705 16706 16707---------------------------------------- 1670805 December 2002. Summary of changes for version 20021205. 16709 167101) ACPI CA Core Subsystem: 16711 16712Fixed a problem where a store to a String or Buffer object could 16713cause corruption of the DSDT if the object type being stored was 16714the same as the target object type and the length of the object 16715being stored was equal to or smaller than the original (existing) 16716target object. This was seen to cause corruption of battery _BIF 16717buffers if the _BIF method modified the buffer on the fly. 16718 16719Fixed a problem where an internal error was generated if a control 16720method invocation was used in an OperationRegion, Buffer, or 16721Package declaration. This was caused by the deferred parsing of 16722the control method and thus the deferred creation of the internal 16723method object. The solution to this problem was to create the 16724internal method object at the moment the method is encountered in 16725the first pass - so that subsequent references to the method will 16726able to obtain the required parameter count and thus properly 16727parse the method invocation. This problem presented itself as an 16728AE_AML_INTERNAL during the pass 1 parse phase during table load. 16729 16730Fixed a problem where the internal String object copy routine did 16731not always allocate sufficient memory for the target String object 16732and caused memory corruption. This problem was seen to cause 16733"Allocation already present in list!" errors as memory allocation 16734became corrupted. 16735 16736Implemented a new function for the evaluation of namespace objects 16737that allows the specification of the allowable return object 16738types. This simplifies a lot of code that checks for a return 16739object of one or more specific objects returned from the 16740evaluation (such as _STA, etc.) This may become and external 16741function if it would be useful to ACPI-related drivers. 16742 16743Completed another round of prefixing #defines with "ACPI_" for 16744clarity. 16745 16746Completed additional code restructuring to allow more modular 16747linking for iASL compiler and AcpiExec. Several files were split 16748creating new files. New files: nsparse.c dsinit.c evgpe.c 16749 16750Implemented an abort mechanism to terminate an executing control 16751method via the AML debugger. This feature is useful for debugging 16752control methods that depend (wait) for specific hardware 16753responses. 16754 16755Code and Data Size: Current core subsystem library sizes are shown 16756below. These are the code and data sizes for the acpica.lib 16757produced by the Microsoft Visual C++ 6.0 compiler, and these 16758values do not include any ACPI driver or OSPM code. The debug 16759version of the code includes the debug output trace mechanism and 16760has a much larger code and data size. Note that these values will 16761vary depending on the efficiency of the compiler and the compiler 16762options used during generation. 16763 16764 Previous Release 16765 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16766 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16767 Current Release: 16768 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16769 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16770 16771 167722) iASL Compiler/Disassembler 16773 16774Fixed a compiler code generation problem for "Interrupt" Resource 16775Descriptors. If specified in the ASL, the optional "Resource 16776Source Index" and "Resource Source" fields were not inserted into 16777the correct location within the AML resource descriptor, creating 16778an invalid descriptor. 16779 16780Fixed a disassembler problem for "Interrupt" resource descriptors. 16781The optional "Resource Source Index" and "Resource Source" fields 16782were ignored. 16783 16784 16785---------------------------------------- 1678622 November 2002. Summary of changes for version 20021122. 16787 16788 167891) ACPI CA Core Subsystem: 16790 16791Fixed a reported problem where an object stored to a Method Local 16792or Arg was not copied to a new object during the store - the 16793object pointer was simply copied to the Local/Arg. This caused 16794all subsequent operations on the Local/Arg to also affect the 16795original source of the store operation. 16796 16797Fixed a problem where a store operation to a Method Local or Arg 16798was not completed properly if the Local/Arg contained a reference 16799(from RefOf) to a named field. The general-purpose store-to- 16800namespace-node code is now used so that this case is handled 16801automatically. 16802 16803Fixed a problem where the internal object copy routine would cause 16804a protection fault if the object being copied was a Package and 16805contained either 1) a NULL package element or 2) a nested sub- 16806package. 16807 16808Fixed a problem with the GPE initialization that resulted from an 16809ambiguity in the ACPI specification. One section of the 16810specification states that both the address and length of the GPE 16811block must be zero if the block is not supported. Another section 16812implies that only the address need be zero if the block is not 16813supported. The code has been changed so that both the address and 16814the length must be non-zero to indicate a valid GPE block (i.e., 16815if either the address or the length is zero, the GPE block is 16816invalid.) 16817 16818Code and Data Size: Current core subsystem library sizes are shown 16819below. These are the code and data sizes for the acpica.lib 16820produced by the Microsoft Visual C++ 6.0 compiler, and these 16821values do not include any ACPI driver or OSPM code. The debug 16822version of the code includes the debug output trace mechanism and 16823has a much larger code and data size. Note that these values will 16824vary depending on the efficiency of the compiler and the compiler 16825options used during generation. 16826 16827 Previous Release 16828 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16829 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16830 Current Release: 16831 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16832 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16833 16834 168352) Linux 16836 16837Cleaned up EC driver. Exported an external EC read/write 16838interface. By going through this, other drivers (most notably 16839sonypi) will be able to serialize access to the EC. 16840 16841 168423) iASL Compiler/Disassembler 16843 16844Implemented support to optionally generate include files for both 16845ASM and C (the -i switch). This simplifies BIOS development by 16846automatically creating include files that contain external 16847declarations for the symbols that are created within the 16848 16849(optionally generated) ASM and C AML source files. 16850 16851 16852---------------------------------------- 1685315 November 2002. Summary of changes for version 20021115. 16854 168551) ACPI CA Core Subsystem: 16856 16857Fixed a memory leak problem where an error during resolution of 16858 16859method arguments during a method invocation from another method 16860failed to cleanup properly by deleting all successfully resolved 16861argument objects. 16862 16863Fixed a problem where the target of the Index() operator was not 16864correctly constructed if the source object was a package. This 16865problem has not been detected because the use of a target operand 16866with Index() is very rare. 16867 16868Fixed a problem with the Index() operator where an attempt was 16869made to delete the operand objects twice. 16870 16871Fixed a problem where an attempt was made to delete an operand 16872twice during execution of the CondRefOf() operator if the target 16873did not exist. 16874 16875Implemented the first of perhaps several internal create object 16876functions that create and initialize a specific object type. This 16877consolidates duplicated code wherever the object is created, thus 16878shrinking the size of the subsystem. 16879 16880Implemented improved debug/error messages for errors that occur 16881during nested method invocations. All executing method pathnames 16882are displayed (with the error) as the call stack is unwound - thus 16883simplifying debug. 16884 16885Fixed a problem introduced in the 10/02 release that caused 16886premature deletion of a buffer object if a buffer was used as an 16887ASL operand where an integer operand is required (Thus causing an 16888implicit object conversion from Buffer to Integer.) The change in 16889the 10/02 release was attempting to fix a memory leak (albeit 16890incorrectly.) 16891 16892Code and Data Size: Current core subsystem library sizes are shown 16893below. These are the code and data sizes for the acpica.lib 16894produced by the Microsoft Visual C++ 6.0 compiler, and these 16895values do not include any ACPI driver or OSPM code. The debug 16896version of the code includes the debug output trace mechanism and 16897has a much larger code and data size. Note that these values will 16898vary depending on the efficiency of the compiler and the compiler 16899options used during generation. 16900 16901 Previous Release 16902 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16903 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16904 Current Release: 16905 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16906 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16907 16908 169092) Linux 16910 16911Changed the implementation of the ACPI semaphores to use down() 16912instead of down_interruptable(). It is important that the 16913execution of ACPI control methods not be interrupted by signals. 16914Methods must run to completion, or the system may be left in an 16915unknown/unstable state. 16916 16917Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16918(Shawn Starr) 16919 16920 169213) iASL Compiler/Disassembler 16922 16923 16924Changed the default location of output files. All output files 16925are now placed in the current directory by default instead of in 16926the directory of the source file. This change may affect some 16927existing makefiles, but it brings the behavior of the compiler in 16928line with other similar tools. The location of the output files 16929can be overridden with the -p command line switch. 16930 16931 16932---------------------------------------- 1693311 November 2002. Summary of changes for version 20021111. 16934 16935 169360) ACPI Specification 2.0B is released and is now available at: 16937http://www.acpi.info/index.html 16938 16939 169401) ACPI CA Core Subsystem: 16941 16942Implemented support for the ACPI 2.0 SMBus Operation Regions. 16943This includes the early detection and handoff of the request to 16944the SMBus region handler (avoiding all of the complex field 16945support code), and support for the bidirectional return packet 16946from an SMBus write operation. This paves the way for the 16947development of SMBus drivers in each host operating system. 16948 16949Fixed a problem where the semaphore WAIT_FOREVER constant was 16950defined as 32 bits, but must be 16 bits according to the ACPI 16951specification. This had the side effect of causing ASL 16952Mutex/Event timeouts even though the ASL code requested a wait 16953forever. Changed all internal references to the ACPI timeout 16954parameter to 16 bits to prevent future problems. Changed the name 16955of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16956 16957Code and Data Size: Current core subsystem library sizes are shown 16958below. These are the code and data sizes for the acpica.lib 16959produced by the Microsoft Visual C++ 6.0 compiler, and these 16960values do not include any ACPI driver or OSPM code. The debug 16961version of the code includes the debug output trace mechanism and 16962has a much larger code and data size. Note that these values will 16963vary depending on the efficiency of the compiler and the compiler 16964options used during generation. 16965 16966 Previous Release 16967 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16968 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16969 Current Release: 16970 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16971 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16972 16973 169742) Linux 16975 16976Module loading/unloading fixes (John Cagle) 16977 16978 169793) iASL Compiler/Disassembler 16980 16981Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16982 16983Implemented support for the disassembly of all SMBus protocol 16984keywords (SMBQuick, SMBWord, etc.) 16985 16986---------------------------------------- 1698701 November 2002. Summary of changes for version 20021101. 16988 16989 169901) ACPI CA Core Subsystem: 16991 16992Fixed a problem where platforms that have a GPE1 block but no GPE0 16993block were not handled correctly. This resulted in a "GPE 16994overlap" error message. GPE0 is no longer required. 16995 16996Removed code added in the previous release that inserted nodes 16997into the namespace in alphabetical order. This caused some side- 16998effects on various machines. The root cause of the problem is 16999still under investigation since in theory, the internal ordering 17000of the namespace nodes should not matter. 17001 17002 17003Enhanced error reporting for the case where a named object is not 17004found during control method execution. The full ACPI namepath 17005(name reference) of the object that was not found is displayed in 17006this case. 17007 17008Note: as a result of the overhaul of the namespace object types in 17009the previous release, the namespace nodes for the predefined 17010scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 17011instead of ACPI_TYPE_ANY. This simplifies the namespace 17012management code but may affect code that walks the namespace tree 17013looking for specific object types. 17014 17015Code and Data Size: Current core subsystem library sizes are shown 17016below. These are the code and data sizes for the acpica.lib 17017produced by the Microsoft Visual C++ 6.0 compiler, and these 17018values do not include any ACPI driver or OSPM code. The debug 17019version of the code includes the debug output trace mechanism and 17020has a much larger code and data size. Note that these values will 17021vary depending on the efficiency of the compiler and the compiler 17022options used during generation. 17023 17024 Previous Release 17025 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 17026 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 17027 Current Release: 17028 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 17029 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 17030 17031 170322) Linux 17033 17034Fixed a problem introduced in the previous release where the 17035Processor and Thermal objects were not recognized and installed in 17036/proc. This was related to the scope type change described above. 17037 17038 170393) iASL Compiler/Disassembler 17040 17041Implemented the -g option to get all of the required ACPI tables 17042from the registry and save them to files (Windows version of the 17043compiler only.) The required tables are the FADT, FACS, and DSDT. 17044 17045Added ACPI table checksum validation during table disassembly in 17046order to catch corrupted tables. 17047 17048 17049---------------------------------------- 1705022 October 2002. Summary of changes for version 20021022. 17051 170521) ACPI CA Core Subsystem: 17053 17054Implemented a restriction on the Scope operator that the target 17055must already exist in the namespace at the time the operator is 17056encountered (during table load or method execution). In other 17057words, forward references are not allowed and Scope() cannot 17058create a new object. This changes the previous behavior where the 17059interpreter would create the name if not found. This new behavior 17060correctly enables the search-to-root algorithm during namespace 17061lookup of the target name. Because of this upsearch, this fixes 17062the known Compaq _SB_.OKEC problem and makes both the AML 17063interpreter and iASL compiler compatible with other ACPI 17064implementations. 17065 17066Completed a major overhaul of the internal ACPI object types for 17067the ACPI Namespace and the associated operand objects. Many of 17068these types had become obsolete with the introduction of the two- 17069pass namespace load. This cleanup simplifies the code and makes 17070the entire namespace load mechanism much clearer and easier to 17071understand. 17072 17073Improved debug output for tracking scope opening/closing to help 17074diagnose scoping issues. The old scope name as well as the new 17075scope name are displayed. Also improved error messages for 17076problems with ASL Mutex objects and error messages for GPE 17077problems. 17078 17079Cleaned up the namespace dump code, removed obsolete code. 17080 17081All string output (for all namespace/object dumps) now uses the 17082common ACPI string output procedure which handles escapes properly 17083and does not emit non-printable characters. 17084 17085Fixed some issues with constants in the 64-bit version of the 17086local C library (utclib.c) 17087 17088 170892) Linux 17090 17091EC Driver: No longer attempts to acquire the Global Lock at 17092interrupt level. 17093 17094 170953) iASL Compiler/Disassembler 17096 17097Implemented ACPI 2.0B grammar change that disallows all Type 1 and 170982 opcodes outside of a control method. This means that the 17099"executable" operators (versus the "namespace" operators) cannot 17100be used at the table level; they can only be used within a control 17101method. 17102 17103Implemented the restriction on the Scope() operator where the 17104target must already exist in the namespace at the time the 17105operator is encountered (during ASL compilation). In other words, 17106forward references are not allowed and Scope() cannot create a new 17107object. This makes the iASL compiler compatible with other ACPI 17108implementations and makes the Scope() implementation adhere to the 17109ACPI specification. 17110 17111Fixed a problem where namepath optimization for the Alias operator 17112was optimizing the wrong path (of the two namepaths.) This caused 17113a "Missing alias link" error message. 17114 17115Fixed a problem where an "unknown reserved name" warning could be 17116incorrectly generated for names like "_SB" when the trailing 17117underscore is not used in the original ASL. 17118 17119Fixed a problem where the reserved name check did not handle 17120NamePaths with multiple NameSegs correctly. The first nameseg of 17121the NamePath was examined instead of the last NameSeg. 17122 17123 17124---------------------------------------- 17125 1712602 October 2002. Summary of changes for this release. 17127 17128 171291) ACPI CA Core Subsystem version 20021002: 17130 17131Fixed a problem where a store/copy of a string to an existing 17132string did not always set the string length properly in the String 17133object. 17134 17135Fixed a reported problem with the ToString operator where the 17136behavior was identical to the ToHexString operator instead of just 17137simply converting a raw buffer to a string data type. 17138 17139Fixed a problem where CopyObject and the other "explicit" 17140conversion operators were not updating the internal namespace node 17141type as part of the store operation. 17142 17143Fixed a memory leak during implicit source operand conversion 17144where the original object was not deleted if it was converted to a 17145new object of a different type. 17146 17147Enhanced error messages for all problems associated with namespace 17148lookups. Common procedure generates and prints the lookup name as 17149well as the formatted status. 17150 17151Completed implementation of a new design for the Alias support 17152within the namespace. The existing design did not handle the case 17153where a new object was assigned to one of the two names due to the 17154use of an explicit conversion operator, resulting in the two names 17155pointing to two different objects. The new design simply points 17156the Alias name to the original name node - not to the object. 17157This results in a level of indirection that must be handled in the 17158name resolution mechanism. 17159 17160Code and Data Size: Current core subsystem library sizes are shown 17161below. These are the code and data sizes for the acpica.lib 17162produced by the Microsoft Visual C++ 6.0 compiler, and these 17163values do not include any ACPI driver or OSPM code. The debug 17164version of the code includes the debug output trace mechanism and 17165has a larger code and data size. Note that these values will vary 17166depending on the efficiency of the compiler and the compiler 17167options used during generation. 17168 17169 Previous Release 17170 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17171 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17172 Current Release: 17173 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 17174 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 17175 17176 171772) Linux 17178 17179Initialize thermal driver's timer before it is used. (Knut 17180Neumann) 17181 17182Allow handling negative celsius values. (Kochi Takayoshi) 17183 17184Fix thermal management and make trip points. R/W (Pavel Machek) 17185 17186Fix /proc/acpi/sleep. (P. Christeas) 17187 17188IA64 fixes. (David Mosberger) 17189 17190Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 17191 17192Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 17193Brodowski) 17194 17195 171963) iASL Compiler/Disassembler 17197 17198Clarified some warning/error messages. 17199 17200 17201---------------------------------------- 1720218 September 2002. Summary of changes for this release. 17203 17204 172051) ACPI CA Core Subsystem version 20020918: 17206 17207Fixed a reported problem with reference chaining (via the Index() 17208and RefOf() operators) in the ObjectType() and SizeOf() operators. 17209The definition of these operators includes the dereferencing of 17210all chained references to return information on the base object. 17211 17212Fixed a problem with stores to indexed package elements - the 17213existing code would not complete the store if an "implicit 17214conversion" was not performed. In other words, if the existing 17215object (package element) was to be replaced completely, the code 17216didn't handle this case. 17217 17218Relaxed typechecking on the ASL "Scope" operator to allow the 17219target name to refer to an object of type Integer, String, or 17220Buffer, in addition to the scoping object types (Device, 17221predefined Scopes, Processor, PowerResource, and ThermalZone.) 17222This allows existing AML code that has workarounds for a bug in 17223Windows to function properly. A warning is issued, however. This 17224affects both the AML interpreter and the iASL compiler. Below is 17225an example of this type of ASL code: 17226 17227 Name(DEB,0x00) 17228 Scope(DEB) 17229 { 17230 17231Fixed some reported problems with 64-bit integer support in the 17232local implementation of C library functions (clib.c) 17233 17234 172352) Linux 17236 17237Use ACPI fix map region instead of IOAPIC region, since it is 17238undefined in non-SMP. 17239 17240Ensure that the SCI has the proper polarity and trigger, even on 17241systems that do not have an interrupt override entry in the MADT. 17242 172432.5 big driver reorganization (Pat Mochel) 17244 17245Use early table mapping code from acpitable.c (Andi Kleen) 17246 17247New blacklist entries (Andi Kleen) 17248 17249Blacklist improvements. Split blacklist code out into a separate 17250file. Move checking the blacklist to very early. Previously, we 17251would use ACPI tables, and then halfway through init, check the 17252blacklist -- too late. Now, it's early enough to completely fall- 17253back to non-ACPI. 17254 17255 172563) iASL Compiler/Disassembler version 20020918: 17257 17258Fixed a problem where the typechecking code didn't know that an 17259alias could point to a method. In other words, aliases were not 17260being dereferenced during typechecking. 17261 17262 17263---------------------------------------- 1726429 August 2002. Summary of changes for this release. 17265 172661) ACPI CA Core Subsystem Version 20020829: 17267 17268If the target of a Scope() operator already exists, it must be an 17269object type that actually opens a scope -- such as a Device, 17270Method, Scope, etc. This is a fatal runtime error. Similar error 17271check has been added to the iASL compiler also. 17272 17273Tightened up the namespace load to disallow multiple names in the 17274same scope. This previously was allowed if both objects were of 17275the same type. (i.e., a lookup was the same as entering a new 17276name). 17277 17278 172792) Linux 17280 17281Ensure that the ACPI interrupt has the proper trigger and 17282polarity. 17283 17284local_irq_disable is extraneous. (Matthew Wilcox) 17285 17286Make "acpi=off" actually do what it says, and not use the ACPI 17287interpreter *or* the tables. 17288 17289Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 17290Takayoshi) 17291 17292 172933) iASL Compiler/Disassembler Version 20020829: 17294 17295Implemented namepath optimization for name declarations. For 17296example, a declaration like "Method (\_SB_.ABCD)" would get 17297optimized to "Method (ABCD)" if the declaration is within the 17298\_SB_ scope. This optimization is in addition to the named 17299reference path optimization first released in the previous 17300version. This would seem to complete all possible optimizations 17301for namepaths within the ASL/AML. 17302 17303If the target of a Scope() operator already exists, it must be an 17304object type that actually opens a scope -- such as a Device, 17305Method, Scope, etc. 17306 17307Implemented a check and warning for unreachable code in the same 17308block below a Return() statement. 17309 17310Fixed a problem where the listing file was not generated if the 17311compiler aborted if the maximum error count was exceeded (200). 17312 17313Fixed a problem where the typechecking of method return values was 17314broken. This includes the check for a return value when the 17315method is invoked as a TermArg (a return value is expected.) 17316 17317Fixed a reported problem where EOF conditions during a quoted 17318string or comment caused a fault. 17319 17320 17321---------------------------------------- 1732215 August 2002. Summary of changes for this release. 17323 173241) ACPI CA Core Subsystem Version 20020815: 17325 17326Fixed a reported problem where a Store to a method argument that 17327contains a reference did not perform the indirect store correctly. 17328This problem was created during the conversion to the new 17329reference object model - the indirect store to a method argument 17330code was not updated to reflect the new model. 17331 17332Reworked the ACPI mode change code to better conform to ACPI 2.0, 17333handle corner cases, and improve code legibility (Kochi Takayoshi) 17334 17335Fixed a problem with the pathname parsing for the carat (^) 17336prefix. The heavy use of the carat operator by the new namepath 17337optimization in the iASL compiler uncovered a problem with the AML 17338interpreter handling of this prefix. In the case where one or 17339more carats precede a single nameseg, the nameseg was treated as 17340standalone and the search rule (to root) was inadvertently 17341applied. This could cause both the iASL compiler and the 17342interpreter to find the wrong object or to miss the error that 17343should occur if the object does not exist at that exact pathname. 17344 17345Found and fixed the problem where the HP Pavilion DSDT would not 17346load. This was a relatively minor tweak to the table loading code 17347(a problem caused by the unexpected encounter with a method 17348invocation not within a control method), but it does not solve the 17349overall issue of the execution of AML code at the table level. 17350This investigation is still ongoing. 17351 17352Code and Data Size: Current core subsystem library sizes are shown 17353below. These are the code and data sizes for the acpica.lib 17354produced by the Microsoft Visual C++ 6.0 compiler, and these 17355values do not include any ACPI driver or OSPM code. The debug 17356version of the code includes the debug output trace mechanism and 17357has a larger code and data size. Note that these values will vary 17358depending on the efficiency of the compiler and the compiler 17359options used during generation. 17360 17361 Previous Release 17362 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17363 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17364 Current Release: 17365 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17366 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17367 17368 173692) Linux 17370 17371Remove redundant slab.h include (Brad Hards) 17372 17373Fix several bugs in thermal.c (Herbert Nachtnebel) 17374 17375Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 17376 17377Change acpi_system_suspend to use updated irq functions (Pavel 17378Machek) 17379 17380Export acpi_get_firmware_table (Matthew Wilcox) 17381 17382Use proper root proc entry for ACPI (Kochi Takayoshi) 17383 17384Fix early-boot table parsing (Bjorn Helgaas) 17385 17386 173873) iASL Compiler/Disassembler 17388 17389Reworked the compiler options to make them more consistent and to 17390use two-letter options where appropriate. We were running out of 17391sensible letters. This may break some makefiles, so check the 17392current options list by invoking the compiler with no parameters. 17393 17394Completed the design and implementation of the ASL namepath 17395optimization option for the compiler. This option optimizes all 17396references to named objects to the shortest possible path. The 17397first attempt tries to utilize a single nameseg (4 characters) and 17398the "search-to-root" algorithm used by the interpreter. If that 17399cannot be used (because either the name is not in the search path 17400or there is a conflict with another object with the same name), 17401the pathname is optimized using the carat prefix (usually a 17402shorter string than specifying the entire path from the root.) 17403 17404Implemented support to obtain the DSDT from the Windows registry 17405(when the disassembly option is specified with no input file). 17406Added this code as the implementation for AcpiOsTableOverride in 17407the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 17408utility) to scan memory for the DSDT to the AcpiOsTableOverride 17409function in the DOS OSL to make the disassembler truly OS 17410independent. 17411 17412Implemented a new option to disassemble and compile in one step. 17413When used without an input filename, this option will grab the 17414DSDT from the local machine, disassemble it, and compile it in one 17415step. 17416 17417Added a warning message for invalid escapes (a backslash followed 17418by any character other than the allowable escapes). This catches 17419the quoted string error "\_SB_" (which should be "\\_SB_" ). 17420 17421Also, there are numerous instances in the ACPI specification where 17422this error occurs. 17423 17424Added a compiler option to disable all optimizations. This is 17425basically the "compatibility mode" because by using this option, 17426the AML code will come out exactly the same as other ASL 17427compilers. 17428 17429Added error messages for incorrectly ordered dependent resource 17430functions. This includes: missing EndDependentFn macro at end of 17431dependent resource list, nested dependent function macros (both 17432start and end), and missing StartDependentFn macro. These are 17433common errors that should be caught at compile time. 17434 17435Implemented _OSI support for the disassembler and compiler. _OSI 17436must be included in the namespace for proper disassembly (because 17437the disassembler must know the number of arguments.) 17438 17439Added an "optimization" message type that is optional (off by 17440default). This message is used for all optimizations - including 17441constant folding, integer optimization, and namepath optimization. 17442 17443---------------------------------------- 1744425 July 2002. Summary of changes for this release. 17445 17446 174471) ACPI CA Core Subsystem Version 20020725: 17448 17449The AML Disassembler has been enhanced to produce compilable ASL 17450code and has been integrated into the iASL compiler (see below) as 17451well as the single-step disassembly for the AML debugger and the 17452disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 17453resource templates and macros are fully supported. The 17454disassembler has been tested on over 30 different AML files, 17455producing identical AML when the resulting disassembled ASL file 17456is recompiled with the same ASL compiler. 17457 17458Modified the Resource Manager to allow zero interrupts and zero 17459dma channels during the GetCurrentResources call. This was 17460causing problems on some platforms. 17461 17462Added the AcpiOsRedirectOutput interface to the OSL to simplify 17463output redirection for the AcpiOsPrintf and AcpiOsVprintf 17464interfaces. 17465 17466Code and Data Size: Current core subsystem library sizes are shown 17467below. These are the code and data sizes for the acpica.lib 17468produced by the Microsoft Visual C++ 6.0 compiler, and these 17469values do not include any ACPI driver or OSPM code. The debug 17470version of the code includes the debug output trace mechanism and 17471has a larger code and data size. Note that these values will vary 17472depending on the efficiency of the compiler and the compiler 17473options used during generation. 17474 17475 Previous Release 17476 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17477 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17478 Current Release: 17479 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17480 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17481 17482 174832) Linux 17484 17485Fixed a panic in the EC driver (Dominik Brodowski) 17486 17487Implemented checksum of the R/XSDT itself during Linux table scan 17488(Richard Schaal) 17489 17490 174913) iASL compiler 17492 17493The AML disassembler is integrated into the compiler. The "-d" 17494option invokes the disassembler to completely disassemble an 17495input AML file, producing as output a text ASL file with the 17496extension ".dsl" (to avoid name collisions with existing .asl 17497source files.) A future enhancement will allow the disassembler 17498to obtain the BIOS DSDT from the registry under Windows. 17499 17500Fixed a problem with the VendorShort and VendorLong resource 17501descriptors where an invalid AML sequence was created. 17502 17503Implemented a fix for BufferData term in the ASL parser. It was 17504inadvertently defined twice, allowing invalid syntax to pass and 17505causing reduction conflicts. 17506 17507Fixed a problem where the Ones opcode could get converted to a 17508value of zero if "Ones" was used where a byte, word or dword value 17509was expected. The 64-bit value is now truncated to the correct 17510size with the correct value. 17511 17512 17513 17514---------------------------------------- 1751502 July 2002. Summary of changes for this release. 17516 17517 175181) ACPI CA Core Subsystem Version 20020702: 17519 17520The Table Manager code has been restructured to add several new 17521features. Tables that are not required by the core subsystem 17522(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 17523validated in any way and are returned from AcpiGetFirmwareTable if 17524requested. The AcpiOsTableOverride interface is now called for 17525each table that is loaded by the subsystem in order to allow the 17526host to override any table it chooses. Previously, only the DSDT 17527could be overridden. Added one new files, tbrsdt.c and 17528tbgetall.c. 17529 17530Fixed a problem with the conversion of internal package objects to 17531external objects (when a package is returned from a control 17532method.) The return buffer length was set to zero instead of the 17533proper length of the package object. 17534 17535Fixed a reported problem with the use of the RefOf and DeRefOf 17536operators when passing reference arguments to control methods. A 17537new type of Reference object is used internally for references 17538produced by the RefOf operator. 17539 17540Added additional error messages in the Resource Manager to explain 17541AE_BAD_DATA errors when they occur during resource parsing. 17542 17543Split the AcpiEnableSubsystem into two primitives to enable a 17544finer granularity initialization sequence. These two calls should 17545be called in this order: AcpiEnableSubsystem (flags), 17546AcpiInitializeObjects (flags). The flags parameter remains the 17547same. 17548 17549 175502) Linux 17551 17552Updated the ACPI utilities module to understand the new style of 17553fully resolved package objects that are now returned from the core 17554subsystem. This eliminates errors of the form: 17555 17556 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 17557 acpi_utils-0430 [145] acpi_evaluate_reference: 17558 Invalid element in package (not a device reference) 17559 17560The method evaluation utility uses the new buffer allocation 17561scheme instead of calling AcpiEvaluate Object twice. 17562 17563Added support for ECDT. This allows the use of the Embedded 17564 17565Controller before the namespace has been fully initialized, which 17566is necessary for ACPI 2.0 support, and for some laptops to 17567initialize properly. (Laptops using ECDT are still rare, so only 17568limited testing was performed of the added functionality.) 17569 17570Fixed memory leaks in the EC driver. 17571 17572Eliminated a brittle code structure in acpi_bus_init(). 17573 17574Eliminated the acpi_evaluate() helper function in utils.c. It is 17575no longer needed since acpi_evaluate_object can optionally 17576allocate memory for the return object. 17577 17578Implemented fix for keyboard hang when getting battery readings on 17579some systems (Stephen White) 17580 17581PCI IRQ routing update (Dominik Brodowski) 17582 17583Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17584support 17585 17586---------------------------------------- 1758711 June 2002. Summary of changes for this release. 17588 17589 175901) ACPI CA Core Subsystem Version 20020611: 17591 17592Fixed a reported problem where constants such as Zero and One 17593appearing within _PRT packages were not handled correctly within 17594the resource manager code. Originally reported against the ASL 17595compiler because the code generator now optimizes integers to 17596their minimal AML representation (i.e. AML constants if possible.) 17597The _PRT code now handles all AML constant opcodes correctly 17598(Zero, One, Ones, Revision). 17599 17600Fixed a problem with the Concatenate operator in the AML 17601interpreter where a buffer result object was incorrectly marked as 17602not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17603 17604All package sub-objects are now fully resolved before they are 17605returned from the external ACPI interfaces. This means that name 17606strings are resolved to object handles, and constant operators 17607(Zero, One, Ones, Revision) are resolved to Integers. 17608 17609Implemented immediate resolution of the AML Constant opcodes 17610(Zero, One, Ones, Revision) to Integer objects upon detection 17611within the AML stream. This has simplified and reduced the 17612generated code size of the subsystem by eliminating about 10 17613switch statements for these constants (which previously were 17614contained in Reference objects.) The complicating issues are that 17615the Zero opcode is used as a "placeholder" for unspecified 17616optional target operands and stores to constants are defined to be 17617no-ops. 17618 17619Code and Data Size: Current core subsystem library sizes are shown 17620below. These are the code and data sizes for the acpica.lib 17621produced by the Microsoft Visual C++ 6.0 compiler, and these 17622values do not include any ACPI driver or OSPM code. The debug 17623version of the code includes the debug output trace mechanism and 17624has a larger code and data size. Note that these values will vary 17625depending on the efficiency of the compiler and the compiler 17626options used during generation. 17627 17628 Previous Release 17629 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17630 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17631 Current Release: 17632 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17633 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17634 17635 176362) Linux 17637 17638 17639Added preliminary support for obtaining _TRA data for PCI root 17640bridges (Bjorn Helgaas). 17641 17642 176433) iASL Compiler Version X2046: 17644 17645Fixed a problem where the "_DDN" reserved name was defined to be a 17646control method with one argument. There are no arguments, and 17647_DDN does not have to be a control method. 17648 17649Fixed a problem with the Linux version of the compiler where the 17650source lines printed with error messages were the wrong lines. 17651This turned out to be the "LF versus CR/LF" difference between 17652Windows and Unix. This appears to be the longstanding issue 17653concerning listing output and error messages. 17654 17655Fixed a problem with the Linux version of compiler where opcode 17656names within error messages were wrong. This was caused by a 17657slight difference in the output of the Flex tool on Linux versus 17658Windows. 17659 17660Fixed a problem with the Linux compiler where the hex output files 17661contained some garbage data caused by an internal buffer overrun. 17662 17663 17664---------------------------------------- 1766517 May 2002. Summary of changes for this release. 17666 17667 176681) ACPI CA Core Subsystem Version 20020517: 17669 17670Implemented a workaround to an BIOS bug discovered on the HP 17671OmniBook where the FADT revision number and the table size are 17672inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17673behavior is to fallback to using only the ACPI 1.0 fields of the 17674FADT if the table is too small to be a ACPI 2.0 table as claimed 17675by the revision number. Although this is a BIOS bug, this is a 17676case where the workaround is simple enough and with no side 17677effects, so it seemed prudent to add it. A warning message is 17678issued, however. 17679 17680Implemented minimum size checks for the fixed-length ACPI tables - 17681- the FADT and FACS, as well as consistency checks between the 17682revision number and the table size. 17683 17684Fixed a reported problem in the table override support where the 17685new table pointer was incorrectly treated as a physical address 17686instead of a logical address. 17687 17688Eliminated the use of the AE_AML_ERROR exception and replaced it 17689with more descriptive codes. 17690 17691Fixed a problem where an exception would occur if an ASL Field was 17692defined with no named Field Units underneath it (used by some 17693index fields). 17694 17695Code and Data Size: Current core subsystem library sizes are shown 17696below. These are the code and data sizes for the acpica.lib 17697produced by the Microsoft Visual C++ 6.0 compiler, and these 17698values do not include any ACPI driver or OSPM code. The debug 17699version of the code includes the debug output trace mechanism and 17700has a larger code and data size. Note that these values will vary 17701depending on the efficiency of the compiler and the compiler 17702options used during generation. 17703 17704 Previous Release 17705 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17706 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17707 Current Release: 17708 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17709 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17710 17711 17712 177132) Linux 17714 17715Much work done on ACPI init (MADT and PCI IRQ routing support). 17716(Paul D. and Dominik Brodowski) 17717 17718Fix PCI IRQ-related panic on boot (Sam Revitch) 17719 17720Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17721 17722Fix "MHz" typo (Dominik Brodowski) 17723 17724Fix RTC year 2000 issue (Dominik Brodowski) 17725 17726Preclude multiple button proc entries (Eric Brunet) 17727 17728Moved arch-specific code out of include/platform/aclinux.h 17729 177303) iASL Compiler Version X2044: 17731 17732Implemented error checking for the string used in the EISAID macro 17733(Usually used in the definition of the _HID object.) The code now 17734strictly enforces the PnP format - exactly 7 characters, 3 17735uppercase letters and 4 hex digits. 17736 17737If a raw string is used in the definition of the _HID object 17738(instead of the EISAID macro), the string must contain all 17739alphanumeric characters (e.g., "*PNP0011" is not allowed because 17740of the asterisk.) 17741 17742Implemented checking for invalid use of ACPI reserved names for 17743most of the name creation operators (Name, Device, Event, Mutex, 17744OperationRegion, PowerResource, Processor, and ThermalZone.) 17745Previously, this check was only performed for control methods. 17746 17747Implemented an additional check on the Name operator to emit an 17748error if a reserved name that must be implemented in ASL as a 17749control method is used. We know that a reserved name must be a 17750method if it is defined with input arguments. 17751 17752The warning emitted when a namespace object reference is not found 17753during the cross reference phase has been changed into an error. 17754The "External" directive should be used for names defined in other 17755modules. 17756 17757 177584) Tools and Utilities 17759 17760The 16-bit tools (adump16 and aexec16) have been regenerated and 17761tested. 17762 17763Fixed a problem with the output of both acpidump and adump16 where 17764the indentation of closing parentheses and brackets was not 17765 17766aligned properly with the parent block. 17767 17768 17769---------------------------------------- 1777003 May 2002. Summary of changes for this release. 17771 17772 177731) ACPI CA Core Subsystem Version 20020503: 17774 17775Added support a new OSL interface that allows the host operating 17776 17777system software to override the DSDT found in the firmware - 17778AcpiOsTableOverride. With this interface, the OSL can examine the 17779version of the firmware DSDT and replace it with a different one 17780if desired. 17781 17782Added new external interfaces for accessing ACPI registers from 17783device drivers and other system software - AcpiGetRegister and 17784AcpiSetRegister. This was simply an externalization of the 17785existing AcpiHwBitRegister interfaces. 17786 17787Fixed a regression introduced in the previous build where the 17788ASL/AML CreateField operator always returned an error, 17789"destination must be a NS Node". 17790 17791Extended the maximum time (before failure) to successfully enable 17792ACPI mode to 3 seconds. 17793 17794Code and Data Size: Current core subsystem library sizes are shown 17795below. These are the code and data sizes for the acpica.lib 17796produced by the Microsoft Visual C++ 6.0 compiler, and these 17797values do not include any ACPI driver or OSPM code. The debug 17798version of the code includes the debug output trace mechanism and 17799has a larger code and data size. Note that these values will vary 17800depending on the efficiency of the compiler and the compiler 17801options used during generation. 17802 17803 Previous Release 17804 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17805 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17806 Current Release: 17807 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17808 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17809 17810 178112) Linux 17812 17813Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17814free. While 3 out of 4 of our in-house systems work fine, the last 17815one still hangs when testing the LAPIC timer. 17816 17817Renamed many files in 2.5 kernel release to omit "acpi_" from the 17818name. 17819 17820Added warning on boot for Presario 711FR. 17821 17822Sleep improvements (Pavel Machek) 17823 17824ACPI can now be built without CONFIG_PCI enabled. 17825 17826IA64: Fixed memory map functions (JI Lee) 17827 17828 178293) iASL Compiler Version X2043: 17830 17831Added support to allow the compiler to be integrated into the MS 17832VC++ development environment for one-button compilation of single 17833files or entire projects -- with error-to-source-line mapping. 17834 17835Implemented support for compile-time constant folding for the 17836Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17837specification. This allows the ASL writer to use expressions 17838instead of Integer/Buffer/String constants in terms that must 17839evaluate to constants at compile time and will also simplify the 17840emitted AML in any such sub-expressions that can be folded 17841(evaluated at compile-time.) This increases the size of the 17842compiler significantly because a portion of the ACPI CA AML 17843interpreter is included within the compiler in order to pre- 17844evaluate constant expressions. 17845 17846 17847Fixed a problem with the "Unicode" ASL macro that caused the 17848compiler to fault. (This macro is used in conjunction with the 17849_STR reserved name.) 17850 17851Implemented an AML opcode optimization to use the Zero, One, and 17852Ones opcodes where possible to further reduce the size of integer 17853constants and thus reduce the overall size of the generated AML 17854code. 17855 17856Implemented error checking for new reserved terms for ACPI version 178572.0A. 17858 17859Implemented the -qr option to display the current list of ACPI 17860reserved names known to the compiler. 17861 17862Implemented the -qc option to display the current list of ASL 17863operators that are allowed within constant expressions and can 17864therefore be folded at compile time if the operands are constants. 17865 17866 178674) Documentation 17868 17869Updated the Programmer's Reference for new interfaces, data types, 17870and memory allocation model options. 17871 17872Updated the iASL Compiler User Reference to apply new format and 17873add information about new features and options. 17874 17875---------------------------------------- 1787619 April 2002. Summary of changes for this release. 17877 178781) ACPI CA Core Subsystem Version 20020419: 17879 17880The source code base for the Core Subsystem has been completely 17881cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17882versions. The Lint option files used are included in the 17883/acpi/generate/lint directory. 17884 17885Implemented enhanced status/error checking across the entire 17886Hardware manager subsystem. Any hardware errors (reported from 17887the OSL) are now bubbled up and will abort a running control 17888method. 17889 17890 17891Fixed a problem where the per-ACPI-table integer width (32 or 64) 17892was stored only with control method nodes, causing a fault when 17893non-control method code was executed during table loading. The 17894solution implemented uses a global variable to indicate table 17895width across the entire ACPI subsystem. Therefore, ACPI CA does 17896not support mixed integer widths across different ACPI tables 17897(DSDT, SSDT). 17898 17899Fixed a problem where NULL extended fields (X fields) in an ACPI 179002.0 ACPI FADT caused the table load to fail. Although the 17901existing ACPI specification is a bit fuzzy on this topic, the new 17902behavior is to fall back on a ACPI 1.0 field if the corresponding 17903ACPI 2.0 X field is zero (even though the table revision indicates 17904a full ACPI 2.0 table.) The ACPI specification will be updated to 17905clarify this issue. 17906 17907Fixed a problem with the SystemMemory operation region handler 17908where memory was always accessed byte-wise even if the AML- 17909specified access width was larger than a byte. This caused 17910problems on systems with memory-mapped I/O. Memory is now 17911accessed with the width specified. On systems that do not support 17912non-aligned transfers, a check is made to guarantee proper address 17913alignment before proceeding in order to avoid an AML-caused 17914alignment fault within the kernel. 17915 17916 17917Fixed a problem with the ExtendedIrq resource where only one byte 17918of the 4-byte Irq field was extracted. 17919 17920Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17921function was out of date and required a rewrite. 17922 17923Code and Data Size: Current core subsystem library sizes are shown 17924below. These are the code and data sizes for the acpica.lib 17925produced by the Microsoft Visual C++ 6.0 compiler, and these 17926values do not include any ACPI driver or OSPM code. The debug 17927version of the code includes the debug output trace mechanism and 17928has a larger code and data size. Note that these values will vary 17929depending on the efficiency of the compiler and the compiler 17930options used during generation. 17931 17932 Previous Release 17933 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17934 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17935 Current Release: 17936 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17937 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17938 17939 179402) Linux 17941 17942PCI IRQ routing fixes (Dominik Brodowski) 17943 17944 179453) iASL Compiler Version X2042: 17946 17947Implemented an additional compile-time error check for a field 17948unit whose size + minimum access width would cause a run-time 17949access beyond the end-of-region. Previously, only the field size 17950itself was checked. 17951 17952The Core subsystem and iASL compiler now share a common parse 17953object in preparation for compile-time evaluation of the type 179543/4/5 ASL operators. 17955 17956 17957---------------------------------------- 17958Summary of changes for this release: 03_29_02 17959 179601) ACPI CA Core Subsystem Version 20020329: 17961 17962Implemented support for late evaluation of TermArg operands to 17963Buffer and Package objects. This allows complex expressions to be 17964used in the declarations of these object types. 17965 17966Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 179671.0, if the field was larger than 32 bits, it was returned as a 17968buffer - otherwise it was returned as an integer. In ACPI 2.0, 17969the field is returned as a buffer only if the field is larger than 1797064 bits. The TableRevision is now considered when making this 17971conversion to avoid incompatibility with existing ASL code. 17972 17973Implemented logical addressing for AcpiOsGetRootPointer. This 17974allows an RSDP with either a logical or physical address. With 17975this support, the host OS can now override all ACPI tables with 17976one logical RSDP. Includes implementation of "typed" pointer 17977support to allow a common data type for both physical and logical 17978pointers internally. This required a change to the 17979AcpiOsGetRootPointer interface. 17980 17981Implemented the use of ACPI 2.0 Generic Address Structures for all 17982GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17983mapped I/O for these ACPI features. 17984 17985Initialization now ignores not only non-required tables (All 17986tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17987not validate the table headers of unrecognized tables. 17988 17989Fixed a problem where a notify handler could only be 17990installed/removed on an object of type Device. All "notify" 17991 17992objects are now supported -- Devices, Processor, Power, and 17993Thermal. 17994 17995Removed most verbosity from the ACPI_DB_INFO debug level. Only 17996critical information is returned when this debug level is enabled. 17997 17998Code and Data Size: Current core subsystem library sizes are shown 17999below. These are the code and data sizes for the acpica.lib 18000produced by the Microsoft Visual C++ 6.0 compiler, and these 18001values do not include any ACPI driver or OSPM code. The debug 18002version of the code includes the debug output trace mechanism and 18003has a larger code and data size. Note that these values will vary 18004depending on the efficiency of the compiler and the compiler 18005options used during generation. 18006 18007 Previous Release 18008 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18009 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18010 Current Release: 18011 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 18012 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 18013 18014 180152) Linux: 18016 18017The processor driver (acpi_processor.c) now fully supports ACPI 180182.0-based processor performance control (e.g. Intel(R) 18019SpeedStep(TM) technology) Note that older laptops that only have 18020the Intel "applet" interface are not supported through this. The 18021'limit' and 'performance' interface (/proc) are fully functional. 18022[Note that basic policy for controlling performance state 18023transitions will be included in the next version of ospmd.] The 18024idle handler was modified to more aggressively use C2, and PIIX4 18025errata handling underwent a complete overhaul (big thanks to 18026Dominik Brodowski). 18027 18028Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 18029based devices in the ACPI namespace are now dynamically bound 18030(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 18031This allows, among other things, ACPI to resolve bus numbers for 18032subordinate PCI bridges. 18033 18034Enhanced PCI IRQ routing to get the proper bus number for _PRT 18035entries defined underneath PCI bridges. 18036 18037Added IBM 600E to bad bios list due to invalid _ADR value for 18038PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 18039 18040In the process of adding full MADT support (e.g. IOAPIC) for IA32 18041(acpi.c, mpparse.c) -- stay tuned. 18042 18043Added back visual differentiation between fixed-feature and 18044control-method buttons in dmesg. Buttons are also subtyped (e.g. 18045button/power/PWRF) to simplify button identification. 18046 18047We no longer use -Wno-unused when compiling debug. Please ignore 18048any "_THIS_MODULE defined but not used" messages. 18049 18050Can now shut down the system using "magic sysrq" key. 18051 18052 180533) iASL Compiler version 2041: 18054 18055Fixed a problem where conversion errors for hex/octal/decimal 18056constants were not reported. 18057 18058Implemented a fix for the General Register template Address field. 18059This field was 8 bits when it should be 64. 18060 18061Fixed a problem where errors/warnings were no longer being emitted 18062within the listing output file. 18063 18064Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 18065exactly 4 characters, alphanumeric only. 18066 18067 18068 18069 18070---------------------------------------- 18071Summary of changes for this release: 03_08_02 18072 18073 180741) ACPI CA Core Subsystem Version 20020308: 18075 18076Fixed a problem with AML Fields where the use of the "AccessAny" 18077keyword could cause an interpreter error due to attempting to read 18078or write beyond the end of the parent Operation Region. 18079 18080Fixed a problem in the SystemMemory Operation Region handler where 18081an attempt was made to map memory beyond the end of the region. 18082This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 18083errors on some Linux systems. 18084 18085Fixed a problem where the interpreter/namespace "search to root" 18086algorithm was not functioning for some object types. Relaxed the 18087internal restriction on the search to allow upsearches for all 18088external object types as well as most internal types. 18089 18090 180912) Linux: 18092 18093We now use safe_halt() macro versus individual calls to sti | hlt. 18094 18095Writing to the processor limit interface should now work. "echo 1" 18096will increase the limit, 2 will decrease, and 0 will reset to the 18097 18098default. 18099 18100 181013) ASL compiler: 18102 18103Fixed segfault on Linux version. 18104 18105 18106---------------------------------------- 18107Summary of changes for this release: 02_25_02 18108 181091) ACPI CA Core Subsystem: 18110 18111 18112Fixed a problem where the GPE bit masks were not initialized 18113properly, causing erratic GPE behavior. 18114 18115Implemented limited support for multiple calling conventions. The 18116code can be generated with either the VPL (variable parameter 18117list, or "C") convention, or the FPL (fixed parameter list, or 18118"Pascal") convention. The core subsystem is about 3.4% smaller 18119when generated with FPL. 18120 18121 181222) Linux 18123 18124Re-add some /proc/acpi/event functionality that was lost during 18125the rewrite 18126 18127Resolved issue with /proc events for fixed-feature buttons showing 18128up as the system device. 18129 18130Fixed checks on C2/C3 latencies to be inclusive of maximum values. 18131 18132Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 18133 18134Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 18135 18136Fixed limit interface & usage to fix bugs with passive cooling 18137hysterisis. 18138 18139Restructured PRT support. 18140 18141 18142---------------------------------------- 18143Summary of changes for this label: 02_14_02 18144 18145 181461) ACPI CA Core Subsystem: 18147 18148Implemented support in AcpiLoadTable to allow loading of FACS and 18149FADT tables. 18150 18151Support for the now-obsolete interim 0.71 64-bit ACPI tables has 18152been removed. All 64-bit platforms should be migrated to the ACPI 181532.0 tables. The actbl71.h header has been removed from the source 18154tree. 18155 18156All C macros defined within the subsystem have been prefixed with 18157"ACPI_" to avoid collision with other system include files. 18158 18159Removed the return value for the two AcpiOsPrint interfaces, since 18160it is never used and causes lint warnings for ignoring the return 18161value. 18162 18163Added error checking to all internal mutex acquire and release 18164calls. Although a failure from one of these interfaces is 18165probably a fatal system error, these checks will cause the 18166immediate abort of the currently executing method or interface. 18167 18168Fixed a problem where the AcpiSetCurrentResources interface could 18169fault. This was a side effect of the deployment of the new memory 18170allocation model. 18171 18172Fixed a couple of problems with the Global Lock support introduced 18173in the last major build. The "common" (1.0/2.0) internal FACS was 18174being overwritten with the FACS signature and clobbering the 18175Global Lock pointer. Also, the actual firmware FACS was being 18176unmapped after construction of the "common" FACS, preventing 18177access to the actual Global Lock field within it. The "common" 18178internal FACS is no longer installed as an actual ACPI table; it 18179is used simply as a global. 18180 18181Code and Data Size: Current core subsystem library sizes are shown 18182below. These are the code and data sizes for the acpica.lib 18183produced by the Microsoft Visual C++ 6.0 compiler, and these 18184values do not include any ACPI driver or OSPM code. The debug 18185version of the code includes the debug output trace mechanism and 18186has a larger code and data size. Note that these values will vary 18187depending on the efficiency of the compiler and the compiler 18188options used during generation. 18189 18190 Previous Release (02_07_01) 18191 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18192 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18193 Current Release: 18194 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18195 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18196 18197 181982) Linux 18199 18200Updated Linux-specific code for core macro and OSL interface 18201changes described above. 18202 18203Improved /proc/acpi/event. It now can be opened only once and has 18204proper poll functionality. 18205 18206Fixed and restructured power management (acpi_bus). 18207 18208Only create /proc "view by type" when devices of that class exist. 18209 18210Fixed "charging/discharging" bug (and others) in acpi_battery. 18211 18212Improved thermal zone code. 18213 18214 182153) ASL Compiler, version X2039: 18216 18217 18218Implemented the new compiler restriction on ASL String hex/octal 18219escapes to non-null, ASCII values. An error results if an invalid 18220value is used. (This will require an ACPI 2.0 specification 18221change.) 18222 18223AML object labels that are output to the optional C and ASM source 18224are now prefixed with both the ACPI table signature and table ID 18225to help guarantee uniqueness within a large BIOS project. 18226 18227 18228---------------------------------------- 18229Summary of changes for this label: 02_01_02 18230 182311) ACPI CA Core Subsystem: 18232 18233ACPI 2.0 support is complete in the entire Core Subsystem and the 18234ASL compiler. All new ACPI 2.0 operators are implemented and all 18235other changes for ACPI 2.0 support are complete. With 18236simultaneous code and data optimizations throughout the subsystem, 18237ACPI 2.0 support has been implemented with almost no additional 18238cost in terms of code and data size. 18239 18240Implemented a new mechanism for allocation of return buffers. If 18241the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 18242be allocated on behalf of the caller. Consolidated all return 18243buffer validation and allocation to a common procedure. Return 18244buffers will be allocated via the primary OSL allocation interface 18245since it appears that a separate pool is not needed by most users. 18246If a separate pool is required for these buffers, the caller can 18247still use the original mechanism and pre-allocate the buffer(s). 18248 18249Implemented support for string operands within the DerefOf 18250operator. 18251 18252Restructured the Hardware and Event managers to be table driven, 18253simplifying the source code and reducing the amount of generated 18254code. 18255 18256Split the common read/write low-level ACPI register bitfield 18257procedure into a separate read and write, simplifying the code 18258considerably. 18259 18260Obsoleted the AcpiOsCallocate OSL interface. This interface was 18261used only a handful of times and didn't have enough critical mass 18262for a separate interface. Replaced with a common calloc procedure 18263in the core. 18264 18265Fixed a reported problem with the GPE number mapping mechanism 18266that allows GPE1 numbers to be non-contiguous with GPE0. 18267Reorganized the GPE information and shrunk a large array that was 18268originally large enough to hold info for all possible GPEs (256) 18269to simply large enough to hold all GPEs up to the largest GPE 18270number on the machine. 18271 18272Fixed a reported problem with resource structure alignment on 64- 18273bit platforms. 18274 18275Changed the AcpiEnableEvent and AcpiDisableEvent external 18276interfaces to not require any flags for the common case of 18277enabling/disabling a GPE. 18278 18279Implemented support to allow a "Notify" on a Processor object. 18280 18281Most TBDs in comments within the source code have been resolved 18282and eliminated. 18283 18284 18285Fixed a problem in the interpreter where a standalone parent 18286prefix (^) was not handled correctly in the interpreter and 18287debugger. 18288 18289Removed obsolete and unnecessary GPE save/restore code. 18290 18291Implemented Field support in the ASL Load operator. This allows a 18292table to be loaded from a named field, in addition to loading a 18293table directly from an Operation Region. 18294 18295Implemented timeout and handle support in the external Global Lock 18296interfaces. 18297 18298Fixed a problem in the AcpiDump utility where pathnames were no 18299longer being generated correctly during the dump of named objects. 18300 18301Modified the AML debugger to give a full display of if/while 18302predicates instead of just one AML opcode at a time. (The 18303predicate can have several nested ASL statements.) The old method 18304was confusing during single stepping. 18305 18306Code and Data Size: Current core subsystem library sizes are shown 18307below. These are the code and data sizes for the acpica.lib 18308produced by the Microsoft Visual C++ 6.0 compiler, and these 18309values do not include any ACPI driver or OSPM code. The debug 18310version of the code includes the debug output trace mechanism and 18311has a larger code and data size. Note that these values will vary 18312depending on the efficiency of the compiler and the compiler 18313options used during generation. 18314 18315 Previous Release (12_18_01) 18316 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18317 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18318 Current Release: 18319 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18320 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18321 183222) Linux 18323 18324 Implemented fix for PIIX reverse throttling errata (Processor 18325driver) 18326 18327Added new Limit interface (Processor and Thermal drivers) 18328 18329New thermal policy (Thermal driver) 18330 18331Many updates to /proc 18332 18333Battery "low" event support (Battery driver) 18334 18335Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 18336 18337IA32 - IA64 initialization unification, no longer experimental 18338 18339Menuconfig options redesigned 18340 183413) ASL Compiler, version X2037: 18342 18343Implemented several new output features to simplify integration of 18344AML code into firmware: 1) Output the AML in C source code with 18345labels for each named ASL object. The original ASL source code 18346is interleaved as C comments. 2) Output the AML in ASM source code 18347with labels and interleaved ASL source. 3) Output the AML in 18348raw hex table form, in either C or ASM. 18349 18350Implemented support for optional string parameters to the 18351LoadTable operator. 18352 18353Completed support for embedded escape sequences within string 18354literals. The compiler now supports all single character escapes 18355as well as the Octal and Hex escapes. Note: the insertion of a 18356null byte into a string literal (via the hex/octal escape) causes 18357the string to be immediately terminated. A warning is issued. 18358 18359Fixed a problem where incorrect AML was generated for the case 18360where an ASL namepath consists of a single parent prefix ( 18361 18362) with no trailing name segments. 18363 18364The compiler has been successfully generated with a 64-bit C 18365compiler. 18366 18367 18368 18369 18370---------------------------------------- 18371Summary of changes for this label: 12_18_01 18372 183731) Linux 18374 18375Enhanced blacklist with reason and severity fields. Any table's 18376signature may now be used to identify a blacklisted system. 18377 18378Call _PIC control method to inform the firmware which interrupt 18379model the OS is using. Turn on any disabled link devices. 18380 18381Cleaned up busmgr /proc error handling (Andreas Dilger) 18382 18383 2) ACPI CA Core Subsystem: 18384 18385Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 18386while loop) 18387 18388Completed implementation of the ACPI 2.0 "Continue", 18389"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 18390operators. All new ACPI 2.0 operators are now implemented in both 18391the ASL compiler and the AML interpreter. The only remaining ACPI 183922.0 task is support for the String data type in the DerefOf 18393operator. Fixed a problem with AcquireMutex where the status code 18394was lost if the caller had to actually wait for the mutex. 18395 18396Increased the maximum ASL Field size from 64K bits to 4G bits. 18397 18398Completed implementation of the external Global Lock interfaces -- 18399AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 18400Handler parameters were added. 18401 18402Completed another pass at removing warnings and issues when 18403compiling with 64-bit compilers. The code now compiles cleanly 18404with the Intel 64-bit C/C++ compiler. Most notably, the pointer 18405add and subtract (diff) macros have changed considerably. 18406 18407 18408Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1840964-bit platforms, 32-bits on all others. This type is used 18410wherever memory allocation and/or the C sizeof() operator is used, 18411and affects the OSL memory allocation interfaces AcpiOsAllocate 18412and AcpiOsCallocate. 18413 18414Implemented sticky user breakpoints in the AML debugger. 18415 18416Code and Data Size: Current core subsystem library sizes are shown 18417below. These are the code and data sizes for the acpica.lib 18418produced by the Microsoft Visual C++ 6.0 compiler, and these 18419values do not include any ACPI driver or OSPM code. The debug 18420version of the code includes the debug output trace mechanism and 18421has a larger code and data size. Note that these values will vary 18422depending on the efficiency of the compiler and the compiler 18423options used during generation. 18424 18425 Previous Release (12_05_01) 18426 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18427 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18428 Current Release: 18429 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18430 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18431 18432 3) ASL Compiler, version X2034: 18433 18434Now checks for (and generates an error if detected) the use of a 18435Break or Continue statement without an enclosing While statement. 18436 18437 18438Successfully generated the compiler with the Intel 64-bit C 18439compiler. 18440 18441 ---------------------------------------- 18442Summary of changes for this label: 12_05_01 18443 18444 1) ACPI CA Core Subsystem: 18445 18446The ACPI 2.0 CopyObject operator is fully implemented. This 18447operator creates a new copy of an object (and is also used to 18448bypass the "implicit conversion" mechanism of the Store operator.) 18449 18450The ACPI 2.0 semantics for the SizeOf operator are fully 18451implemented. The change is that performing a SizeOf on a 18452reference object causes an automatic dereference of the object to 18453the actual value before the size is evaluated. This behavior was 18454undefined in ACPI 1.0. 18455 18456The ACPI 2.0 semantics for the Extended IRQ resource descriptor 18457have been implemented. The interrupt polarity and mode are now 18458independently set. 18459 18460Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 18461appearing in Package objects were not properly converted to 18462integers when the internal Package was converted to an external 18463object (via the AcpiEvaluateObject interface.) 18464 18465Fixed a problem with the namespace object deletion mechanism for 18466objects created by control methods. There were two parts to this 18467problem: 1) Objects created during the initialization phase method 18468parse were not being deleted, and 2) The object owner ID mechanism 18469to track objects was broken. 18470 18471Fixed a problem where the use of the ASL Scope operator within a 18472control method would result in an invalid opcode exception. 18473 18474Fixed a problem introduced in the previous label where the buffer 18475length required for the _PRT structure was not being returned 18476correctly. 18477 18478Code and Data Size: Current core subsystem library sizes are shown 18479below. These are the code and data sizes for the acpica.lib 18480produced by the Microsoft Visual C++ 6.0 compiler, and these 18481values do not include any ACPI driver or OSPM code. The debug 18482version of the code includes the debug output trace mechanism and 18483has a larger code and data size. Note that these values will vary 18484depending on the efficiency of the compiler and the compiler 18485options used during generation. 18486 18487 Previous Release (11_20_01) 18488 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18489 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18490 18491 Current Release: 18492 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18493 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18494 18495 2) Linux: 18496 18497Updated all files to apply cleanly against 2.4.16. 18498 18499Added basic PCI Interrupt Routing Table (PRT) support for IA32 18500(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 18501version supports both static and dynamic PRT entries, but dynamic 18502entries are treated as if they were static (not yet 18503reconfigurable). Architecture- specific code to use this data is 18504absent on IA32 but should be available shortly. 18505 18506Changed the initialization sequence to start the ACPI interpreter 18507(acpi_init) prior to initialization of the PCI driver (pci_init) 18508in init/main.c. This ordering is required to support PRT and 18509facilitate other (future) enhancement. A side effect is that the 18510ACPI bus driver and certain device drivers can no longer be loaded 18511as modules. 18512 18513Modified the 'make menuconfig' options to allow PCI Interrupt 18514Routing support to be included without the ACPI Bus and other 18515device drivers. 18516 18517 3) ASL Compiler, version X2033: 18518 18519Fixed some issues with the use of the new CopyObject and 18520DataTableRegion operators. Both are fully functional. 18521 18522 ---------------------------------------- 18523Summary of changes for this label: 11_20_01 18524 18525 20 November 2001. Summary of changes for this release. 18526 18527 1) ACPI CA Core Subsystem: 18528 18529Updated Index support to match ACPI 2.0 semantics. Storing a 18530Integer, String, or Buffer to an Index of a Buffer will store only 18531the least-significant byte of the source to the Indexed buffer 18532byte. Multiple writes are not performed. 18533 18534Fixed a problem where the access type used in an AccessAs ASL 18535operator was not recorded correctly into the field object. 18536 18537Fixed a problem where ASL Event objects were created in a 18538signalled state. Events are now created in an unsignalled state. 18539 18540The internal object cache is now purged after table loading and 18541initialization to reduce the use of dynamic kernel memory -- on 18542the assumption that object use is greatest during the parse phase 18543of the entire table (versus the run-time use of individual control 18544methods.) 18545 18546ACPI 2.0 variable-length packages are now fully operational. 18547 18548Code and Data Size: Code and Data optimizations have permitted new 18549feature development with an actual reduction in the library size. 18550Current core subsystem library sizes are shown below. These are 18551the code and data sizes for the acpica.lib produced by the 18552Microsoft Visual C++ 6.0 compiler, and these values do not include 18553any ACPI driver or OSPM code. The debug version of the code 18554includes the debug output trace mechanism and has a larger code 18555and data size. Note that these values will vary depending on the 18556efficiency of the compiler and the compiler options used during 18557generation. 18558 18559 Previous Release (11_09_01): 18560 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18561 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18562 18563 Current Release: 18564 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18565 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18566 18567 2) Linux: 18568 18569Enhanced the ACPI boot-time initialization code to allow the use 18570of Local APIC tables for processor enumeration on IA-32, and to 18571pave the way for a fully MPS-free boot (on SMP systems) in the 18572near future. This functionality replaces 18573arch/i386/kernel/acpitables.c, which was introduced in an earlier 185742.4.15-preX release. To enable this feature you must add 18575"acpi_boot=on" to the kernel command line -- see the help entry 18576for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 18577the works... 18578 18579Restructured the configuration options to allow boot-time table 18580parsing support without inclusion of the ACPI Interpreter (and 18581other) code. 18582 18583NOTE: This release does not include fixes for the reported events, 18584power-down, and thermal passive cooling issues (coming soon). 18585 18586 3) ASL Compiler: 18587 18588Added additional typechecking for Fields within restricted access 18589Operation Regions. All fields within EC and CMOS regions must be 18590declared with ByteAcc. All fields within SMBus regions must be 18591declared with the BufferAcc access type. 18592 18593Fixed a problem where the listing file output of control methods 18594no longer interleaved the actual AML code with the ASL source 18595code. 18596 18597 18598 18599 18600---------------------------------------- 18601Summary of changes for this label: 11_09_01 18602 186031) ACPI CA Core Subsystem: 18604 18605Implemented ACPI 2.0-defined support for writes to fields with a 18606Buffer, String, or Integer source operand that is smaller than the 18607target field. In these cases, the source operand is zero-extended 18608to fill the target field. 18609 18610Fixed a problem where a Field starting bit offset (within the 18611parent operation region) was calculated incorrectly if the 18612 18613alignment of the field differed from the access width. This 18614affected CreateWordField, CreateDwordField, CreateQwordField, and 18615possibly other fields that use the "AccessAny" keyword. 18616 18617Fixed a problem introduced in the 11_02_01 release where indirect 18618stores through method arguments did not operate correctly. 18619 186202) Linux: 18621 18622Implemented boot-time ACPI table parsing support 18623(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18624facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18625legacy BIOS interfaces (e.g. MPS) for the configuration of system 18626processors, memory, and interrupts during setup_arch(). Note that 18627this patch does not include the required architecture-specific 18628changes required to apply this information -- subsequent patches 18629will be posted for both IA32 and IA64 to achieve this. 18630 18631Added low-level sleep support for IA32 platforms, courtesy of Pat 18632Mochel. This allows IA32 systems to transition to/from various 18633sleeping states (e.g. S1, S3), although the lack of a centralized 18634driver model and power-manageable drivers will prevent its 18635(successful) use on most systems. 18636 18637Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18638submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18639tables" option, etc. 18640 18641Increased the default timeout for the EC driver from 1ms to 10ms 18642(1000 cycles of 10us) to try to address AE_TIME errors during EC 18643transactions. 18644 18645 ---------------------------------------- 18646Summary of changes for this label: 11_02_01 18647 186481) ACPI CA Core Subsystem: 18649 18650ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18651(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18652implemented. 18653 18654OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18655changes to support ACPI 2.0 Qword field access. Read/Write 18656PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18657accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18658the value parameter for the address space handler interface is now 18659an ACPI_INTEGER. OSL implementations of these interfaces must now 18660handle the case where the Width parameter is 64. 18661 18662Index Fields: Fixed a problem where unaligned bit assembly and 18663disassembly for IndexFields was not supported correctly. 18664 18665Index and Bank Fields: Nested Index and Bank Fields are now 18666supported. During field access, a check is performed to ensure 18667that the value written to an Index or Bank register is not out of 18668the range of the register. The Index (or Bank) register is 18669written before each access to the field data. Future support will 18670include allowing individual IndexFields to be wider than the 18671DataRegister width. 18672 18673Fields: Fixed a problem where the AML interpreter was incorrectly 18674attempting to write beyond the end of a Field/OpRegion. This was 18675a boundary case that occurred when a DWORD field was written to a 18676BYTE access OpRegion, forcing multiple writes and causing the 18677interpreter to write one datum too many. 18678 18679Fields: Fixed a problem with Field/OpRegion access where the 18680starting bit address of a field was incorrectly calculated if the 18681current access type was wider than a byte (WordAcc, DwordAcc, or 18682QwordAcc). 18683 18684Fields: Fixed a problem where forward references to individual 18685FieldUnits (individual Field names within a Field definition) were 18686not resolved during the AML table load. 18687 18688Fields: Fixed a problem where forward references from a Field 18689definition to the parent Operation Region definition were not 18690resolved during the AML table load. 18691 18692Fields: Duplicate FieldUnit names within a scope are now detected 18693during AML table load. 18694 18695Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18696returned an incorrect name for the root node. 18697 18698Code and Data Size: Code and Data optimizations have permitted new 18699feature development with an actual reduction in the library size. 18700Current core subsystem library sizes are shown below. These are 18701the code and data sizes for the acpica.lib produced by the 18702Microsoft Visual C++ 6.0 compiler, and these values do not include 18703any ACPI driver or OSPM code. The debug version of the code 18704includes the debug output trace mechanism and has a larger code 18705and data size. Note that these values will vary depending on the 18706efficiency of the compiler and the compiler options used during 18707generation. 18708 18709 Previous Release (10_18_01): 18710 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18711 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18712 18713 Current Release: 18714 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18715 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18716 18717 2) Linux: 18718 18719Improved /proc processor output (Pavel Machek) Re-added 18720MODULE_LICENSE("GPL") to all modules. 18721 18722 3) ASL Compiler version X2030: 18723 18724Duplicate FieldUnit names within a scope are now detected and 18725flagged as errors. 18726 18727 4) Documentation: 18728 18729Programmer Reference updated to reflect OSL and address space 18730handler interface changes described above. 18731 18732---------------------------------------- 18733Summary of changes for this label: 10_18_01 18734 18735ACPI CA Core Subsystem: 18736 18737Fixed a problem with the internal object reference count mechanism 18738that occasionally caused premature object deletion. This resolves 18739all of the outstanding problem reports where an object is deleted 18740in the middle of an interpreter evaluation. Although this problem 18741only showed up in rather obscure cases, the solution to the 18742problem involved an adjustment of all reference counts involving 18743objects attached to namespace nodes. 18744 18745Fixed a problem with Field support in the interpreter where 18746writing to an aligned field whose length is an exact multiple (2 18747or greater) of the field access granularity would cause an attempt 18748to write beyond the end of the field. 18749 18750The top level AML opcode execution functions within the 18751interpreter have been renamed with a more meaningful and 18752consistent naming convention. The modules exmonad.c and 18753exdyadic.c were eliminated. New modules are exoparg1.c, 18754exoparg2.c, exoparg3.c, and exoparg6.c. 18755 18756Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18757 18758Fixed a problem where the AML debugger was causing some internal 18759objects to not be deleted during subsystem termination. 18760 18761Fixed a problem with the external AcpiEvaluateObject interface 18762where the subsystem would fault if the named object to be 18763evaluated referred to a constant such as Zero, Ones, etc. 18764 18765Fixed a problem with IndexFields and BankFields where the 18766subsystem would fault if the index, data, or bank registers were 18767not defined in the same scope as the field itself. 18768 18769Added printf format string checking for compilers that support 18770this feature. Corrected more than 50 instances of issues with 18771format specifiers within invocations of ACPI_DEBUG_PRINT 18772throughout the core subsystem code. 18773 18774The ASL "Revision" operator now returns the ACPI support level 18775implemented in the core - the value "2" since the ACPI 2.0 support 18776is more than 50% implemented. 18777 18778Enhanced the output of the AML debugger "dump namespace" command 18779to output in a more human-readable form. 18780 18781Current core subsystem library code sizes are shown below. These 18782 18783are the code and data sizes for the acpica.lib produced by the 18784Microsoft Visual C++ 6.0 compiler, and these values do not include 18785any ACPI driver or OSPM code. The debug version of the code 18786includes the full debug trace mechanism -- leading to a much 18787 18788larger code and data size. Note that these values will vary 18789depending on the efficiency of the compiler and the compiler 18790options used during generation. 18791 18792 Previous Label (09_20_01): 18793 Non-Debug Version: 65K Code, 5K Data, 70K Total 18794 Debug Version: 138K Code, 58K Data, 196K Total 18795 18796 This Label: 18797 18798 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18799 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18800 18801Linux: 18802 18803Implemented a "Bad BIOS Blacklist" to track machines that have 18804known ASL/AML problems. 18805 18806Enhanced the /proc interface for the thermal zone driver and added 18807support for _HOT (the critical suspend trip point). The 'info' 18808file now includes threshold/policy information, and allows setting 18809of _SCP (cooling preference) and _TZP (polling frequency) values 18810to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18811frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18812preference to the passive/quiet mode (if supported by the ASL). 18813 18814Implemented a workaround for a gcc bug that resuted in an OOPs 18815when loading the control method battery driver. 18816 18817 ---------------------------------------- 18818Summary of changes for this label: 09_20_01 18819 18820 ACPI CA Core Subsystem: 18821 18822The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18823modified to allow individual GPE levels to be flagged as wake- 18824enabled (i.e., these GPEs are to remain enabled when the platform 18825sleeps.) 18826 18827The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18828support wake-enabled GPEs. This means that upon entering the 18829sleep state, all GPEs that are not wake-enabled are disabled. 18830When leaving the sleep state, these GPEs are re-enabled. 18831 18832A local double-precision divide/modulo module has been added to 18833enhance portability to OS kernels where a 64-bit math library is 18834not available. The new module is "utmath.c". 18835 18836Several optimizations have been made to reduce the use of CPU 18837stack. Originally over 2K, the maximum stack usage is now below 188382K at 1860 bytes (1.82k) 18839 18840Fixed a problem with the AcpiGetFirmwareTable interface where the 18841root table pointer was not mapped into a logical address properly. 18842 18843Fixed a problem where a NULL pointer was being dereferenced in the 18844interpreter code for the ASL Notify operator. 18845 18846Fixed a problem where the use of the ASL Revision operator 18847returned an error. This operator now returns the current version 18848of the ACPI CA core subsystem. 18849 18850Fixed a problem where objects passed as control method parameters 18851to AcpiEvaluateObject were always deleted at method termination. 18852However, these objects may end up being stored into the namespace 18853by the called method. The object reference count mechanism was 18854applied to these objects instead of a force delete. 18855 18856Fixed a problem where static strings or buffers (contained in the 18857AML code) that are declared as package elements within the ASL 18858code could cause a fault because the interpreter would attempt to 18859delete them. These objects are now marked with the "static 18860object" flag to prevent any attempt to delete them. 18861 18862Implemented an interpreter optimization to use operands directly 18863from the state object instead of extracting the operands to local 18864variables. This reduces stack use and code size, and improves 18865performance. 18866 18867The module exxface.c was eliminated as it was an unnecessary extra 18868layer of code. 18869 18870Current core subsystem library code sizes are shown below. These 18871are the code and data sizes for the acpica.lib produced by the 18872Microsoft Visual C++ 6.0 compiler, and these values do not include 18873any ACPI driver or OSPM code. The debug version of the code 18874includes the full debug trace mechanism -- leading to a much 18875larger code and data size. Note that these values will vary 18876depending on the efficiency of the compiler and the compiler 18877options used during generation. 18878 18879 Non-Debug Version: 65K Code, 5K Data, 70K Total 18880(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18881Total (Previously 195K) 18882 18883Linux: 18884 18885Support for ACPI 2.0 64-bit integers has been added. All ACPI 18886Integer objects are now 64 bits wide 18887 18888All Acpi data types and structures are now in lower case. Only 18889Acpi macros are upper case for differentiation. 18890 18891 Documentation: 18892 18893Changes to the external interfaces as described above. 18894 18895 ---------------------------------------- 18896Summary of changes for this label: 08_31_01 18897 18898 ACPI CA Core Subsystem: 18899 18900A bug with interpreter implementation of the ASL Divide operator 18901was found and fixed. The implicit function return value (not the 18902explicit store operands) was returning the remainder instead of 18903the quotient. This was a longstanding bug and it fixes several 18904known outstanding issues on various platforms. 18905 18906The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18907been further optimized for size. There are 700 invocations of the 18908DEBUG_PRINT macro alone, so each optimization reduces the size of 18909the debug version of the subsystem significantly. 18910 18911A stack trace mechanism has been implemented. The maximum stack 18912usage is about 2K on 32-bit platforms. The debugger command "stat 18913stack" will display the current maximum stack usage. 18914 18915All public symbols and global variables within the subsystem are 18916now prefixed with the string "Acpi". This keeps all of the 18917symbols grouped together in a kernel map, and avoids conflicts 18918with other kernel subsystems. 18919 18920Most of the internal fixed lookup tables have been moved into the 18921code segment via the const operator. 18922 18923Several enhancements have been made to the interpreter to both 18924reduce the code size and improve performance. 18925 18926Current core subsystem library code sizes are shown below. These 18927are the code and data sizes for the acpica.lib produced by the 18928Microsoft Visual C++ 6.0 compiler, and these values do not include 18929any ACPI driver or OSPM code. The debug version of the code 18930includes the full debug trace mechanism which contains over 700 18931invocations of the DEBUG_PRINT macro, 500 function entry macro 18932invocations, and over 900 function exit macro invocations -- 18933leading to a much larger code and data size. Note that these 18934values will vary depending on the efficiency of the compiler and 18935the compiler options used during generation. 18936 18937 Non-Debug Version: 64K Code, 5K Data, 69K Total 18938Debug Version: 137K Code, 58K Data, 195K Total 18939 18940 Linux: 18941 18942Implemented wbinvd() macro, pending a kernel-wide definition. 18943 18944Fixed /proc/acpi/event to handle poll() and short reads. 18945 18946 ASL Compiler, version X2026: 18947 18948Fixed a problem introduced in the previous label where the AML 18949 18950code emitted for package objects produced packages with zero 18951length. 18952 18953 ---------------------------------------- 18954Summary of changes for this label: 08_16_01 18955 18956ACPI CA Core Subsystem: 18957 18958The following ACPI 2.0 ASL operators have been implemented in the 18959AML interpreter (These are already supported by the Intel ASL 18960compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18961ToBuffer. Support for 64-bit AML constants is implemented in the 18962AML parser, debugger, and disassembler. 18963 18964The internal memory tracking mechanism (leak detection code) has 18965been upgraded to reduce the memory overhead (a separate tracking 18966block is no longer allocated for each memory allocation), and now 18967supports all of the internal object caches. 18968 18969The data structures and code for the internal object caches have 18970been coelesced and optimized so that there is a single cache and 18971memory list data structure and a single group of functions that 18972implement generic cache management. This has reduced the code 18973size in both the debug and release versions of the subsystem. 18974 18975The DEBUG_PRINT macro(s) have been optimized for size and replaced 18976by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18977different, because it generates a single call to an internal 18978function. This results in a savings of about 90 bytes per 18979invocation, resulting in an overall code and data savings of about 1898016% in the debug version of the subsystem. 18981 18982 Linux: 18983 18984Fixed C3 disk corruption problems and re-enabled C3 on supporting 18985machines. 18986 18987Integrated low-level sleep code by Patrick Mochel. 18988 18989Further tweaked source code Linuxization. 18990 18991Other minor fixes. 18992 18993 ASL Compiler: 18994 18995Support for ACPI 2.0 variable length packages is fixed/completed. 18996 18997Fixed a problem where the optional length parameter for the ACPI 189982.0 ToString operator. 18999 19000Fixed multiple extraneous error messages when a syntax error is 19001detected within the declaration line of a control method. 19002 19003 ---------------------------------------- 19004Summary of changes for this label: 07_17_01 19005 19006ACPI CA Core Subsystem: 19007 19008Added a new interface named AcpiGetFirmwareTable to obtain any 19009ACPI table via the ACPI signature. The interface can be called at 19010any time during kernel initialization, even before the kernel 19011virtual memory manager is initialized and paging is enabled. This 19012allows kernel subsystems to obtain ACPI tables very early, even 19013before the ACPI CA subsystem is initialized. 19014 19015Fixed a problem where Fields defined with the AnyAcc attribute 19016could be resolved to the incorrect address under the following 19017conditions: 1) the field width is larger than 8 bits and 2) the 19018parent operation region is not defined on a DWORD boundary. 19019 19020Fixed a problem where the interpreter is not being locked during 19021namespace initialization (during execution of the _INI control 19022methods), causing an error when an attempt is made to release it 19023later. 19024 19025ACPI 2.0 support in the AML Interpreter has begun and will be 19026ongoing throughout the rest of this year. In this label, The Mod 19027operator is implemented. 19028 19029Added a new data type to contain full PCI addresses named 19030ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 19031and Function values. 19032 19033 Linux: 19034 19035Enhanced the Linux version of the source code to change most 19036capitalized ACPI type names to lowercase. For example, all 19037instances of ACPI_STATUS are changed to acpi_status. This will 19038result in a large diff, but the change is strictly cosmetic and 19039aligns the CA code closer to the Linux coding standard. 19040 19041OSL Interfaces: 19042 19043The interfaces to the PCI configuration space have been changed to 19044add the PCI Segment number and to split the single 32-bit combined 19045DeviceFunction field into two 16-bit fields. This was 19046accomplished by moving the four values that define an address in 19047PCI configuration space (segment, bus, device, and function) to 19048the new ACPI_PCI_ID structure. 19049 19050The changes to the PCI configuration space interfaces led to a 19051reexamination of the complete set of address space access 19052interfaces for PCI, I/O, and Memory. The previously existing 18 19053interfaces have proven difficult to maintain (any small change 19054must be propagated across at least 6 interfaces) and do not easily 19055allow for future expansion to 64 bits if necessary. Also, on some 19056systems, it would not be appropriate to demultiplex the access 19057width (8, 16, 32,or 64) before calling the OSL if the 19058corresponding native OS interfaces contain a similar access width 19059parameter. For these reasons, the 18 address space interfaces 19060have been replaced by these 6 new ones: 19061 19062AcpiOsReadPciConfiguration 19063AcpiOsWritePciConfiguration 19064AcpiOsReadMemory 19065AcpiOsWriteMemory 19066AcpiOsReadPort 19067AcpiOsWritePort 19068 19069Added a new interface named AcpiOsGetRootPointer to allow the OSL 19070to perform the platform and/or OS-specific actions necessary to 19071obtain the ACPI RSDP table pointer. On IA-32 platforms, this 19072interface will simply call down to the CA core to perform the low- 19073memory search for the table. On IA-64, the RSDP is obtained from 19074EFI. Migrating this interface to the OSL allows the CA core to 19075 19076remain OS and platform independent. 19077 19078Added a new interface named AcpiOsSignal to provide a generic 19079"function code and pointer" interface for various miscellaneous 19080signals and notifications that must be made to the host OS. The 19081first such signals are intended to support the ASL Fatal and 19082Breakpoint operators. In the latter case, the AcpiOsBreakpoint 19083interface has been obsoleted. 19084 19085The definition of the AcpiFormatException interface has been 19086changed to simplify its use. The caller no longer must supply a 19087buffer to the call; A pointer to a const string is now returned 19088directly. This allows the call to be easily used in printf 19089statements, etc. since the caller does not have to manage a local 19090buffer. 19091 19092 19093 ASL Compiler, Version X2025: 19094 19095The ACPI 2.0 Switch/Case/Default operators have been implemented 19096and are fully functional. They will work with all ACPI 1.0 19097interpreters, since the operators are simply translated to If/Else 19098pairs. 19099 19100The ACPI 2.0 ElseIf operator is implemented and will also work 19101with 1.0 interpreters, for the same reason. 19102 19103Implemented support for ACPI 2.0 variable-length packages. These 19104packages have a separate opcode, and their size is determined by 19105the interpreter at run-time. 19106 19107Documentation The ACPI CA Programmer Reference has been updated to 19108reflect the new interfaces and changes to existing interfaces. 19109 19110 ------------------------------------------ 19111Summary of changes for this label: 06_15_01 19112 19113 ACPI CA Core Subsystem: 19114 19115Fixed a problem where a DWORD-accessed field within a Buffer 19116object would get its byte address inadvertently rounded down to 19117the nearest DWORD. Buffers are always Byte-accessible. 19118 19119 ASL Compiler, version X2024: 19120 19121Fixed a problem where the Switch() operator would either fault or 19122hang the compiler. Note however, that the AML code for this ACPI 191232.0 operator is not yet implemented. 19124 19125Compiler uses the new AcpiOsGetTimer interface to obtain compile 19126timings. 19127 19128Implementation of the CreateField operator automatically converts 19129a reference to a named field within a resource descriptor from a 19130byte offset to a bit offset if required. 19131 19132Added some missing named fields from the resource descriptor 19133support. These are the names that are automatically created by the 19134compiler to reference fields within a descriptor. They are only 19135valid at compile time and are not passed through to the AML 19136interpreter. 19137 19138Resource descriptor named fields are now typed as Integers and 19139subject to compile-time typechecking when used in expressions. 19140 19141 ------------------------------------------ 19142Summary of changes for this label: 05_18_01 19143 19144 ACPI CA Core Subsystem: 19145 19146Fixed a couple of problems in the Field support code where bits 19147from adjacent fields could be returned along with the proper field 19148bits. Restructured the field support code to improve performance, 19149readability and maintainability. 19150 19151New DEBUG_PRINTP macro automatically inserts the procedure name 19152into the output, saving hundreds of copies of procedure name 19153strings within the source, shrinking the memory footprint of the 19154debug version of the core subsystem. 19155 19156 Source Code Structure: 19157 19158The source code directory tree was restructured to reflect the 19159current organization of the component architecture. Some files 19160and directories have been moved and/or renamed. 19161 19162 Linux: 19163 19164Fixed leaking kacpidpc processes. 19165 19166Fixed queueing event data even when /proc/acpi/event is not 19167opened. 19168 19169 ASL Compiler, version X2020: 19170 19171Memory allocation performance enhancement - over 24X compile time 19172improvement on large ASL files. Parse nodes and namestring 19173buffers are now allocated from a large internal compiler buffer. 19174 19175The temporary .SRC file is deleted unless the "-s" option is 19176specified 19177 19178The "-d" debug output option now sends all output to the .DBG file 19179instead of the console. 19180 19181"External" second parameter is now optional 19182 19183"ElseIf" syntax now properly allows the predicate 19184 19185Last operand to "Load" now recognized as a Target operand 19186 19187Debug object can now be used anywhere as a normal object. 19188 19189ResourceTemplate now returns an object of type BUFFER 19190 19191EISAID now returns an object of type INTEGER 19192 19193"Index" now works with a STRING operand 19194 19195"LoadTable" now accepts optional parameters 19196 19197"ToString" length parameter is now optional 19198 19199"Interrupt (ResourceType," parse error fixed. 19200 19201"Register" with a user-defined region space parse error fixed 19202 19203Escaped backslash at the end of a string ("\\") scan/parse error 19204fixed 19205 19206"Revision" is now an object of type INTEGER. 19207 19208 19209 19210------------------------------------------ 19211Summary of changes for this label: 05_02_01 19212 19213Linux: 19214 19215/proc/acpi/event now blocks properly. 19216 19217Removed /proc/sys/acpi. You can still dump your DSDT from 19218/proc/acpi/dsdt. 19219 19220 ACPI CA Core Subsystem: 19221 19222Fixed a problem introduced in the previous label where some of the 19223"small" resource descriptor types were not recognized. 19224 19225Improved error messages for the case where an ASL Field is outside 19226the range of the parent operation region. 19227 19228 ASL Compiler, version X2018: 19229 19230 19231Added error detection for ASL Fields that extend beyond the length 19232of the parent operation region (only if the length of the region 19233is known at compile time.) This includes fields that have a 19234minimum access width that is smaller than the parent region, and 19235individual field units that are partially or entirely beyond the 19236extent of the parent. 19237 19238 19239 19240------------------------------------------ 19241Summary of changes for this label: 04_27_01 19242 19243 ACPI CA Core Subsystem: 19244 19245Fixed a problem where the namespace mutex could be released at the 19246wrong time during execution of AcpiRemoveAddressSpaceHandler. 19247 19248Added optional thread ID output for debug traces, to simplify 19249debugging of multiple threads. Added context switch notification 19250when the debug code realizes that a different thread is now 19251executing ACPI code. 19252 19253Some additional external data types have been prefixed with the 19254string "ACPI_" for consistency. This may effect existing code. 19255The data types affected are the external callback typedefs - e.g., 19256 19257WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 19258 19259 Linux: 19260 19261Fixed an issue with the OSL semaphore implementation where a 19262thread was waking up with an error from receiving a SIGCHLD 19263signal. 19264 19265Linux version of ACPI CA now uses the system C library for string 19266manipulation routines instead of a local implementation. 19267 19268Cleaned up comments and removed TBDs. 19269 19270 ASL Compiler, version X2017: 19271 19272Enhanced error detection and reporting for all file I/O 19273operations. 19274 19275 Documentation: 19276 19277Programmer Reference updated to version 1.06. 19278 19279 19280 19281------------------------------------------ 19282Summary of changes for this label: 04_13_01 19283 19284 ACPI CA Core Subsystem: 19285 19286Restructured support for BufferFields and RegionFields. 19287BankFields support is now fully operational. All known 32-bit 19288limitations on field sizes have been removed. Both BufferFields 19289and (Operation) RegionFields are now supported by the same field 19290management code. 19291 19292Resource support now supports QWORD address and IO resources. The 1929316/32/64 bit address structures and the Extended IRQ structure 19294have been changed to properly handle Source Resource strings. 19295 19296A ThreadId of -1 is now used to indicate a "mutex not acquired" 19297condition internally and must never be returned by AcpiOsThreadId. 19298This reserved value was changed from 0 since Unix systems allow a 19299thread ID of 0. 19300 19301Linux: 19302 19303Driver code reorganized to enhance portability 19304 19305Added a kernel configuration option to control ACPI_DEBUG 19306 19307Fixed the EC driver to honor _GLK. 19308 19309ASL Compiler, version X2016: 19310 19311Fixed support for the "FixedHw" keyword. Previously, the FixedHw 19312address space was set to 0, not 0x7f as it should be. 19313 19314 ------------------------------------------ 19315Summary of changes for this label: 03_13_01 19316 19317 ACPI CA Core Subsystem: 19318 19319During ACPI initialization, the _SB_._INI method is now run if 19320present. 19321 19322Notify handler fix - notifies are deferred until the parent method 19323completes execution. This fixes the "mutex already acquired" 19324issue seen occasionally. 19325 19326Part of the "implicit conversion" rules in ACPI 2.0 have been 19327found to cause compatibility problems with existing ASL/AML. The 19328convert "result-to-target-type" implementation has been removed 19329for stores to method Args and Locals. Source operand conversion 19330is still fully implemented. Possible changes to ACPI 2.0 19331specification pending. 19332 19333Fix to AcpiRsCalculatePciRoutingTableLength to return correct 19334length. 19335 19336Fix for compiler warnings for 64-bit compiles. 19337 19338 Linux: 19339 19340/proc output aligned for easier parsing. 19341 19342Release-version compile problem fixed. 19343 19344New kernel configuration options documented in Configure.help. 19345 19346IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 19347context" message. 19348 19349 OSPM: 19350 19351Power resource driver integrated with bus manager. 19352 19353Fixed kernel fault during active cooling for thermal zones. 19354 19355Source Code: 19356 19357The source code tree has been restructured. 19358 19359 19360 19361------------------------------------------ 19362Summary of changes for this label: 03_02_01 19363 19364 Linux OS Services Layer (OSL): 19365 19366Major revision of all Linux-specific code. 19367 19368Modularized all ACPI-specific drivers. 19369 19370Added new thermal zone and power resource drivers. 19371 19372Revamped /proc interface (new functionality is under /proc/acpi). 19373 19374New kernel configuration options. 19375 19376 Linux known issues: 19377 19378New kernel configuration options not documented in Configure.help 19379yet. 19380 19381 19382Module dependencies not currently implemented. If used, they 19383should be loaded in this order: busmgr, power, ec, system, 19384processor, battery, ac_adapter, button, thermal. 19385 19386Modules will not load if CONFIG_MODVERSION is set. 19387 19388IBM 600E - entering S5 may reboot instead of shutting down. 19389 19390IBM 600E - Sleep button may generate "Invalid <NULL> context" 19391message. 19392 19393Some systems may fail with "execution mutex already acquired" 19394message. 19395 19396 ACPI CA Core Subsystem: 19397 19398Added a new OSL Interface, AcpiOsGetThreadId. This was required 19399for the deadlock detection code. Defined to return a non-zero, 32- 19400bit thread ID for the currently executing thread. May be a non- 19401zero constant integer on single-thread systems. 19402 19403Implemented deadlock detection for internal subsystem mutexes. We 19404may add conditional compilation for this code (debug only) later. 19405 19406ASL/AML Mutex object semantics are now fully supported. This 19407includes multiple acquires/releases by owner and support for the 19408 19409Mutex SyncLevel parameter. 19410 19411A new "Force Release" mechanism automatically frees all ASL 19412Mutexes that have been acquired but not released when a thread 19413exits the interpreter. This forces conformance to the ACPI spec 19414("All mutexes must be released when an invocation exits") and 19415prevents deadlocked ASL threads. This mechanism can be expanded 19416(later) to monitor other resource acquisitions if OEM ASL code 19417continues to misbehave (which it will). 19418 19419Several new ACPI exception codes have been added for the Mutex 19420support. 19421 19422Recursive method calls are now allowed and supported (the ACPI 19423spec does in fact allow recursive method calls.) The number of 19424recursive calls is subject to the restrictions imposed by the 19425SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 19426parameter. 19427 19428Implemented support for the SyncLevel parameter for control 19429methods (ACPI 2.0 feature) 19430 19431Fixed a deadlock problem when multiple threads attempted to use 19432the interpreter. 19433 19434Fixed a problem where the string length of a String package 19435element was not always set in a package returned from 19436AcpiEvaluateObject. 19437 19438Fixed a problem where the length of a String package element was 19439not always included in the length of the overall package returned 19440from AcpiEvaluateObject. 19441 19442Added external interfaces (Acpi*) to the ACPI debug memory 19443manager. This manager keeps a list of all outstanding 19444allocations, and can therefore detect memory leaks and attempts to 19445free memory blocks more than once. Useful for code such as the 19446power manager, etc. May not be appropriate for device drivers. 19447Performance with the debug code enabled is slow. 19448 19449The ACPI Global Lock is now an optional hardware element. 19450 19451 ASL Compiler Version X2015: 19452 19453Integrated changes to allow the compiler to be generated on 19454multiple platforms. 19455 19456Linux makefile added to generate the compiler on Linux 19457 19458 Source Code: 19459 19460All platform-specific headers have been moved to their own 19461subdirectory, Include/Platform. 19462 19463New source file added, Interpreter/ammutex.c 19464 19465New header file, Include/acstruct.h 19466 19467 Documentation: 19468 19469The programmer reference has been updated for the following new 19470interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 19471 19472 ------------------------------------------ 19473Summary of changes for this label: 02_08_01 19474 19475Core ACPI CA Subsystem: Fixed a problem where an error was 19476incorrectly returned if the return resource buffer was larger than 19477the actual data (in the resource interfaces). 19478 19479References to named objects within packages are resolved to the 19480 19481full pathname string before packages are returned directly (via 19482the AcpiEvaluateObject interface) or indirectly via the resource 19483interfaces. 19484 19485Linux OS Services Layer (OSL): 19486 19487Improved /proc battery interface. 19488 19489 19490Added C-state debugging output and other miscellaneous fixes. 19491 19492ASL Compiler Version X2014: 19493 19494All defined method arguments can now be used as local variables, 19495including the ones that are not actually passed in as parameters. 19496The compiler tracks initialization of the arguments and issues an 19497exception if they are used without prior assignment (just like 19498locals). 19499 19500The -o option now specifies a filename prefix that is used for all 19501output files, including the AML output file. Otherwise, the 19502default behavior is as follows: 1) the AML goes to the file 19503specified in the DSDT. 2) all other output files use the input 19504source filename as the base. 19505 19506 ------------------------------------------ 19507Summary of changes for this label: 01_25_01 19508 19509Core ACPI CA Subsystem: Restructured the implementation of object 19510store support within the interpreter. This includes support for 19511the Store operator as well as any ASL operators that include a 19512target operand. 19513 19514Partially implemented support for Implicit Result-to-Target 19515conversion. This is when a result object is converted on the fly 19516to the type of an existing target object. Completion of this 19517support is pending further analysis of the ACPI specification 19518concerning this matter. 19519 19520CPU-specific code has been removed from the subsystem (hardware 19521directory). 19522 19523New Power Management Timer functions added 19524 19525Linux OS Services Layer (OSL): Moved system state transition code 19526to the core, fixed it, and modified Linux OSL accordingly. 19527 19528Fixed C2 and C3 latency calculations. 19529 19530 19531We no longer use the compilation date for the version message on 19532initialization, but retrieve the version from AcpiGetSystemInfo(). 19533 19534Incorporated for fix Sony VAIO machines. 19535 19536Documentation: The Programmer Reference has been updated and 19537reformatted. 19538 19539 19540ASL Compiler: Version X2013: Fixed a problem where the line 19541numbering and error reporting could get out of sync in the 19542presence of multiple include files. 19543 19544 ------------------------------------------ 19545Summary of changes for this label: 01_15_01 19546 19547Core ACPI CA Subsystem: 19548 19549Implemented support for type conversions in the execution of the 19550ASL Concatenate operator (The second operand is converted to 19551match the type of the first operand before concatenation.) 19552 19553Support for implicit source operand conversion is partially 19554implemented. The ASL source operand types Integer, Buffer, and 19555String are freely interchangeable for most ASL operators and are 19556converted by the interpreter on the fly as required. Implicit 19557Target operand conversion (where the result is converted to the 19558target type before storing) is not yet implemented. 19559 19560Support for 32-bit and 64-bit BCD integers is implemented. 19561 19562Problem fixed where a field read on an aligned field could cause a 19563read past the end of the field. 19564 19565New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 19566does not return a value, but the caller expects one. (The ASL 19567compiler flags this as a warning.) 19568 19569ASL Compiler: 19570 19571Version X2011: 195721. Static typechecking of all operands is implemented. This 19573prevents the use of invalid objects (such as using a Package where 19574an Integer is required) at compile time instead of at interpreter 19575run-time. 195762. The ASL source line is printed with ALL errors and warnings. 195773. Bug fix for source EOF without final linefeed. 195784. Debug option is split into a parse trace and a namespace trace. 195795. Namespace output option (-n) includes initial values for 19580integers and strings. 195816. Parse-only option added for quick syntax checking. 195827. Compiler checks for duplicate ACPI name declarations 19583 19584Version X2012: 195851. Relaxed typechecking to allow interchangeability between 19586strings, integers, and buffers. These types are now converted by 19587the interpreter at runtime. 195882. Compiler reports time taken by each internal subsystem in the 19589debug output file. 19590 19591 19592 ------------------------------------------ 19593Summary of changes for this label: 12_14_00 19594 19595ASL Compiler: 19596 19597This is the first official release of the compiler. Since the 19598compiler requires elements of the Core Subsystem, this label 19599synchronizes everything. 19600 19601------------------------------------------ 19602Summary of changes for this label: 12_08_00 19603 19604 19605Fixed a problem where named references within the ASL definition 19606of both OperationRegions and CreateXXXFields did not work 19607properly. The symptom was an AE_AML_OPERAND_TYPE during 19608initialization of the region/field. This is similar (but not 19609related internally) to the problem that was fixed in the last 19610label. 19611 19612Implemented both 32-bit and 64-bit support for the BCD ASL 19613functions ToBCD and FromBCD. 19614 19615Updated all legal headers to include "2000" in the copyright 19616years. 19617 19618 ------------------------------------------ 19619Summary of changes for this label: 12_01_00 19620 19621Fixed a problem where method invocations within the ASL definition 19622of both OperationRegions and CreateXXXFields did not work 19623properly. The symptom was an AE_AML_OPERAND_TYPE during 19624initialization of the region/field: 19625 19626 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19627[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19628(0x3005) 19629 19630Fixed a problem where operators with more than one nested 19631subexpression would fail. The symptoms were varied, by mostly 19632AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19633problem that has gone unnoticed until now. 19634 19635 Subtract (Add (1,2), Multiply (3,4)) 19636 19637Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19638previous build (The prefix part of a relative path was handled 19639incorrectly). 19640 19641Fixed a problem where Operation Region initialization failed if 19642the operation region name was a "namepath" instead of a simple 19643"nameseg". Symptom was an AE_NO_OPERAND error. 19644 19645Fixed a problem where an assignment to a local variable via the 19646indirect RefOf mechanism only worked for the first such 19647assignment. Subsequent assignments were ignored. 19648 19649 ------------------------------------------ 19650Summary of changes for this label: 11_15_00 19651 19652ACPI 2.0 table support with backwards support for ACPI 1.0 and the 196530.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19654the AML interpreter does NOT have support for the new 2.0 ASL 19655grammar terms at this time. 19656 19657All ACPI hardware access is via the GAS structures in the ACPI 2.0 19658FADT. 19659 19660All physical memory addresses across all platforms are now 64 bits 19661wide. Logical address width remains dependent on the platform 19662(i.e., "void *"). 19663 19664AcpiOsMapMemory interface changed to a 64-bit physical address. 19665 19666The AML interpreter integer size is now 64 bits, as per the ACPI 196672.0 specification. 19668 19669For backwards compatibility with ACPI 1.0, ACPI tables with a 19670revision number less than 2 use 32-bit integers only. 19671 19672Fixed a problem where the evaluation of OpRegion operands did not 19673always resolve them to numbers properly. 19674 19675------------------------------------------ 19676Summary of changes for this label: 10_20_00 19677 19678Fix for CBN_._STA issue. This fix will allow correct access to 19679CBN_ OpRegions when the _STA returns 0x8. 19680 19681Support to convert ACPI constants (Ones, Zeros, One) to actual 19682values before a package object is returned 19683 19684Fix for method call as predicate to if/while construct causing 19685incorrect if/while behavior 19686 19687Fix for Else block package lengths sometimes calculated wrong (if 19688block > 63 bytes) 19689 19690Fix for Processor object length field, was always zero 19691 19692Table load abort if FACP sanity check fails 19693 19694Fix for problem with Scope(name) if name already exists 19695 19696Warning emitted if a named object referenced cannot be found 19697(resolved) during method execution. 19698 19699 19700 19701 19702 19703------------------------------------------ 19704Summary of changes for this label: 9_29_00 19705 19706New table initialization interfaces: AcpiInitializeSubsystem no 19707longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19708necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19709>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19710AcpiLoadTables 19711 19712Note: These interface changes require changes to all existing OSDs 19713 19714The PCI_Config default address space handler is always installed 19715at the root namespace object. 19716 19717------------------------------------------- 19718Summary of changes for this label: 09_15_00 19719 19720The new initialization architecture is implemented. New 19721interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19722AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19723 19724(Namespace is automatically loaded when a table is loaded) 19725 19726The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1972752 bytes to 32 bytes. There is usually one of these for every 19728namespace object, so the memory savings is significant. 19729 19730Implemented just-in-time evaluation of the CreateField operators. 19731 19732Bug fixes for IA-64 support have been integrated. 19733 19734Additional code review comments have been implemented 19735 19736The so-called "third pass parse" has been replaced by a final walk 19737through the namespace to initialize all operation regions (address 19738spaces) and fields that have not yet been initialized during the 19739execution of the various _INI and REG methods. 19740 19741New file - namespace/nsinit.c 19742 19743------------------------------------------- 19744Summary of changes for this label: 09_01_00 19745 19746Namespace manager data structures have been reworked to change the 19747primary object from a table to a single object. This has 19748resulted in dynamic memory savings of 3X within the namespace and 197492X overall in the ACPI CA subsystem. 19750 19751Fixed problem where the call to AcpiEvFindPciRootBuses was 19752inadvertently left commented out. 19753 19754Reduced the warning count when generating the source with the GCC 19755compiler. 19756 19757Revision numbers added to each module header showing the 19758SourceSafe version of the file. Please refer to this version 19759number when giving us feedback or comments on individual modules. 19760 19761The main object types within the subsystem have been renamed to 19762clarify their purpose: 19763 19764ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19765ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19766ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19767 19768NOTE: no changes to the initialization sequence are included in 19769this label. 19770 19771------------------------------------------- 19772Summary of changes for this label: 08_23_00 19773 19774Fixed problem where TerminateControlMethod was being called 19775multiple times per method 19776 19777Fixed debugger problem where single stepping caused a semaphore to 19778be oversignalled 19779 19780Improved performance through additional parse object caching - 19781added ACPI_EXTENDED_OP type 19782 19783------------------------------------------- 19784Summary of changes for this label: 08_10_00 19785 19786Parser/Interpreter integration: Eliminated the creation of 19787complete parse trees for ACPI tables and control methods. 19788Instead, parse subtrees are created and then deleted as soon as 19789they are processed (Either entered into the namespace or executed 19790by the interpreter). This reduces the use of dynamic kernel 19791memory significantly. (about 10X) 19792 19793Exception codes broken into classes and renumbered. Be sure to 19794recompile all code that includes acexcep.h. Hopefully we won't 19795have to renumber the codes again now that they are split into 19796classes (environment, programmer, AML code, ACPI table, and 19797internal). 19798 19799Fixed some additional alignment issues in the Resource Manager 19800subcomponent 19801 19802Implemented semaphore tracking in the AcpiExec utility, and fixed 19803several places where mutexes/semaphores were being unlocked 19804without a corresponding lock operation. There are no known 19805semaphore or mutex "leaks" at this time. 19806 19807Fixed the case where an ASL Return operator is used to return an 19808unnamed package. 19809 19810------------------------------------------- 19811Summary of changes for this label: 07_28_00 19812 19813Fixed a problem with the way addresses were calculated in 19814AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19815manifested itself when a Field was created with WordAccess or 19816DwordAccess, but the field unit defined within the Field was less 19817 19818than a Word or Dword. 19819 19820Fixed a problem in AmlDumpOperands() module's loop to pull 19821operands off of the operand stack to display information. The 19822problem manifested itself as a TLB error on 64-bit systems when 19823accessing an operand stack with two or more operands. 19824 19825Fixed a problem with the PCI configuration space handlers where 19826context was getting confused between accesses. This required a 19827change to the generic address space handler and address space 19828setup definitions. Handlers now get both a global handler context 19829(this is the one passed in by the user when executing 19830AcpiInstallAddressSpaceHandler() and a specific region context 19831that is unique to each region (For example, the _ADR, _SEG and 19832_BBN values associated with a specific region). The generic 19833function definitions have changed to the following: 19834 19835typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19836UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19837*HandlerContext, // This used to be void *Context void 19838*RegionContext); // This is an additional parameter 19839 19840typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19841RegionHandle, UINT32 Function, void *HandlerContext, void 19842**RegionContext); // This used to be **ReturnContext 19843 19844------------------------------------------- 19845Summary of changes for this label: 07_21_00 19846 19847Major file consolidation and rename. All files within the 19848interpreter have been renamed as well as most header files. This 19849was done to prevent collisions with existing files in the host 19850OSs -- filenames such as "config.h" and "global.h" seem to be 19851quite common. The VC project files have been updated. All 19852makefiles will require modification. 19853 19854The parser/interpreter integration continues in Phase 5 with the 19855implementation of a complete 2-pass parse (the AML is parsed 19856twice) for each table; This avoids the construction of a huge 19857parse tree and therefore reduces the amount of dynamic memory 19858required by the subsystem. Greater use of the parse object cache 19859means that performance is unaffected. 19860 19861Many comments from the two code reviews have been rolled in. 19862 19863The 64-bit alignment support is complete. 19864 19865------------------------------------------- 19866Summary of changes for this label: 06_30_00 19867 19868With a nod and a tip of the hat to the technology of yesteryear, 19869we've added support in the source code for 80 column output 19870devices. The code is now mostly constrained to 80 columns or 19871less to support environments and editors that 1) cannot display 19872or print more than 80 characters on a single line, and 2) cannot 19873disable line wrapping. 19874 19875A major restructuring of the namespace data structure has been 19876completed. The result is 1) cleaner and more 19877understandable/maintainable code, and 2) a significant reduction 19878in the dynamic memory requirement for each named ACPI object 19879(almost half). 19880 19881------------------------------------------- 19882Summary of changes for this label: 06_23_00 19883 19884Linux support has been added. In order to obtain approval to get 19885the ACPI CA subsystem into the Linux kernel, we've had to make 19886quite a few changes to the base subsystem that will affect all 19887users (all the changes are generic and OS- independent). The 19888effects of these global changes have been somewhat far reaching. 19889Files have been merged and/or renamed and interfaces have been 19890renamed. The major changes are described below. 19891 19892Osd* interfaces renamed to AcpiOs* to eliminate namespace 19893pollution/confusion within our target kernels. All OSD 19894interfaces must be modified to match the new naming convention. 19895 19896Files merged across the subsystem. A number of the smaller source 19897and header files have been merged to reduce the file count and 19898increase the density of the existing files. There are too many 19899to list here. In general, makefiles that call out individual 19900files will require rebuilding. 19901 19902Interpreter files renamed. All interpreter files now have the 19903prefix am* instead of ie* and is*. 19904 19905Header files renamed: The acapi.h file is now acpixf.h. The 19906acpiosd.h file is now acpiosxf.h. We are removing references to 19907the acronym "API" since it is somewhat windowsy. The new name is 19908"external interface" or xface or xf in the filenames.j 19909 19910 19911All manifest constants have been forced to upper case (some were 19912mixed case.) Also, the string "ACPI_" has been prepended to many 19913(not all) of the constants, typedefs, and structs. 19914 19915The globals "DebugLevel" and "DebugLayer" have been renamed 19916"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19917 19918All other globals within the subsystem are now prefixed with 19919"AcpiGbl_" Internal procedures within the subsystem are now 19920prefixed with "Acpi" (with only a few exceptions). The original 19921two-letter abbreviation for the subcomponent remains after "Acpi" 19922- for example, CmCallocate became AcpiCmCallocate. 19923 19924Added a source code translation/conversion utility. Used to 19925generate the Linux source code, it can be modified to generate 19926other types of source as well. Can also be used to cleanup 19927existing source by removing extraneous spaces and blank lines. 19928Found in tools/acpisrc/* 19929 19930OsdUnMapMemory was renamed to OsdUnmapMemory and then 19931AcpiOsUnmapMemory. (UnMap became Unmap). 19932 19933A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19934When set to one, this indicates that the caller wants to use the 19935 19936semaphore as a mutex, not a counting semaphore. ACPI CA uses 19937both types. However, implementers of this call may want to use 19938different OS primitives depending on the type of semaphore 19939requested. For example, some operating systems provide separate 19940 19941"mutex" and "semaphore" interfaces - where the mutex interface is 19942much faster because it doesn't have all the overhead of a full 19943semaphore implementation. 19944 19945Fixed a deadlock problem where a method that accesses the PCI 19946address space can block forever if it is the first access to the 19947space. 19948 19949------------------------------------------- 19950Summary of changes for this label: 06_02_00 19951 19952Support for environments that cannot handle unaligned data 19953accesses (e.g. firmware and OS environments devoid of alignment 19954handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19955been added (via configurable macros) in these three areas: - 19956Transfer of data from the raw AML byte stream is done via byte 19957moves instead of word/dword/qword moves. - External objects are 19958aligned within the user buffer, including package elements (sub- 19959objects). - Conversion of name strings to UINT32 Acpi Names is now 19960done byte-wise. 19961 19962The Store operator was modified to mimic Microsoft's 19963implementation when storing to a Buffer Field. 19964 19965Added a check of the BM_STS bit before entering C3. 19966 19967The methods subdirectory has been obsoleted and removed. A new 19968file, cmeval.c subsumes the functionality. 19969 19970A 16-bit (DOS) version of AcpiExec has been developed. The 19971makefile is under the acpiexec directory. 19972