1---------------------------------------- 24 April 2025. Summary of changes for version 20250404: 3 4Major changes: 5 6Update all the copyright continuation year to 2025 in the license header of all files 7 8Add complete support for 3 new ACPI tables ? MRRM,ERDT and RIMT (Tony Luck & V L Sunil) 9 10Add a license file to the project which is a great improvement (Dionna Glaze) 11 12Update DMAR and TPM2 tables to support their latest versions (Alexey Neyman and Stuart Yoder) 13 14A few fixes including local cache allocation, FFixedHW Region, attribute packing, string vs. non-string char array, vsnprintf()etc. along with some comments, spelling errors and code alignment (multiple awesome contributors) 15 16 17---------------------------------------- 1812 December 2024. Summary of changes for version 20241212: 19 20Major changes: 21 22Fix 2 critical CVE addressing memory leaks - Seunghun Han 23 24EINJ V2 updates ? Zaid Alali (Ampere Computing) 25 26CDAT updates ? Ira Weiny (Intel Corporation) 27 28Fix mutex handling, don?t release ones that were never acquired ? Daniil Tatianin 29 30Experiment with new tag name format Ryyyy_mm_dd to solve chronological sorting problems 31 32 33---------------------------------------- 3427 September 2024. Summary of changes for version 20240927: 35 36Major changes: 37 38Fix the acpixf.h file which caused issues for the last release (before this) 20240827 39 40Fix the pointer offset for the SLIC table 41 42Verify the local environment and GitHub commits are all in sync which was a problem with the second from last release (before this)20240322 (aka 20240323 � date issue) 43 44 45 46---------------------------------------- 4727 August 2024. Summary of changes for version 20240827: 48 49Major changes: 50 51Fix the PHAT table working: ensure that the PHAT firmware health record offset works correctly, fix various sub-table offsets, prevent segmentation faults when encountering invalid device paths. Contributed by: Armin Wolf <W_Armin@gmx.de> 52 53Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin <99danilt@gmail.com> 54 55Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone (Fedora) <ahs3@ahs3.net> 56 57Add support for QWordPCC and DWordPCC by Jose Marinho (ARM) 58 59Fix the integer to hex string conversions by Armin Wolf 60 61Detecting FACS in reduced HW mode and allowing setting waking vector thereby waking up from S3 state 62 63Fixing issues with crossing page boundaries when mapping operation regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD) 64 65Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables 66 67Fix multiple issues with table parsing, compilation and disassembly by Myra DeMere (Google) 68 69Allow for more flexibility in _DSM usage. 70 71 72---------------------------------------- 7322 March 2024. Summary of changes for version 20240322: 74 75Major changes: 76 77Update all the license header year from 2023 to 2024. 78 79Fix table argument ordering to work properly with iasl. 80 81Get rid of the annoying repeated warning types in MSVC and Windows. 82 83Fix a test in ASLTS with edge case failure. 84 85Fix a couple of issues with how GPEs are counted and enabled. 86 87Add new tables for various architectures/OS, mainly RISC-V and also update many more. 88 89Add an option to either make the output deterministic or non-deterministic. 90 91Remove redundant checks, duplicated code and fix spellings in various files. 92 93Fix flex arrays for C++ compilers and also make ACPICA overall more compatible with different compilers which throw warnings related to memory sanitization etc. 94 95 96---------------------------------------- 9728 June 2023. Summary of changes for version 20230628: 98 990) Global changes: 100 101Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: ?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag to Timer (since there are no runtime arguments). Reported by: Abhishek Mainkar abmainkar@nvidia.com. 102 103Added a define for size of acpi_srat_generic_affinity DeviceHandle. Replaced a magic number with a define. The Linux kernel code will utilize this. Reported by Dave Jiang dave.jiang@intel.com. 104 105Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5. 106 1071) ACPICA kernel-resident subsystem: 108 109Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com. 110 111Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang@intel.com. 112 1131) ACPICA kernel-resident subsystem: 114 115Fix GCC 12 dangling-pointer warning. We're storing a persistent pointer to an ephemeral local variable which technically is a dangling pointer and the compiler is correct. However, since we never indirect the pointer, this is a safe operation and we can suppress the warning. 116 117Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly so we must include it explicitly or we won't have the type definition for uintptr_t. 118 1192) iASL Compiler/Disassembler and ACPICA tools:. 120 121IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table is updated with new nodes. Add compile and dump functionality for these new structures. 122 123AcpiExec: Added a new command, ?interrupt?. The Interrupt command simulates an interrupt with a IntID (GSIV) equal to the first argument of the call/invocation. The acpiexec code simulates the behavior by OSPM: execute the _EVT method of the GED device associated with that IntID. Submitted by: Jose Marinho jose.marinho@arm.com. 124 125AcpiExec: Detect GED device and keep track of _EVT. The GED device is described by a _HID of ACPI0013. This code traverses the namespace identifying all GED devices. For each GED device in the namespace we record the Interrupt object and the _EVT method. This information is used when an interrupt is simulated via the ?interrupt? command. Submitted by: Jose Marinho jose.marinho@arm.com. 126---------------------------------------- 12731 March 2023. Summary of changes for version 20230331: 128 129This release is available at https://acpica.org/downloads 130 1310) Global changes: 132 133 134Update all copyright notices to the year 2023. This effects all source 135modules, as well as utility signons. 136Add OS-specific support for Zephyr RTOS. 137Fix miscellaneous code that accesses various objects. 138Remove some dead code. 139Add C ?Flexible Array? support. 140Add support for 64 bit LoongArch compilation. 141Add first batch of RISC-V related definitions. 142Performed a global automated update to remove tabs, fix indentation 143issues, etc. 144 1451) ACPICA kernel-resident subsystem: 146 147hwvalid: Drop port I/O validation. 148 1492) ACPICA tools and utilities: 150 151iASL: Added full macro support in the preprocessor. Example: 152#define ABCD(a,b,c,d) a+b+c-d 153 154Known macro support limitations (at this time): 155 No support for multi-line #define macros (backslash continuation 156lines) 157 No support for the C-style ternary operator 158 No support for the stringizing operator (#) 159 No support for the concatenation (token pasting) operator (##) 160 No support for variable number of macro arguments 161 162Add support for AMD Secure Processor Table (ASPT) version 1. 163Add support for Arm's MPAM ACPI table version 2. 164ACPI 6.5: MADT: add support for trace buffer extension in GICC. 165Headers: Delete bogus NodeArray array of pointers from AEST table. 166PHAT table support is still ongoing. 167 168 169---------------------------------------- 17020 October 2022. Summary of changes for version 20221020: 171 172This release is available at https://acpica.org/downloads 173 1740) Global changes: 175 176Allow disabling of -Werror. For distro maintainers having `-Werror` can 177delay update of GCC. Since every GCC release might add new warnings that 178were not yet captured, it might break the build of packages. With this 179change, distros can now build with `NOWERROR=TRUE` instead of patching 180either the errors or the makefiles. The default behavior keeps on using 181`-Werror`. 182 1831) ACPICA kernel-resident subsystem: 184 185Added support for FFH Operation Region special context data. FFH(Fixed 186Function Hardware) Opregion is approved to be added in ACPI 6.5 via code 187first approach[1]. It requires special context data similar to GPIO and 188Generic Serial Bus as it needs to know platform specific offset and 189length. 190 191Reverted this commit "executer/exsystem: Warn about sleeps greater than 19210 ms." Due to user complaints about valid sleeps greater than 10ms seen 193in some existing machines -- generating lots of warnings. 194 195Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that 196EBDA region must be at least 1KiB in size. Because this is not 197guaranteed, it might happen that while scanning the memory for RSDP 198pointer, the kernel touches memory above 640KiB. This is unwanted as the 199VGA memory range may not be decoded or even present when running under 200virtualization. 201 202Check that EBDA pointer is in valid memory. If the memory at 0x40e is 203uninitialized, the retrieved physical memory address of EBDA may be 204beyond the low memory (i.e. above 640K). If so, the kernel may 205unintentionally access the VGA memory, that might not be decoded or even 206present in case of virtualization. 207 2082) iASL Compiler/Disassembler and ACPICA tools: 209 210Completed the existing partial support for the CDAT "table". Although 211this isn't technically an ACPI table (It doesn't go into the XSDT), it is 212possible to support this table in the Data Table compiler. Created one 213new file, "utilities/utcksum.c", used to centralize checksum 214generation/validation into one location. Includes changes to makefiles 215and MSVC project files. 216 217Updated support for the IORT table - update to version E.e 218 219Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table 220 221iASL: Added CCEL table to both compiler/disassembler. 222 223iASL: NHLT table: Fixed compilation of optional undocumented fields 224 225iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 226("iASL: Add CCEL table to both compiler/disassembler") introduced the 227iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL 228table member reference. To fix it, change ACPI_TDEL_OFFSET with 229ACPI_CCEL_OFFSET. 230 231---------------------------------------- 23231 March 2022. Summary of changes for version 20220331: 233 2340) Global changes: 235 236Update all copyright notices to the year 2022. This effects all source 237modules, as well as utility signons. 238 239 2401) ACPICA kernel-resident subsystem: 241 242For the ASL Sleep() operator, issue a warning if the sleep value is 243greater than 10 Milliseconds. Quick boottime is important, so warn about 244sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 245ms, so excessive delays should be called out. 10 ms is chosen randomly, 246but three of such delays would already make up ten percent of the 247boottime. 248 249Namespace: Avoid attempting to walk the Namespace if the Namespace does 250not exist. 251 252AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the 253LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a 254pass/fail integer. Now load returns a pass/fail integer, as well as 255storing the return value in an optional 2nd argument. 256 257Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid 258"performing pointer subtraction with a null pointer has undefined 259behavior" compiler warnings, use uintptr_t and offsetof() that are always 260available during Linux kernel builds to define ACPI_UINTPTR_T and the 261ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code 262in the Linux kernel. 263 264Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted 265by superm1. 266 267executer/exsystem: Inform users about ACPI spec violation for the Stall() 268operator. Values greater than 100 microseconds violate the ACPI 269specification, so warn users about it. From the ACPI Specification 270version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: 271> The implementation of Stall is OS-specific, but must not relinquish 272> control of the processor. Because of this, delays longer than 100 273> microseconds must use Sleep instead of Stall. 274 275 2762) iASL Compiler/Disassembler and ACPICA tools: 277 278Data Table Compiler/Disassembler: Add support for the APMT table - ARM 279Performance Monitoring Unit table. Submitted by @bwicaksononv. 280 281Data Table Compiler/Disassembler: For MADT, add support for the OEM- 282defined subtables (Types 0x80-0x7F). 283 284Data Table Compiler: Fixed a problem with support for the SDEV table, 285where a subtable Length was not computed correctly. 286 287Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT 288Acpi table support. 289 290Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and 291add template. Submitted by MasterDrogo. 292 293Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: 294iASL/NHLT: Rename linux specific structures to DeviceInfo to improve 295readability of the code. 296iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. 297Undocumented bytes at the end of Endpoint Descriptor can be present 298independently of Linux-specific structures. Their size can also vary. 299iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 300bytes of size and then an amount of bytes specified by size. All of the 301terminators that I've seen had a size equal to 4, but theoretically it 302can vary. 303 304iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C). 305 306iASL: Remove a remark due to excessive output. Removed a remark for 307duplicate Offset() operators, due to a user complaint. 308 309---------------------------------------- 31017 December 2021. Summary of changes for version 20211217: 311 3121) ACPICA kernel-resident subsystem: 313 314Hardware: Do not flush CPU cache when entering S4 and S5. According to 315ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to 316S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of 317the sleep state. Blind cache flush on entering S5 causes problems for 318TDX. 319 320Avoid subobject buffer overflow when validating RSDP signature. Since the 321Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to 322it is only to a 4-char array, and so trying to read past the 4th 323character, as will be done when it is an RSDP, reads beyond the bounds of 324the accessed member. Contributed by jrtc27. 325 326Add support for PCC Opregion special context data. PCC Opregion added in 327ACPIC 6.3 requires special context data similar to GPIO and Generic 328Serial Bus as it needs to know the internal PCC buffer and its length as 329well as the PCC channel index when the opregion handler is being executed 330by the OSPM. Adds support for the special context data needed by PCC 331Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com> 332 3332) iASL Compiler/Disassembler and ACPICA tools: 334 335iASL: Completed compiler support for the NHLT ACPI table. 336 337iASL/NHLT table: Fixed a reported problem where a fault would occur 338during disassembly of a "Linux-Specific" section if the "Specific Data" 339part was not present. 340 341iASL: Added full support (compiler and disassembler) for the AGDI ACPI 342table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>. 343 344iASL: Added full support for the TDEL ACPI table. 345 346iASL table compiler: FADT support updates: 3471) Allow the 32-bit DSDT address to be zero. 3482) Issue error if both the 32-bit and 64-bit DSDT addresses are zero. 349 350iASL: Fix unaligned accesses to local cache allocations. Contributed by 351jrtc27. 352 353iASL: Open binary input files in binary mode, not text mode Affects 354binary input AML files, as well as binary data table files, for 355disassembly. 356 357---------------------------------------- 35830 September 2021. Summary of changes for version 20210930: 359 360This release is available at https://acpica.org/downloads 361 3621) ACPICA kernel-resident subsystem: 363 364Hardware: Avoid evaluating methods too early during system resume. During 365wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called 366and it tries to get memory from the OS in order to evaluate a control 367method, but if KFENCE is enabled in the Linux kernel, the memory 368allocation attempt causes an IRQ work to be queued and a self-IPI to be 369sent to the CPU running the code which requires the memory controller to 370be ready, so if that happens too early in the wakeup path, it doesn't 371work. 372 373Prevent that from taking place by calling AcpiGetSleepTypeData() for S0 374upfront, when preparing to enter a given sleep state, and saving the data 375obtained by it for later use during system wakeup. 376 377Added a new _OSI string, "Windows 2020". Posted by superm1. 378 3792) iASL Compiler/Disassembler and ACPICA tools: 380 381iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS 382objects: 383New/latest rules: Under a Device Object: 384 1) If _PRS is present, must have _CRS and _SRS 385 2) If _SRS is present, must have _PRS (_PRS requires _CRS and 386_SRS) 387 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS 388requires _CRS and _SRS) 389 4) If _SRS is present, probably should have a _DIS (Remark only) 390 391iASL table disassembler: Added disassembly support for the NHLT ACPI 392table. Note: support for Vendor-defined microphone arrays and SNR 393extensions are not supported at this time -- mostly due to a lack of 394example tables. Actual compiler support for NHLT is forthcoming. 395 396Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It 397uses the same subtable structure as the existing Generic Initiator 398Affinity type. 399 400Added the flag for online capable in the MADT, introduced in ACPI 6.3. 401Posted by superm1. 402 4033) ACPICA documentation: Updated the legal info (that appears at the 404start of the Documents) to clarify distribution rights that are granted. 405 406 407---------------------------------------- 40830 July 2021. Summary of changes for version 20210730: 409 410This release is available at https://acpica.org/downloads 411 4121) ACPICA kernel-resident subsystem: 413 4142) iASL Compiler/Disassembler and ACPICA tools: 415 416iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). 417 Under the Device Object: 418 1) If _DIS is present, must have a _CRS and _SRS 419 2) If _PRS is present, must have a _CRS, _DIS, and _SRS 420 3) If _SRS is present, must have a _CRS and _DIS 421A warning will be issued for each of these cases. 422Note: For existing ASL/projects, these warnings may be disabled by 423specifying this on the command line: 424"-vw 3141" 425 426iASL Table Disassembler/Table compiler: Fix for WPBT table with no 427command-line arguments. Handle the case where the Command-line 428Arguments table field does not exist (zero). 429 430Headers: Add new DBG2 Serial Port Subtypes 431The Microsoft Debug Port Table 2 (DBG2) specification revision 432September 21, 2020 comprises additional Serial Port Subtypes [1]. 433Reflect that in the actbl1.h header file. Submitted by: 434semihalf-wojtas-marcin 435 436iASL: Add full support for the AEST table (data compiler) 437Includes support in the table compiler and the disassembler. 438 439Add PRMT module header to facilitate parsing. 440This structure is used in to parse PRMT in other Operating Systems 441that relies on using subtable headers in order to parse ACPI tables. 442Although the PRMT doesn't have "subtables" it has a list of module 443information structures that act as subtables. 444 445iASL: Table disassembler: Add missing strings to decode subtable types. 446Includes the MADT and CEDT tables. 447 448 449---------------------------------------- 45004 June 2021. Summary of changes for version 20210604: 451 4521) ACPICA kernel-resident subsystem: 453 454Cleaned up (delete) the context mutex during local address handler object 455deletion. 456 457Fixed a memory leak caused by the _CID repair function. 458 459Added support for PlatformRtMechanism OperationRegion handler. Adds a new 460utility function, AcpiUtConvertUuidToString. Writing a buffer to a 461PlatformRtMechanism fieldunit invokes a bidirectional transaction. The 462input buffer contains 26 bytes containing 9 bytes of status, a command 463byte and a 16-byte UUID. This change will simply pass this incoming 464buffer to a handler registered by the OS. 465 4662) iASL Compiler/Disassembler and ACPICA tools: 467 468Added full support for the PRMT ACPI table (Platform Runtime Mechanism 469Table). Includes support in the iASL compiler, the disassembler, and the 470template generator. 471 472Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. 473 474Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI 475table. 476 477Added full support for the SVKL (Storage Volume Key Location Table) ACPI 478table. Header file support from Kuppuswamy Sathyanarayanan 479<sathyanarayanan.kuppuswamy@linux.intel.com>. 480 481Completed full support for the IVRS (I/O Virtualization Reporting 482Structure) ACPI table. Added compiler support for IVRS, updated 483disassembler support. Adds a new utility, UtIsIdInteger, to determine if 484a HID/CID is an integer or a string. 485 486Headers: Added more structs to the CEDT table: CXL fixed memory window 487structure. 488 489ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. 490 491---------------------------------------- 49231 March 2021. Summary of changes for version 20210331: 493 494This release is available at https://acpica.org/downloads, and includes 495all ACPI 6.4 support 496 4971) ACPICA kernel-resident subsystem: 498ACPI 6.4: iASL: deprecate DDBHandleObj keyword 499Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 500allocating an object using kmalloc(), but then frees it 501using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 502Fixed a race condition in generic serial bus operation region handler. 503Fixed by Hans de Goede. 504 5052) iASL Compiler/Disassembler and ACPICA tools: 506 507ACPI 6.4: NFIT: add Location Cookie field 508ACPI 6.4: HMAT: add new fields/flags 509ACPI 6.4: Add new flags in SRAT 510ACPI 6.4: add SDEV secure access components 511ACPI 6.4: add Csi2Bus resource template 512ACPI 6.4: add support for PHAT table 513ACPI 6.4: add support for PMTT table 514Add disassembly support for the IVRS table. Compilation of the table is 515not yet complete. 516Fixed a potential infinite loop due to type mismatch. The for-loop is 517using a UINT8 counter and comparing the upper 518limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 519the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 520will wrap around to zero and the loop will never exit. I suspect 521the AslGbl_ExpectedMessagesIndex is never that high, but fixing 522this does future proof the code and cleans up static analysis 523warnings.Colin King. 524iASL/TableCompiler: update it with IORT table E.b revision changes. From 525shamiali2008. 526iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 527off-by: Jean-Philippe Brucker. 528iASL/TableCompiler: Add compilation support for CEDT table. Also, update 529the CEDT template. 530 531---------------------------------------- 53205 January 2021. Summary of changes for version 20210105: 533 534This release is available at https://acpica.org/downloads 535 536 5371) ACPICA kernel-resident subsystem: 538 539Updated all copyrights to 2021. This affects all ACPICA source code 540modules. 541 5422) iASL Compiler/Disassembler and ACPICA tools: 543 544ASL test suite (ASLTS): Updated all copyrights to 2021. 545 546Tools and utilities: Updated all signon copyrights to 2021. 547 548iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 549MTMR. Al Stone. 550 551 552---------------------------------------- 55317 December 2020. Summary of changes for version 20201217: 554 555This release is available at https://acpica.org/downloads 556 557 5581) ACPICA kernel-resident subsystem: 559 560Note: The implementation of ACPI 6.4 is underway, and is expected to be 561mostly finished next month, when ACPI 6.4 is released. 562 563From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 564several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 565enable this. 566 567AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 568These included a few casts, as well as a null pointer check. 569 570Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 571implicit fallthrough, as well as __attribute__((__fallthrough__)) and 572comments to explicitly denote that cases of fallthrough were intentional. 573Clang also supports this warning and statement attribute, but not the 574comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 575of GCC. With assistance from @nickdesaulniers. 576 5772) iASL Compiler/Disassembler and ACPICA tools: 578 579Added improvement to method call analysis by saving the return type and 580relaxing certain cases of type checking. 581 582iASL Table Compiler: Improved info messages. Added a message to the -T 583option for when the default template (DSDT) is used. 584Also added a note for when multiple SSDTs are created with a DSDT that 585the SSDTs are created in the same file as the DSDT. 586 587 588---------------------------------------- 589 59013 November 2020. Summary of changes for version 20201113: 591 592This release is available at https://acpica.org/downloads 593 594 5951) ACPICA kernel-resident subsystem: 596 597Interpreter: fixed a memory leak by using use existing buffer in _HID 598repair. There was a memory leak that occurred when a _CID object is 599defined as a package containing string objects. When _CID is checked for 600any possible repairs, it calls a helper function to repair _HID (because 601_CID basically contains multiple _HID entries). The _HID repair function 602assumes that string objects are standalone objects that are not contained 603inside of any packages. The _HID repair function replaced the string 604object with a brand new object and attempted to delete the old object by 605decrementing the reference count of the old object. Strings inside of 606packages have a reference count of 2 so the _HID repair function leaves 607this object in a dangling state and causes a memory leak. Instead of 608allocating a brand new object and removing the old object, use the 609existing object when repairing the _HID object. 610 611Added function trace macros to improve namespace debugging. The namespace 612repair mechanism does not have function tracing macros. Add several trace 613macros to improve debuggability. 614 615Handle "orphan" _REG methods for GPIO OpRegions. Before this change 616AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 617matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 618Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 619The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 620UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 621to potential issues with checks for OpRegion availability, or in other 622words checks if _REG has been called for the OpRegion which the ACPI code 623wants to use. Except for the "orphan" EC handling, ACPICA core does not 624call _REG on an ACPI node which does not define an OpRegion matching the 625type being registered; and the reference design DSDT, from which most 626Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 627UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 628were assigned ACPI controlled functions in the reference design. Together 629this leads to the perfect storm, at least on the Cherry Trail based 630Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 631and has added the Cherry Trail specific UserDefined(0x93) opregion to its 632GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 633availability check for the standard GeneralPurposeIo OpRegion. This 634clearly is a bug in the DSDT, but this does work under Windows. This 635issue leads to the intel vbtn driver reporting the device always being in 636tablet-mode at boot, even if it is in laptop mode. Which in turn causes 637userspace to ignore touchpad events. So in other words, this issue causes 638the touchpad to not work at boot. This change fixes this by extending the 639"orphan" _REG method handling to also apply to GPIO address-space 640handlers. 641 642 6432) iASL Compiler/Disassembler and ACPICA tools: 644 645iASL: Added more info to namespace dump file (-ln option). In a separate 646section of the dump file (after the main namespace dump), emit the full 647pathname for each namespace node, its type, and the ASL filename and line 648number where it is declared. 649 650AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 651x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 652is omitted, all iASL exceptions are displayed. 653 654iASL: Use StringLiteral instead of StringData for some ASL macros. The 655use of the stringData rule allows for some "string" oriented opcodes 656(Such as ToString, ToHexString, etc.) None of which make sense with the 657macros in question. This change modifies the StringData part of the rule 658for these macros to a simple string literal - thus disallowing the use 659of ToString, ToHexString, etc. 660The following ASL operators (macros) are affected: 661EisaId 662Fprintf 663Printf 664ToUuid 665Unicode 666Note: The MS compiler requires the use of string literals for these 667operators also. 668 669iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 670the list of "known" UUIDs for the input to the ToUUID macro. 671 672Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 673NFIT table. 674 675 676---------------------------------------- 677 67825 September 2020. Summary of changes for version 20200925: 679 680This release is available at https://acpica.org/downloads 681 682 6831) ACPICA kernel-resident subsystem: 684 685Preserve memory opregion mappings. The ACPICA's strategy with respect to 686the handling of memory mappings associated with memory operation regions 687is to avoid mapping the entire region at once which may be problematic at 688least in principle (for example, it may lead to conflicts with 689overlapping mappings having different attributes created by drivers). It 690may also be wasteful, because memory opregions on some systems take up 691vastchunks of address space while the fields in those regions actually 692accessed by AML are sparsely distributed. 693 694For this reason, a one-page "window" is mapped for a given opregion on 695the first memory access through it and if that "window" does not cover an 696address range accessed through that opregion subsequently, it is unmapped 697and a new "window" is mapped to replace it. Next, if the new "window" is 698not sufficient to access memory through the opregion in question in the 699future, it will be replaced with yet another "window" and so on. That 700may lead to a suboptimal sequence of memory mapping and unmapping 701operations, for example if two fields in one opregion separated from each 702other by a sufficiently wide chunk of unused address space are accessed 703in an alternating pattern. 704 705Added support for 64 bit risc-v compilation. Useful for acpica tools and 706incorporating ACPICA into the Firmware Test Suite. Colin Ian King 707<colin.king@canonical.com>. 708 709Added support for SMBus predefined names (from SMBus Control Method 710Interface Specification, Version 1.0, December 10, 1999. New predefined 711names: 712 _SBA 713 _SBI 714 _SBR 715 _SBT 716 _SBW 717 718AML Disassembler: Added a new command, "All <NameSeg>". This command will 719evaluate all objects in the current namespace whose NameString contains 720the input NameSeg as the last element of the NameString. Useful for 721debugging. 722 723 7242) iASL Compiler/Disassembler and ACPICA tools: 725 726iASL: fixed a crash that occurred when predefined objects return packages 727with lengths that exceed the initializer list. 728 729iASL: added more detail to external resolution error message when 730compiling multiple definition blocks. 731 732iASL: added a remark for an attempt to create a nameseg or namestring 733containing lower-case letters. This should prevent declaring multiple 734namesegs or namestrings in an attempt to refer to different objects (with 735different cases), but actually refer to the same object(s). 736 737iASL: improve alias analysis by saving object type. If the alias is a 738method type, the parameter count is also recorded. 739 740AcpiExec: Increase the default loop timeout value. Was 1 second, is now 74110 seconds. Prevents unnecessary timeouts when executing control methods 742from the command line. 743 744AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 745list. Includes: 746 Memory Device 747 Generic Buttons Device 748 NVDIMM Root Device 749 Control Method Battery 750 Device Graphs for _DSD method 751 Hierarchical Data Extension 752....ARM CoreSight Graph 753 754---------------------------------------- 755 756 75717 July 2020. Summary of changes for version 20200717: 758 759This release is available at https://acpica.org/downloads 760 761 7621) ACPICA kernel-resident subsystem: 763 764Do not increment OperationRegion reference counts for field units. Recent 765server firmware has revealed that this reference count can overflow on 766large servers that declare many field units (thousands) under the same 767OperationRegion. This occurs because each field unit declaration will add 768a reference count to the source OperationRegion. This release solves the 769reference count overflow for OperationRegion objects by preventing 770fieldUnits from incrementing their parent OperationRegion's reference 771count. 772 773Replaced one-element arrays with flexible-arrays, which were introduced 774in C99. 775 776Restored the readme file containing the directions for generation of 777ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 778located at: generate/msvc2017/readme.txt 779 7802) iASL Compiler/Disassembler and ACPICA tools: 781 782iASL: Fixed a regression found in version 20200214. Prevent iASL from 783emitting an extra byte of garbage data when control methods declared a 784single parameter type without using braces. This extra byte is known to 785cause a blue screen on the Windows AML interpreter. 786 787iASL: Made a change to allow external declarations to specify the type of 788a named object even when some name segments are not defined. 789This change allows the following ASL code to compile (When DEV0 is not 790defined or not defined yet): 791 792 External (\_SB.DEV0.OBJ1, IntObj) 793 External (\_SB.DEV0, DeviceObj) 794 795iASL: Fixed a problem where method names in "Alias ()" statement could be 796misinterpreted. They are now interpreted correctly as method invocations. 797 798iASL: capture a method parameter count (Within the Method info segment, 799as well as the argument node) when using parameter type lists. 800 801---------------------------------------- 802 803 80428 May 2020. Summary of changes for version 20200528: 805 806 8071) ACPICA kernel-resident subsystem: 808 809Removed old/obsolete Visual Studio files which were used to build the 810Windows versions of the ACPICA tools. Since we have moved to Visual 811Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 812project files. The new subdirectory and solution file are located at: 813 814 acpica/generate/msvc2017/AcpiComponents.sln 815 816 8172) iASL Compiler/Disassembler and ACPICA tools: 818 819iASL: added support for a new OperationRegion Address Space (subtype): 820PlatformRtMechanism. Support for this new keyword is being released for 821early prototyping. It will appear in the next release of the ACPI 822specification. 823 824iASL: do not optimize the NameString parameter of the CondRefOf operator. 825In the previous iASL compiler release, the NameString parameter of the 826CondRefOf was optimized. There is evidence that some implementations of 827the AML interpreter do not perform the recursive search-to-parent search 828during the execution of the CondRefOf operator. Therefore, the CondRefOf 829operator behaves differently when the NameString parameter is a single 830name segment (a NameSeg) as opposed to a full NamePath (starting at the 831root scope) or a NameString containing parent prefixes. 832 833iASL: Prevent an inadvertent remark message. This change prevents a 834remark if within a control method the following exist: 8351) An Operation Region is defined, and 8362) A Field operator is defined that refers to the region. 837This happens because at the top level, the Field operator does not 838actually create a new named object, it simply references the operation 839region. 840 841Removed support for the acpinames utility. The acpinames was a simple 842utility used to populate and display the ACPI namespace without executing 843any AML code. However, ACPICA now supports executable opcodes outside of 844control methods. This means that executable AML opcodes such as If and 845Store opcodes need to be executed during table load. Therefore, acpinames 846would need to be updated to match the same behavior as the acpiexec 847utility and since acpiexec can already dump the entire namespace (via the 848'namespace' command), we no longer have the need to maintain acpinames. 849 850 In order to dump the contents of the ACPI namespace using acpiexec, 851execute the following command from the command line: 852 853 acpiexec -b "n" [aml files] 854 855---------------------------------------- 856 857 85830 April 2020. Summary of changes for version 20200430: 859 8601) ACPICA kernel-resident subsystem: 861 862Cleaned up the coding style of a couple of global variables 863(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 864AcpiProtocolLengths was made static, and the definition of 865AcpiGbl_NextCmdNum was moved to acglobal.h. 866 867 8682) iASL Compiler/Disassembler and ACPICA tools: 869 870iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 871associated with a field. 872 873Disassembler: has been made more resilient so that it will continue to 874parse AML even if the AML generates ACPI namespace errors. This enables 875iASL to disassemble some AML that may have been compiled using older 876versions of iASL that no longer compile with newer versions of iASL. 877 878iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 879was a mixup where _NIG required one parameter and _NIH required zero 880parameters. This change swaps these parameter requirements. Now it is 881required that _NIH must be called with one parameter and _NIG requires 882zero parameters. 883 884iASL: Allow use of undefined externals as long as they are protected by 885an if (CondRefOf (...)) block when compiling multiple definition blocks. 886 887iASL: Fixed the type override behavior of named objects that are declared 888as External. External declarations will no longer override the type of 889the actual definition if it already exists. 890 891AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 892command line wildcard support on Windows. Note: the AcpiNames utility is 893essentially redundant with the AcpiExec utility (using the "namespace" 894command) and is therefore deprecated. It will be removed in future 895releases of ACPICA. 896 897Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 898operators. The disassembler is intended to emit existing ASL code as-is. 899Therefore, error messages emitted during disassembly should be ignored or 900handled in a way such that the disassembler can continue to parse the 901AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 902parsing for create operators in order to complete parsing ASL termlists. 903 904iASL DataTable Compiler: IVRS table: fix potentially uninitialized 905variable warning. Some compilers catch potential uninitialized variables. 906This is done by examining branches of if/else statements. This change 907replaces an "else if" with an "else" to fix the uninitialized variable 908warning. 909 910 911---------------------------------------- 91226 March 2020. Summary of changes for version 20200326: 913 914 9151) ACPICA kernel-resident subsystem: 916 917Performed a code clean-up to prevent build errors on early versions of 918GCC-10. 919 920Added the NHLT table signature. iASL data table compiler/disassembler 921support for this table is coming soon. 922 923 9242) iASL Compiler/Disassembler and ACPICA tools: 925 926AcpiExec: Fixed several problems with the namespace initialization file 927(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 928errors, several seg faults, and enhancements to line parsing within the 929init file. In addition, each object found in the init file and it's new 930value is displayed, as well as any such entries that do not have a 931corresponding name in the namespace. For reference, the syntax for the 932various supported data types are presented below: 933 PCHG 0x777788889999BBBB // Integer 934 \DEV1.STR1 "XYZ" // String 935 BUF1 (88 99 AA) // Buffer 936 PKG1 [0x1111 0x2222] // Package 937 \BF1 0x7980 // BufferField 938 RCRV 0x0123456789ABCDEF // Field Unit 939 940iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 941can be used anywhere in a given ASL file to configure iASL to expect an 942iASL compiler error code on the line where this macro was placed. If the 943error code does not exist, an error is generated. This is intended to be 944used for ACPICA's ASL test suite, but can be used by ASL developers as 945well. 946 947iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 948IVRS table parsing supported only IVHD type 10h structures. Parsing an 949IVHD type 11h caused the iasl to report unknown subtable type. Add 950necessary structure definition for IVHD type 11h and apply correct 951parsing method based on subtable type. Micha? ?ygowski. 952 953iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 954According to AMD IOMMU Specification Revision 3.05 the reserved field 955should be IOMMU Feature Reporting. Change the name of the field to the 956correct one. Micha? ?ygowski. 957 958acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 959based on suggestions by David Seifert and Benjamin Berg. 960 961iASL: table compiler: removed an unused variable (DtCompilerParserResult) 962causing linking errors. Patch based on suggestions by David Seifert and 963Benjamin Berg. 964 965iASL: table compiler: make LexBuffer static to avoid linking errors in 966newer compilers. Patch based on suggestions by David Seifert and Benjamin 967Berg. 968 969iASL: fixed type matching between External and Named objects. External 970object types can only be expressed with ACPI object type values that are 971defined in the ACPI spec. However, iASL uses ACPI object type values that 972are local to ACPICA in addition to the values defined in the ACPI spec. 973This change implements type matching to map some object type values 974specific to ACPICA to ones that are defined in the ACPI spec. 975 976iASL: Dropped the type mismatch compiler error that can arise from 977External declarations to a warning. This warning can occur when there is 978a type difference between the external declaration and the actual object 979declaration (when compiling multiple files/modules simultaneously). 980 981iASL: removed an incorrect error message regarding externals. This change 982removes an incorrect error that is emitted when a duplicate external 983declaration does not contain a type that opens a scope. This is incorrect 984because the duplicate external with conflicting types are already caught 985by iASL and it doesn't make any sense to enforce what this conflicting 986type should be. 987 988AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 989surrounded by parens. Otherwise, a logical statement that applies a 990logical not operator to this macro could result in a computation that 991applies the operator to the left side of the logical and but not the 992right. Reported-by: John Levon <john.levon@joyent.com> 993 994Fixed a problem with the local version of sprint(): On 32-bit, the 995provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 996String + Size will wrap, meaning End < Start, and 997AcpiUtBoundStringOutput() will never output anything as a result. The 998symptom seen of this was acpixtract failing to output anything -- with a 999custom build that included utprint.c. Signed-off-by: John Levon 1000<john.levon@joyent.com> 1001 1002iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 1003ACPI specification. 1004 1005 1006---------------------------------------- 100714 February 2020. Summary of changes for version 20200214: 1008 1009 10101) ACPICA kernel-resident subsystem: 1011 1012Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 1013in a guest when it receives a sleep trigger from the hypervisor. When the 1014guest resumes from this power state, it does not see the SleepEnabled 1015bit. In other words, the sleepHibernation (S4) is triggered in a guest 1016when it receives a sleep trigger from the hypervisor. When the guest 1017resumes from this power state, it does not see the SleepEnabled bit. In 1018other words, the sleep button is not enabled on waking from an S4 state. 1019This causes subsequent invocation of sleep state to fail since the 1020guest.button is not enabled on waking from an S4 state. This causes 1021subsequent invocation of sleep state to fail in the guest. Fix this 1022problem by enabling the sleep button in ACPI legacy wake. From Anchal 1023Agarwal <anchalag@amazon.com>. 1024 1025Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 1026for checking the status bits of all enabled GPEs in one go. It is needed 1027to distinguish spurious SCIs from genuine ones when deciding whether or 1028not to wake up the system from suspend-to-idle. 1029 1030Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 1031using HOST in their environment to represent the host name for their 1032machines. Avoid this problem by renaming this variable from HOST to 1033ACPI_HOST. 1034 1035MSVC 2017 project files: Enable multiprocessor generation to improve 1036build performance. 1037 1038Added a macro to get the byte width of a Generic Address structure. New 1039ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 1040ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 1041 1042 10432) iASL Compiler/Disassembler and ACPICA tools: 1044 1045iASL: Implemented full support for the (optional, rarely used) ReturnType 1046and ParameterTypesList for the Method, Function, and External operators. 1047For Method declarations, the number of individual ParameterTypes must 1048match the declaration of the number of arguments (NumArgs). This also 1049Fixes a problem with the External operator where extra/extraneous bytes 1050were emitted in the AML code if the optional ReturnType/ParameterTypes 1051were specified for a MethodObj declaration. 1052New error message: 10531) Method NumArgs count does not match length of ParameterTypes list 1054 1055iASL: Implemented detection of type mismatches between External 1056declarations and named object declarations. Also, detect type mismatches 1057between multiple External declarations of the same Name. 1058New error messages: 10591) Type mismatch between external declaration and actual object 1060declaration detected 10612) Type mismatch between multiple external declarations detected 1062 1063iASL: Implemented new error messages for External operators that specify 1064a ReturnType and/or ParameterTypesList for any object type other than 1065control methods (MethodObj). 1066New error messages: 10671) Return type is only allowed for Externals declared as MethodObj 10682) Parameter type is only allowed for Externals declared as MethodObj 1069 1070iASL: Implemented two new remark/warning messages for ASL code that 1071creates named objects from within a control method. This is very 1072inefficient since the named object must be created and deleted each time 1073the method is executed. 1074New messages: 10751) Creation of named objects within a method is highly inefficient, use 1076globals or method local variables instead (remark) 10772) Static OperationRegion should be declared outside control method 1078(warning) 1079 1080iASL: Improved illegal forward reference detection by adding support to 1081detect forward-reference method invocations. 1082 1083iASL: Detect and issue an error message for NameStrings that contain too 1084many individual NameSegs (>255). This is an AML limitation that is 1085defined in the ACPI specification. 1086New message: 10871) NameString contains too many NameSegs (>255) 1088 1089acpidump: windows: use GetSystemFirmwareTable API for all tables except 1090SSDT. By using this API, acpidump is able to get all tables in the XSDT 1091 1092iASL: Removed unused parser file and updated msvc2017 project files. 1093Removed the obsolete AslCompiler.y from the repository. 1094 1095iASL: msvc2017: Fixed macros in the file dependency list to prevent 1096unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 1097 1098Disassembler: Prevent spilling error messages to the output file. All 1099errors are directed to the console instead. These error messages 1100prevented re-compilation of the resulting disassembled ASL output file 1101(.DSL). 1102 1103 1104---------------------------------------- 110510 January 2020. Summary of changes for version 20200110: 1106 1107 11081) ACPICA kernel-resident subsystem: 1109 1110Updated all copyrights to 2020. This affects all ACPICA source code 1111modules. 1112 1113 11142) iASL Compiler/Disassembler and ACPICA tools: 1115 1116ASL test suite (ASLTS): Updated all copyrights to 2020. 1117 1118Tools and utilities: Updated all signon copyrights to 2020. 1119 1120iASL: fix forward reference analysis for field declarations. Fixes 1121forward reference analysis for field declarations by searching the 1122parent scope for the named object when the object is not present in 1123the current scope. 1124 1125iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 1126full pathname of the name that already exists is printed. 1127 1128iASL: Enhance duplicate Case() detection for buffers. Add check for 1129buffers with no initializer list (these buffers will be filled with 1130zeros at runtime.) 1131 1132 1133---------------------------------------- 113413 December 2019. Summary of changes for version 20191213: 1135 1136 11371) ACPICA kernel-resident subsystem: 1138 1139Return a Buffer object for all fields created via the CreateField 1140operator. Previously, an Integer would be returned if the size of 1141the field was less than or equal to the current size of an Integer. 1142Although this goes against the ACPI specification, it provides 1143compatibility with other ACPI implementations. Also updated the 1144ASLTS test suite to reflect this new behavior. 1145 11462) iASL Compiler/Disassembler and ACPICA tools: 1147 1148iASL: Implemented detection of (and throw an error for) duplicate 1149values for Case statements within a single Switch statement. Duplicate 1150Integers, Strings, and Buffers are supported. 1151 1152iASL: Fix error logging issue during multiple file compilation -- 1153Switch to the correct input file during error node creation. 1154 1155iASL: For duplicate named object creation, now emit an error instead 1156of a warning - since this will cause a runtime error. 1157 1158AcpiSrc: Add unix line-ending support for non-Windows builds. 1159 1160iASL: Add an error condition for an attempt to create a NameString 1161with > 255 NameSegs (the max allowable via the AML definition). 1162 1163 1164---------------------------------------- 116518 October 2019. Summary of changes for version 20191018: 1166 1167 11681) ACPICA kernel-resident subsystem: 1169 1170Debugger: added a new command: ?Fields [address space ID]?. This command 1171dumps the contents of all field units that are defined within the 1172namespace with a particular address space ID. 1173 1174Modified the external interface AcpiLoadTable() to return a table index. 1175This table index can be used for unloading a table for debugging. 1176 ACPI_STATUS 1177 AcpiLoadTable ( 1178 ACPI_TABLE_HEADER *Table, 1179 UINT32 *TableIndex)) 1180 1181Implemented a new external interface: AcpiUnloadTable() This new function 1182takes a table index as an argument and unloads the table. Useful for 1183debugging only. 1184 ACPI_STATUS 1185 AcpiUnloadTable ( 1186 UINT32 TableIndex)) 1187 1188Ported the AcpiNames utility to use the new table initialization 1189sequence. The utility was broken before this change. Also, it was 1190required to include most of the AML interpreter into the utility in order 1191to process table initialization (module-level code execution.) 1192 1193Update for results from running Clang V8.0.1. This fixes all "dead 1194assignment" warnings. There are still several "Dereference of NULL 1195pointer" warnings, but these have been found to be false positive 1196warnings. 1197 1198 11992) iASL Compiler/Disassembler and ACPICA tools: 1200 1201iASL: numerous table compiler changes to ensure that the usage of 1202yacc/bison syntax is POSIX-compliant. 1203 1204iASL/disassembler: several simple bug fixes in the data table 1205disassembler. 1206 1207Acpiexec: expanded the initialization file (the -fi option) to initialize 1208strings, buffers, packages, and field units. 1209 1210 1211---------------------------------------- 121216 August 2019. Summary of changes for version 20190816: 1213 1214This release is available at https://acpica.org/downloads 1215 1216 12171) ACPICA kernel-resident subsystem: 1218 1219Modified the OwnerId mechanism to allow for more Owner Ids. The previous 1220limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 1221exceptions on machines with a large number of initialization threads, 1222many CPU cores and nested initialization control methods. 1223 1224Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 1225checking if the given GPE (as represented by a GPE device handle and a 1226GPE number) is currently active and dispatching it (if that's the case) 1227outside of interrupt context. 1228 1229Table load: exit the interpreter before initializing objects within the 1230new table This prevents re-acquiring the interpreter lock when loading 1231tables 1232 1233Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 1234uk Kim 1235 1236Macros: removed pointer math on a null pointer. Causes warnings on some 1237compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 1238instead of using arithmetic. 1239 1240Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 1241across all "printf-like" internal functions. Also, cleanup all calls to 1242such functions (both in 32-bit mode and 64-bit mode) now that they are 1243analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 1244 1245 12462) iASL Compiler/Disassembler and ACPICA tools: 1247 1248iASL: implemented a new data table compiler flex/bison front-end. This 1249change is internal and is not intended to result in changes to the 1250compiled code. This new compiler front-end can be invoked using the -tp 1251option for now, until the old mechanism is removed. 1252 1253ASLTS: Implemented a new data table compiler test suite. This test suite 1254generates all table templates and compile/disassemble/re-compile/binary- 1255compare each file. 1256 1257iASL: return -1 if AML files were not generated due to compiler errors 1258 1259iASL: added a warning on use of the now-legacy ASL Processor () keyword. 1260 1261iASL: added an error on _UID object declaration that returns a String 1262within a Processor () declaration. A _UID for a processor must be an 1263Integer. 1264 1265iASL: added a null terminator to name strings that consist only of 1266multiple parent prefixes (^) 1267 1268iASL: added support to compile both ASL and data table files in a single 1269command. 1270 1271Updated the tool generation project files that were recently migrated to 1272MSVC 2017 to eliminate all new warnings. The new project files appear in 1273the directory \acpica\generate\msvc2017. This change effectively 1274deprecates the older project files in \acpica\generate\msvc9. 1275 1276 1277---------------------------------------- 127803 July 2019. Summary of changes for version 20190703: 1279 1280 12811) ACPICA kernel-resident subsystem: 1282 1283Remove legacy module-level support code. There were still some remnants 1284of the legacy module-level code executions. Since we no longer support 1285this option, this is essentially dead code and has been removed from the 1286ACPICA source. 1287 1288iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1289scope. If these named objects are declared outside the root scope, they 1290will not be invoked by any host Operating System. 1291 1292Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 1293one) can be enabled in two situations. First, the GPEs with existing _Lxx 1294and _Exx methods are enabled implicitly by ACPICA during system 1295initialization. Second, the GPEs without these methods (like GPEs listed 1296by _PRW objects for wakeup devices) need to be enabled directly by the 1297code that is going to use them (e.g. ACPI power management or device 1298drivers). 1299 1300In the former case, if the status of a given GPE is set to start with, 1301its handler method (either _Lxx or _Exx) needs to be invoked to take care 1302of the events (possibly) signaled before the GPE was enabled. In the 1303latter case, however, the first caller of AcpiEnableGpe() for a given GPE 1304should not be expected to care about any events that might be signaled 1305through it earlier. In that case, it is better to clear the status of 1306the GPE before enabling it, to prevent stale events from triggering 1307unwanted actions (like spurious system resume, for example). 1308 1309For this reason, modify AcpiEvAddGpeReference() to take an additional 1310boolean argument indicating whether or not the GPE status needs to be 1311cleared when its reference counter changes from zero to one and make 1312AcpiEnableGpe() pass TRUE to it through that new argument. 1313 1314 13152) iASL Compiler/Disassembler and ACPICA tools: 1316 1317The tool generation process has been migrated to MSVC 2017, and all 1318project files have been upgraded. The new project files appear in the 1319directory \acpica\generate\msvc2017. This change effectively deprecates 1320the older project files in \acpica\generate\msvc9. 1321 1322iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1323scope. If these named objects are declared outside the root scope, they 1324will not be invoked by any host Operating System 1325 1326---------------------------------------- 132709 May 2019. Summary of changes for version 20190509: 1328 1329 13301) ACPICA kernel-resident subsystem: 1331 1332Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 1333them") that causes problems with Thunderbolt controllers to occur if a 1334dock device is connected at init time (the xhci_hcd and thunderbolt 1335modules crash which prevents peripherals connected through them from 1336working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 1337Dispatch active GPEs at init time") to get undone, so the problem 1338addressed by commit ecc1165b8b74 appears again as a result of it. 1339 1340 13412) iASL Compiler/Disassembler and ACPICA tools: 1342 1343Reverted iASL: Additional forward reference detection. This change 1344reverts forward reference detection for field declarations. The feature 1345unintentionally emitted AML bytecode with incorrect package lengths for 1346some ASL code related to Fields and OperationRegions. This malformed AML 1347can cause systems to crash 1348during boot. The malformed AML bytecode is emitted in iASL version 134920190329 and 20190405. 1350 1351iASL: improve forward reference detection. This change improves forward 1352reference detection for named objects inside of scopes. If a parse object 1353has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 1354a named object that is declared later in the AML bytecode. This is 1355allowed if the reference is inside of a method and the declaration is 1356outside of a method like so: 1357 1358DefinitionBlock(...) 1359{ 1360 Method (TEST) 1361 { 1362 Return (NUM0) 1363 } 1364 Name (NUM0,0) 1365} 1366 1367However, if the declaration and reference are both in the same method or 1368outside any methods, this is a forward reference and should be marked as 1369an error because it would result in runtime errors. 1370 1371DefinitionBlock(...) 1372{ 1373 Name (BUFF, Buffer (NUM0) {}) // Forward reference 1374 Name (NUM0, 0x0) 1375 1376 Method (TEST) 1377 { 1378 Local0 = NUM1 1379 Name (NUM1, 0x1) // Forward reference 1380 return (Local0) 1381 } 1382} 1383 1384iASL: Implemented additional buffer overflow analysis for BufferField 1385declarations. Check if a buffer index argument to a create buffer field 1386operation is beyond the end of the target buffer. 1387 1388This affects these AML operators: 1389 1390 AML_CREATE_FIELD_OP 1391 AML_CREATE_BIT_FIELD_OP 1392 AML_CREATE_BYTE_FIELD_OP 1393 AML_CREATE_WORD_FIELD_OP 1394 AML_CREATE_DWORD_FIELD_OP 1395 AML_CREATE_QWORD_FIELD_OP 1396 1397 There are three conditions that must be satisfied in order to allow this 1398validation at compile time: 1399 1400 1) The length of the target buffer must be an integer constant 1401 2) The index specified in the create* must be an integer constant 1402 3) For CreateField, the bit length argument must be non-zero. 1403 1404Example: 1405 Name (BUF1, Buffer() {1,2}) 1406 CreateField (BUF1, 7, 9, CF03) // 3: ERR 1407 1408dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 1409Error 6165 - ^ Buffer index beyond end of 1410target buffer 1411 1412 1413---------------------------------------- 141405 April 2019. Summary of changes for version 20190405: 1415 1416 14171) ACPICA kernel-resident subsystem: 1418 1419Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 1420unconditionally clearing ACPI IRQs during suspend/resume") was added 1421earlier to stop clearing of event status bits unconditionally on suspend 1422and resume paths. Though this change fixed an issue on suspend path, it 1423introduced regressions on several resume paths. In the case of S0ix, 1424events are enabled as part of device suspend path. If status bits for the 1425events are set when they are enabled, it could result in premature wake 1426from S0ix. If status is cleared for any event that is being enabled so 1427that any stale events are cleared out. In case of S0ix, events are 1428enabled as part of device suspend path. If status bits for the events are 1429set when they are enabled, it could result in premature wake from S0ix. 1430 1431This change ensures that status is cleared for any event that is being 1432enabled so that any stale events are cleared out. 1433 1434 14352) iASL Compiler/Disassembler and ACPICA tools: 1436 1437iASL: Implemented an enhanced multiple file compilation that combines 1438named objects from all input files to a single namespace. With this 1439feature, any unresolved external declarations as well as duplicate named 1440object declarations can be detected during compilation rather than 1441generating errors much later at runtime. The following commands are 1442examples that utilize this feature: 1443 iasl dsdt.asl ssdt.asl 1444 iasl dsdt.asl ssdt1.asl ssdt2.asl 1445 iasl dsdt.asl ssdt*.asl 1446 1447---------------------------------------- 144829 March 2019. Summary of changes for version 20190329: 1449 1450 14511) ACPICA kernel-resident subsystem: 1452 1453Namespace support: Remove the address nodes from global list after method 1454termination. The global address list contains pointers to namespace nodes 1455that represent Operation Regions. This change properly removes Operation 1456Region namespace nodes that are declared dynamically during method 1457execution. 1458 1459Linux: Use a different debug default than ACPICA. There was a divergence 1460between Linux and the ACPICA codebases. In order to resolve this 1461divergence, Linux now declares its own debug default in aclinux.h 1462 1463Renamed some internal macros to improve code understanding and 1464maintenance. The macros below all operate on single 4-character ACPI 1465NameSegs, not generic strings (old -> new): 1466 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 1467 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 1468 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 1469 1470Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 1471table. 1472 1473Test suite: Update makefiles, add PCC operation region support 1474 1475 14762) iASL Compiler/Disassembler and Tools: 1477 1478iASL: Implemented additional illegal forward reference detection. Now 1479detect and emit an error upon detection of a forward reference from a 1480Field to an Operation Region. This will fail at runtime if allowed to 1481pass the compiler. 1482 1483AcpiExec: Add an address list check for dynamic Operation Regions. This 1484feature performs a sanity test for each node the global address list. 1485This is done in order to ensure that all dynamic operation regions are 1486properly removed from the global address list and no dangling pointers 1487are left behind. 1488 1489Disassembler: Improved generation of resource pathnames. This change 1490improves the code that generates resource descriptor and resource tag 1491pathnames. The original code used a bunch of str* C library functions 1492that caused warnings on some compilers. 1493 1494iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1495function can overwrite buffers if the calling code is not very careful. 1496In the case of generating a module/table header, use of memmove is a 1497better implementation. 1498 1499 15003) Status of new features that have not been completed at this time: 1501 1502iASL: Implementing an enhanced multiple file compilation into a single 1503namespace feature (Status): This feature will be released soon, and 1504allows multiple ASL files to be compiled into the same single namespace. 1505By doing so, any unresolved external declarations as well as duplicate 1506named object declarations can be detected during compilation (rather than 1507later during runtime). The following commands are examples that utilize 1508this feature: 1509 iasl dsdt.asl ssdt.asl 1510 iasl dsdt.asl ssdt1.asl ssdt2.asl 1511 iasl dsdt.asl ssdt*.asl 1512 1513ASL tutorial status: Feedback is being gathered internally and the 1514current plan is to publish this tutorial on the ACPICA website after a 1515final review by a tech writer. 1516 1517---------------------------------------- 151815 February 2019. Summary of changes for version 20190215: 1519 1520 15210) Support for ACPI specification version 6.3: 1522 1523Add PCC operation region support for the AML interpreter. This adds PCC 1524operation region support in the AML interpreter and a default handler for 1525acpiexec. The change also renames the PCC region address space keyword to 1526PlatformCommChannel. 1527 1528Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1529These methods provide OSPM with health information and device boot 1530status. 1531 1532PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1533defines if the trigger needs to be invoked by OSPM before or at the end 1534of kernel crash dump processing/handling operation. 1535 1536SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1537is used for describing devices such as heterogeneous processors, 1538accelerators, GPUs, and IO devices with integrated compute or DMA 1539engines. 1540 1541MADT: Add support for statistical profiling in GICC. Statistical 1542profiling extension (SPE) is an architecture-specific feature for ARM. 1543 1544MADT: Add online capable flag. If this bit is set, system hardware 1545supports enabling this processor during OS runtime. 1546 1547New Error Disconnect Recover Notification value. There are a number of 1548scenarios where system Firmware in collaboration with hardware may 1549disconnect one or more devices from the rest of the system for purposes 1550of error containment. Firmware can use this new notification value to 1551alert OSPM of such a removal. 1552 1553PPTT: New additional fields in Processor Structure Flags. These flags 1554provide more information about processor topology. 1555 1556NFIT/Disassembler: Change a field name from "Address Range" to "Region 1557Type". 1558 1559HMAT updates: make several existing fields to be reserved as well as 1560rename subtable 0 to "memory proximity domain attributes". 1561 1562GTDT: Add support for new GTDT Revision 3. This revision adds information 1563for the EL2 timer. 1564 1565iASL: Update the HMAT example template for new fields. 1566 1567iASL: Add support for the new revision of the GTDT (Rev 3). 1568 1569 15701) ACPICA kernel-resident subsystem: 1571 1572AML Parser: fix the main AML parse loop to correctly skip erroneous 1573extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1574byte extended opcodes. If an error occurs during an AML table load, the 1575AML parser will continue loading the table by skipping the offending 1576opcode. This implements a "load table at any cost" philosophy. 1577 1578 15792) iASL Compiler/Disassembler and Tools: 1580 1581iASL: Add checks for illegal object references, such as a reference 1582outside of method to an object within a method. Such an object is only 1583temporary. 1584 1585iASL: Emit error for creation of a zero-length operation region. Such a 1586region is rather pointless. If encountered, a runtime error is also 1587implemented in the interpreter. 1588 1589Debugger: Fix a possible fault with the "test objects" command. 1590 1591iASL: Makefile: support parent directory filenames containing embedded 1592spaces. 1593 1594iASL: Update the TPM2 template to revision 4. 1595 1596iASL: Add the ability to report specific warnings or remarks as errors. 1597 1598Disassembler: Disassemble OEMx tables as actual AML byte code. 1599Previously, these tables were treated as "unknown table". 1600 1601iASL: Add definition and disassembly for TPM2 revision 3. 1602 1603iASL: Add support for TPM2 rev 3 compilation. 1604 1605 1606---------------------------------------- 160708 January 2019. Summary of changes for version 20190108: 1608 1609 16101) ACPICA kernel-resident subsystem: 1611 1612Updated all copyrights to 2019. This affects all source code modules. 1613 1614 16152) iASL Compiler/Disassembler and Tools: 1616 1617ASL test suite (ASLTS): Updated all copyrights to 2019. 1618 1619Tools: Updated all signon copyrights to 2019. 1620 1621AcpiExec: Added a new option to dump extra information concerning any 1622memory leaks detected by the internal object/cache tracking mechanism. - 1623va 1624 1625iASL: Updated the table template for the TPM2 table to the newest version 1626of the table (Revision 4) 1627 1628 1629---------------------------------------- 163013 December 2018. Summary of changes for version 20181213: 1631 1632 16331) ACPICA Kernel-resident Subsystem: 1634 1635Fixed some buffer length issues with the GenericSerialBus, related to two 1636of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1637which are rarely seen in the field. For these, the LEN field of the ASL 1638buffer is now ignored. Hans de Goede 1639 1640Implemented a new object evaluation trace mechanism for control methods 1641and data objects. This includes nested control methods. It is 1642particularly useful for examining the ACPI execution during system 1643initialization since the output is relatively terse. The flag below 1644enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1645 #define ACPI_LV_EVALUATION 0x00080000 1646 1647Examples: 1648 Enter evaluation : _SB.PCI0._INI (Method) 1649 Exit evaluation : _SB.PCI0._INI 1650 Enter evaluation : _OSI (Method) 1651 Exit evaluation : _OSI 1652 Enter evaluation : _SB.PCI0.TEST (Method) 1653 Nested method call : _SB.PCI0.NST1 1654 Exit nested method : _SB.PCI0.NST1 1655 Exit evaluation : _SB.PCI0.TEST 1656 1657Added two recently-defined _OSI strings. See 1658https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1659osi. 1660 "Windows 2018" 1661 "Windows 2018.2" 1662 1663Update for buffer-to-string conversions via the ToHexString ASL operator. 1664A "0x" is now prepended to each of the hex values in the output string. 1665This provides compatibility with other ACPI implementations. The ACPI 1666specification is somewhat vague on this issue. 1667 Example output string after conversion: 1668"0x01,0x02,0x03,0x04,0x05,0x06" 1669 1670Return a run-time error for TermArg expressions within individual package 1671elements. Although this is technically supported by the ASL grammar, 1672other ACPI implementations do not support this either. Also, this fixes a 1673fault if this type of construct is ever encountered (it never has been). 1674 1675 16762) iASL Compiler/Disassembler and Tools: 1677 1678iASL: Implemented a new compile option (-ww) that will promote individual 1679warnings and remarks to errors. This is intended to enhance the firmware 1680build process. 1681 1682AcpiExec: Implemented a new command-line option (-eo) to support the new 1683object evaluation trace mechanism described above. 1684 1685Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1686instead of a "unknown table" message. 1687 1688AcpiHelp: Improved support for the "special" predefined names such as 1689_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1690used for "xx" and "x". 1691 1692---------------------------------------- 169331 October 2018. Summary of changes for version 20181031: 1694 1695 1696An Operation Region regression was fixed by properly adding address 1697ranges to a global list during initialization. This allows OS to 1698accurately check for overlapping regions between native devices (such as 1699PCI) and Operation regions as well as checking for region conflicts 1700between two Operation Regions. 1701 1702Added support for the 2-byte extended opcodes in the code/feature that 1703attempts to continue parsing during the table load phase. Skip parsing 1704Device declarations (and other extended opcodes) when an error occurs 1705during parsing. Previously, only single-byte opcodes were supported. 1706 1707Cleanup: Simplified the module-level code support by eliminating a 1708useless global variable (AcpiGbl_GroupModuleLeveCode). 1709 1710 17112) iASL Compiler/Disassembler and Tools: 1712 1713iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1714could cause a fault in the preprocessor. This was an inadvertent side- 1715effect from moving more allocations/frees to the local cache/memory 1716mechanism. 1717 1718iASL: Enhanced error detection by validating that all NameSeg elements 1719within a NamePatch actually exist. The previous behavior was spotty at 1720best, and such errors could be improperly ignored at compiler time (never 1721at runtime, however. There are two new error messages, as shown in the 1722examples below: 1723 1724dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1725Error 6161 - ^ One or more objects within 1726the Pathname do not exist (TTTT.BXXX) 1727 1728dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1729Error 6160 - One or more prefix Scopes do not exist ^ 1730(BBBB.CBF1) 1731 1732iASL: Disassembler/table-compiler: Added support for the static data 1733table TPM2 revision 3 (an older version of TPM2). The support has been 1734added for the compiler and the disassembler. 1735 1736Fixed compilation of DOS format data table file on Unix/Linux systems. 1737iASL now properly detects line continuations (\) for DOS format data 1738table definition language files on when executing on Unix/Linux. 1739 1740---------------------------------------- 174103 October 2018. Summary of changes for version 20181003: 1742 1743 17442) iASL Compiler/Disassembler and Tools: 1745 1746Fixed a regression introduced in version 20180927 that could cause the 1747compiler to fault, especially with NamePaths containing one or more 1748carats (^). Such as: ^^_SB_PCI0 1749 1750Added a new remark for the Sleep() operator when the sleep time operand 1751is larger than one second. This is a very long time for the ASL/BIOS code 1752and may not be what was intended by the ASL writer. 1753 1754---------------------------------------- 175527 September 2018. Summary of changes for version 20180927: 1756 1757 17581) ACPICA kernel-resident subsystem: 1759 1760Updated the GPE support to clear the status of all ACPI events when 1761entering any/all sleep states in order to avoid premature wakeups. In 1762theory, this may cause some wakeup events to be missed, but the 1763likelihood of this is small. This change restores the original behavior 1764of the ACPICA code in order to fix a regression seen from the previous 1765"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1766This regression could cause some systems to incorrectly wake immediately. 1767 1768Updated the execution of the _REG methods during initialization and 1769namespace loading to bring the behavior into closer conformance to the 1770ACPI specification and other ACPI implementations: 1771 1772From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1773 "Control methods must assume all operation regions are inaccessible 1774until the _REG(RegionSpace, 1) method is executed" 1775 1776 "The exceptions to this rule are: 17771. OSPM must guarantee that the following operation regions are always 1778accessible: 1779 SystemIO operation regions. 1780 SystemMemory operation regions when accessing memory returned by the 1781System Address Map reporting interfaces." 1782 1783Since the state of both the SystemIO and SystemMemory address spaces are 1784defined by the specification to never change, this ACPICA change ensures 1785that now _REG is never called on them. This solves some problems seen in 1786the field and provides compatibility with other ACPI implementations. An 1787update to the upcoming new version of the ACPI specification will help 1788clarify this behavior. 1789 1790Updated the implementation of support for the Generic Serial Bus. For the 1791"bidirectional" protocols, the internal implementation now automatically 1792creates a return data buffer of the maximum size (255). This handles the 1793worst-case for data that is returned from the serial bus handler, and 1794fixes some problems seen in the field. This new buffer is directly 1795returned to the ASL. As such, there is no true "bidirectional" buffer, 1796which matches the ACPI specification. This is the reason for the "double 1797store" seen in the example ASL code in the specification, shown below: 1798 1799Word Process Call (AttribProcessCall): 1800 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1801 Field(TOP1, BufferAcc, NoLock, Preserve) 1802 { 1803 FLD1, 8, // Virtual register at command value 1. 1804 } 1805 1806 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1807 // as BUFF 1808 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1809 1810 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1811 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1812transaction 1813 // This is the "double store". The write to 1814 // FLD1 returns a new buffer, which is stored 1815 // back into BUFF with the second Store. 1816 1817 18182) iASL Compiler/Disassembler and Tools: 1819 1820iASL: Implemented detection of extraneous/redundant uses of the Offset() 1821operator within a Field Unit list. A remark is now issued for these. For 1822example, the first two of the Offset() operators below are extraneous. 1823Because both the compiler and the interpreter track the offsets 1824automatically, these Offsets simply refer to the current offset and are 1825unnecessary. Note, when optimization is enabled, the iASL compiler will 1826in fact remove the redundant Offset operators and will not emit any AML 1827code for them. 1828 1829 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1830 Field (OPR1) 1831 { 1832 Offset (0), // Never needed 1833 FLD1, 32, 1834 Offset (4), // Redundant, offset is already 4 (bytes) 1835 FLD2, 8, 1836 Offset (64), // OK use of Offset. 1837 FLD3, 16, 1838 } 1839dsdt.asl 14: Offset (0), 1840Remark 2158 - ^ Unnecessary/redundant use of Offset 1841operator 1842 1843dsdt.asl 16: Offset (4), 1844Remark 2158 - ^ Unnecessary/redundant use of Offset 1845operator 1846 1847---------------------------------------- 184810 August 2018. Summary of changes for version 20180810: 1849 1850 18511) ACPICA kernel-resident subsystem: 1852 1853Initial ACPI table loading: Attempt to continue loading ACPI tables 1854regardless of malformed AML. Since migrating table initialization to the 1855new module-level code support, the AML interpreter rejected tables upon 1856any ACPI error encountered during table load. This is a problem because 1857non-serious ACPI errors during table load do not necessarily mean that 1858the entire definition block (DSDT or SSDT) is invalid. This change 1859improves the table loading by ignoring some types of errors that can be 1860generated by incorrect AML. This can range from object type errors, scope 1861errors, and index errors. 1862 1863Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1864during suspend/resume. The status of ACPI events is no longer cleared 1865when entering the ACPI S5 system state (power off) which caused some 1866systems to power up immediately after turning off power in certain 1867situations. This was a functional regression. It was fixed by clearing 1868the status of all ACPI events again when entering S5 (for system-wide 1869suspend or hibernation the clearing of the status of all events is not 1870desirable, as it might cause the kernel to miss wakeup events sometimes). 1871Rafael Wysocki. 1872 1873 18742) iASL Compiler/Disassembler and Tools: 1875 1876AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1877elements listed in the initialization file were previously initialized 1878after the table load and before executing module-level code blocks. 1879Recent changes in the module-level code support means that the table load 1880becomes a large control method execution. If fields are used within 1881module-level code and we are executing with the -fi option, the 1882initialization values were used to initialize the namespace object(s) 1883only after the table was finished loading. This change Provides an early 1884initialization of objects specified in the initialization file so that 1885field unit values are populated during the table load (not after the 1886load). 1887 1888AcpiExec: Fixed a small memory leak regression that could result in 1889warnings during exit of the utility. These warnings were similar to 1890these: 1891 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1892 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1893 1894---------------------------------------- 189529 June 2018. Summary of changes for version 20180629: 1896 1897 18981) iASL Compiler/Disassembler and Tools: 1899 1900iASL: Fixed a regression related to the use of the ASL External 1901statement. Error checking for the use of the External() statement has 1902been relaxed. Previously, a restriction on the use of External meant that 1903the referenced named object was required to be defined in a different 1904table (an SSDT). Thus it would be an error to declare an object as an 1905external and then define the same named object in the same table. For 1906example: 1907 DefinitionBlock (...) 1908 { 1909 External (DEV1) 1910 Device (DEV1){...} // This was an error 1911 } 1912However, this behavior has caused regressions in some existing ASL code, 1913because there is code that depends on named objects and externals (with 1914the same name) being declared in the same table. This change will allow 1915the ASL code above to compile without errors or warnings. 1916 1917iASL: Implemented ASL language extensions for four operators to make some 1918of their arguments optional instead of required: 1919 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1920 2) BankField (RegionName, BankName, BankValue, 1921 AccessType, LockRule, UpdateRule) 1922 3) IndexField (IndexName, DataName, 1923 AccessType, LockRule, UpdateRule) 1924For the Field operators above, the AccessType, LockRule, and UpdateRule 1925are now optional arguments. The default values are: 1926 AccessType: AnyAcc 1927 LockRule: NoLock 1928 UpdateRule: Preserve 1929 4) Mutex (MutexName, SyncLevel) 1930For this operator, the SyncLevel argument is now optional. This argument 1931is rarely used in any meaningful way by ASL code, and thus it makes sense 1932to make it optional. The default value is: 1933 SyncLevel: 0 1934 1935iASL: Attempted use of the ASL Unload() operator now results in the 1936following warning: 1937 "Unload is not supported by all operating systems" 1938This is in fact very true, and the Unload operator may be completely 1939deprecated in the near future. 1940 1941AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1942file. Recent changes in the ACPICA module-level code support altered the 1943table load/initialization sequence . This means that the table load has 1944become a large method execution of the table itself. If Operation Region 1945Fields are used within any module-level code and the -fi option was 1946specified, the initialization values were populated only after the table 1947had completely finished loading (and thus the module-level code had 1948already been executed). This change moves the initialization of objects 1949listed in the initialization file to before the table is executed as a 1950method. Field unit values are now initialized before the table execution 1951is performed. 1952 1953---------------------------------------- 195431 May 2018. Summary of changes for version 20180531: 1955 1956 19571) ACPICA kernel-resident Subsystem: 1958 1959Implemented additional support to help ensure that a DSDT or SSDT is 1960fully loaded even if errors are incurred during the load. The majority of 1961the problems that are seen is the failure of individual AML operators 1962that occur during execution of any module-level code (MLC) existing in 1963the table. This support adds a mechanism to abort the current ASL 1964statement (AML opcode), emit an error message, and to simply move on to 1965the next opcode -- instead of aborting the entire table load. This is 1966different than the execution of a control method where the entire method 1967is aborted upon any error. The goal is to perform a very "best effort" to 1968load the ACPI tables. The most common MLC errors that have been seen in 1969the field are direct references to unresolved ASL/AML symbols (referenced 1970directly without the use of the CondRefOf operator to validate the 1971symbol). This new ACPICA behavior is now compatible with other ACPI 1972implementations. 1973 1974Interpreter: The Unload AML operator is no longer supported for the 1975reasons below. An AE_NOT_IMPLEMENTED exception is returned. 19761) A correct implementation on at least some hosts may not be possible. 19772) Other ACPI implementations do not correctly/fully support it. 19783) It requires host device driver support which is not known to exist. 1979 (To properly support namespace unload out from underneath.) 19804) This AML operator has never been seen in the field. 1981 1982Parser: Added a debug option to dump AML parse sub-trees as they are 1983being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1984ACPI_DB_PARSE_TREES. 1985 1986Debugger: Reduced the verbosity for errors incurred during table load and 1987module-level code execution. 1988 1989Completed an investigation into adding a namespace node "owner list" 1990instead of the current "owner ID" associated with namespace nodes. This 1991list would link together all nodes that are owned by an individual 1992control method. The purpose would be to enhance control method execution 1993by speeding up cleanup during method exit (all namespace nodes created by 1994a method are deleted upon method termination.) Currently, the entire 1995namespace must be searched for matching owner IDs if (and only if) the 1996method creates named objects outside of the local scope. However, by far 1997the most common case is that methods create objects locally, not outside 1998the method scope. There is already an ACPICA optimization in place that 1999only searches the entire namespace in the rare case of a method creating 2000objects elsewhere in the namespace. Therefore, it is felt that the 2001overhead of adding an additional pointer to each namespace node to 2002implement the owner list makes this feature unnecessary. 2003 2004 20052) iASL Compiler/Disassembler and Tools: 2006 2007iASL, Disassembler, and Template generator: Implemented support for 2008Revision D of the IORT table. Adds a new subtable that is used to specify 2009SMMUv3 PMCGs. rmurphy-arm. 2010 2011Disassembler: Restored correct table header validation for the "special" 2012ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 2013table header and must be special-cased. This was a regression that has 2014been present for apparently a long time. 2015 2016AcpiExec: Reduced verbosity of the local exception handler implemented 2017within acpiexec. This handler is invoked by ACPICA upon any exceptions 2018generated during control method execution. A new option was added: -vh 2019restores the original verbosity level if desired. 2020 2021AcpiExec: Changed the default base from decimal to hex for the -x option 2022(set debug level). This simplifies the use of this option and matches the 2023behavior of the corresponding iASL -x option. 2024 2025AcpiExec: Restored a force-exit on multiple control-c (sigint) 2026interrupts. This allows program termination even if other issues cause 2027the control-c to fail. 2028 2029ASL test suite (ASLTS): Added tests for the recently implemented package 2030element resolution mechanism that allows forward references to named 2031objects from individual package elements (this mechanism provides 2032compatibility with other ACPI implementations.) 2033 2034 2035---------------------------------------- 20368 May 2018. Summary of changes for version 20180508: 2037 2038 20391) ACPICA kernel-resident subsystem: 2040 2041Completed the new (recently deployed) package resolution mechanism for 2042the Load and LoadTable ASL/AML operators. This fixes a regression that 2043was introduced in version 20180209 that could result in an 2044AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 2045(SSDT) that contains package objects. 2046 2047 20482) iASL Compiler/Disassembler and Tools: 2049 2050AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 20511 MB. This change allows for table offsets within the acpidump file to be 2052up to 8 characters. These changes are backwards compatible with existing 2053acpidump files. 2054 2055 2056---------------------------------------- 205727 April 2018. Summary of changes for version 20180427: 2058 2059 20601) ACPICA kernel-resident subsystem: 2061 2062Debugger: Added support for Package objects in the "Test Objects" 2063command. This command walks the entire namespace and evaluates all named 2064data objects (Integers, Strings, Buffers, and now Packages). 2065 2066Improved error messages for the namespace root node. Originally, the root 2067was referred to by the confusing string "\___". This has been replaced by 2068"Namespace Root" for clarification. 2069 2070Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 2071Ian King <colin.king@canonical.com>. 2072 2073 20742) iASL Compiler/Disassembler and Tools: 2075 2076iASL: Implemented support to detect and flag illegal forward references. 2077For compatibility with other ACPI implementations, these references are 2078now illegal at the root level of the DSDT or SSDTs. Forward references 2079have always been illegal within control methods. This change should not 2080affect existing ASL/AML code because of the fact that these references 2081have always been illegal in the other ACPI implementation. 2082 2083iASL: Added error messages for the case where a table OEM ID and OEM 2084TABLE ID strings are longer than the ACPI-defined length. Previously, 2085these strings were simply silently truncated. 2086 2087iASL: Enhanced the -tc option (which creates an AML hex file in C, 2088suitable for import into a firmware project): 2089 1) Create a unique name for the table, to simplify use of multiple 2090SSDTs. 2091 2) Add a protection #ifdef in the file, similar to a .h header file. 2092With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 2093evan.lloyd@arm.com 2094 2095AcpiExec: Added a new option, -df, to disable the local fault handler. 2096This is useful during debugging, where it may be desired to drop into a 2097debugger on a fault. 2098 2099---------------------------------------- 210013 March 2018. Summary of changes for version 20180313: 2101 2102 21031) ACPICA kernel-resident subsystem: 2104 2105Implemented various improvements to the GPE support: 2106 21071) Dispatch all active GPEs at initialization time so that no GPEs are 2108lost. 21092) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 2110before devices are enumerated. 21113) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 2112IRQs are not lost. 21134) Add parallel GPE handling to eliminate the possibility of dispatching 2114the same GPE twice. 21155) Dispatch any pending GPEs after enabling for the first time. 2116 2117AcpiGetObjectInfo - removed support for the _STA method. This was causing 2118problems on some platforms. 2119 2120Added a new _OSI string, "Windows 2017.2". 2121 2122Cleaned up and simplified the module-level code support. These changes 2123are in preparation for the eventual removal of the legacy MLC support 2124(deferred execution), replaced by the new MLC architecture which executes 2125the MLC as a table is loaded (DSDT/SSDTs). 2126 2127Changed a compile-time option to a runtime option. Changes the option to 2128ignore ACPI table load-time package resolution errors into a runtime 2129option. Used only for platforms that generate many AE_NOT_FOUND errors 2130during boot. AcpiGbl_IgnorePackageResolutionErrors. 2131 2132Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 2133ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 2134compilation errors from unused variables (seen with some compilers). 2135 2136 21372) iASL Compiler/Disassembler and Tools: 2138 2139ASLTS: parallelized execution in order to achieve an (approximately) 2X 2140performance increase. 2141 2142ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 2143error reporting. 2144 2145---------------------------------------- 214609 February 2018. Summary of changes for version 20180209: 2147 2148 21491) ACPICA kernel-resident subsystem: 2150 2151Completed the final integration of the recent changes to Package Object 2152handling and the module-level AML code support. This allows forward 2153references from individual package elements when the package object is 2154declared from within module-level code blocks. Provides compatibility 2155with other ACPI implementations. 2156 2157The new architecture for the AML module-level code has been completed and 2158is now the default for the ACPICA code. This new architecture executes 2159the module-level code in-line as the ACPI table is loaded/parsed instead 2160of the previous architecture which deferred this code until after the 2161table was fully loaded. This solves some ASL code ordering issues and 2162provides compatibility with other ACPI implementations. At this time, 2163there is an option to fallback to the earlier architecture, but this 2164support is deprecated and is planned to be completely removed later this 2165year. 2166 2167Added a compile-time option to ignore AE_NOT_FOUND exceptions during 2168resolution of named reference elements within Package objects. Although 2169this is potentially a serious problem, it can generate a lot of 2170noise/errors on platforms whose firmware carries around a bunch of unused 2171Package objects. To disable these errors, define 2172ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 2173errors are always reported for ACPICA applications such as AcpiExec. 2174 2175Fixed a regression related to the explicit type-conversion AML operators 2176(ToXXXX). The regression was introduced early in 2017 but was not seen 2177until recently because these operators are not fully supported by other 2178ACPI implementations and are thus rarely used by firmware developers. The 2179operators are defined by the ACPI specification to not implement the 2180"implicit result object conversion". The regression incorrectly 2181introduced this object conversion for the following explicit conversion 2182operators: 2183 ToInteger 2184 ToString 2185 ToBuffer 2186 ToDecimalString 2187 ToHexString 2188 ToBCD 2189 FromBCD 2190 2191 21922) iASL Compiler/Disassembler and Tools: 2193 2194iASL: Fixed a problem with the compiler constant folding feature as 2195related to the ToXXXX explicit conversion operators. These operators do 2196not support the "implicit result object conversion" by definition. Thus, 2197ASL expressions that use these operators cannot be folded to a simple 2198Store operator because Store implements the implicit conversion. This 2199change uses the CopyObject operator for the ToXXXX operator folding 2200instead. CopyObject is defined to not implement implicit result 2201conversions and is thus appropriate for folding the ToXXXX operators. 2202 2203iASL: Changed the severity of an error condition to a simple warning for 2204the case where a symbol is declared both locally and as an external 2205symbol. This accommodates existing ASL code. 2206 2207AcpiExec: The -ep option to enable the new architecture for module-level 2208code has been removed. It is replaced by the -dp option which instead has 2209the opposite effect: it disables the new architecture (the default) and 2210enables the legacy architecture. When the legacy code is removed in the 2211future, the -dp option will be removed also. 2212 2213---------------------------------------- 221405 January 2018. Summary of changes for version 20180105: 2215 2216 22171) ACPICA kernel-resident subsystem: 2218 2219Updated all copyrights to 2018. This affects all source code modules. 2220 2221Fixed a possible build error caused by an unresolved reference to the 2222AcpiUtSafeStrncpy function. 2223 2224Removed NULL pointer arithmetic in the various pointer manipulation 2225macros. All "(void *) NULL" constructs are converted to "(void *) 0". 2226This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 2227 2228Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 2229Mittal. 2230 2231 22322) iASL Compiler/Disassembler and Tools: 2233 2234ASLTS: Updated all copyrights to 2018. 2235 2236Tools: Updated all signon copyrights to 2018. 2237 2238AcpiXtract: Fixed a regression related to ACPI table signatures where the 2239signature was truncated to 3 characters (instead of 4). 2240 2241AcpiExec: Restore the original terminal mode after the use of the -v and 2242-vd options. 2243 2244ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 2245 2246---------------------------------------- 224714 December 2017. Summary of changes for version 20171214: 2248 2249 22501) ACPICA kernel-resident subsystem: 2251 2252Fixed a regression in the external (public) AcpiEvaluateObjectTyped 2253interface where the optional "pathname" argument had inadvertently become 2254a required argument returning an error if omitted (NULL pointer 2255argument). 2256 2257Fixed two possible memory leaks related to the recently developed "late 2258resolution" of reference objects within ASL Package Object definitions. 2259 2260Added two recently defined _OSI strings: "Windows 2016" and "Windows 22612017". Mario Limonciello. 2262 2263Implemented and deployed a safer version of the C library function 2264strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 2265creation of unterminated strings as a possible result of a standard 2266strncpy. 2267 2268Cleaned up and restructured the global variable file (acglobal.h). There 2269are many changes, but no functional changes. 2270 2271 22722) iASL Compiler/Disassembler and Tools: 2273 2274iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 2275optional OemData field at the end of the table was incorrectly required 2276for proper compilation. It is now correctly an optional field. 2277 2278ASLTS: The entire suite was converted from standard ASL to the ASL+ 2279language, using the ASL-to-ASL+ converter which is integrated into the 2280iASL compiler. A binary compare of all output files has verified the 2281correctness of the conversion. 2282 2283iASL: Fixed the source code build for platforms where "char" is unsigned. 2284This affected the iASL lexer only. Jung-uk Kim. 2285 2286---------------------------------------- 228710 November 2017. Summary of changes for version 20171110: 2288 2289 22901) ACPICA kernel-resident subsystem: 2291 2292This release implements full support for ACPI 6.2A: 2293 NFIT - Added a new subtable, "Platform Capabilities Structure" 2294No other changes to ACPICA were required, since ACPI 6.2A is primarily an 2295errata release of the specification. 2296 2297Other ACPI table changes: 2298 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 2299 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 2300Linton 2301 2302Utilities: Modified the string/integer conversion functions to use 2303internal 64-bit divide support instead of a native divide. On 32-bit 2304platforms, a 64-bit divide typically requires a library function which 2305may not be present in the build (kernel or otherwise). 2306 2307Implemented a targeted error message for timeouts returned from the 2308Embedded Controller device driver. This is seen frequently enough to 2309special-case an AE_TIME returned from an EC operation region access: 2310 "Timeout from EC hardware or EC device driver" 2311 2312Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 2313runtime error messages have the identical prefix. 2314 2315 23162) iASL Compiler/Disassembler and Tools: 2317 2318AcpiXtract: Fixed a problem with table header detection within the 2319acpidump file. Processing a table could be ended early if a 0x40 (@) 2320appears in the original binary table, resulting in the @ symbol appearing 2321in the decoded ASCII field at the end of the acpidump text line. The 2322symbol caused acpixtract to incorrectly think it had reached the end of 2323the current table and the beginning of a new table. 2324 2325AcpiXtract: Added an option (-f) to ignore some errors during table 2326extraction. This initial implementation ignores non-ASCII and non- 2327printable characters found in the acpidump text file. 2328 2329TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 2330for ASLTS. This feature is used to track memory allocations from 2331different memory caches within the ACPICA code. At the end of an ASLTS 2332run, these memory statistics are recorded and stored in a log file. 2333 2334Debugger (user-space version): Implemented a simple "Background" command. 2335Creates a new thread to execute a control method in the background, while 2336control returns to the debugger prompt to allow additional commands. 2337 Syntax: Background <Namepath> [Arguments] 2338 2339---------------------------------------- 234029 September 2017. Summary of changes for version 20170929: 2341 2342 23431) ACPICA kernel-resident subsystem: 2344 2345Redesigned and implemented an improved ASL While() loop timeout 2346mechanism. This mechanism is used to prevent infinite loops in the kernel 2347AML interpreter caused by either non-responsive hardware or incorrect AML 2348code. The new implementation uses AcpiOsGetTimer instead of a simple 2349maximum loop count, and is thus more accurate and constant across 2350different machines. The default timeout is currently 30 seconds, but this 2351may be adjusted later. 2352 2353Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 2354better reflect the new implementation of the loop timeout mechanism. 2355 2356Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 2357and to fix an off-by-one error. Jung-uk Kim. 2358 2359Fixed an EFI build problem by updating the makefiles to for a new file 2360that was added, utstrsuppt.c 2361 2362 23632) iASL Compiler/Disassembler and Tools: 2364 2365Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 2366includes support in the table disassembler, compiler, and template 2367generator. 2368 2369iASL: Added an exception for an illegal type of recursive method 2370invocation. If a method creates named objects, the first recursive call 2371will fail at runtime. This change adds an error detection at compile time 2372to catch the problem up front. Note: Marking such a method as 2373"serialized" will not help with this problem, because the same thread can 2374acquire the method mutex more than once. Example compiler and runtime 2375output: 2376 2377 Method (MTH1) 2378 { 2379 Name (INT1, 1) 2380 MTH1 () 2381 } 2382 2383 dsdt.asl 22: MTH1 () 2384 Error 6152 - ^ Illegal recursive call to method 2385 that creates named objects (MTH1) 2386 2387Previous runtime exception: 2388 ACPI Error: [INT1] Namespace lookup failure, 2389 AE_ALREADY_EXISTS (20170831/dswload2-465) 2390 2391iASL: Updated support for External() opcodes to improve namespace 2392management and error detection. These changes are related to issues seen 2393with multiple-segment namespace pathnames within External declarations, 2394such as below: 2395 2396 External(\_SB.PCI0.GFX0, DeviceObj) 2397 External(\_SB.PCI0.GFX0.ALSI) 2398 2399iASL: Implemented support for multi-line error/warning messages. This 2400enables more detailed and helpful error messages as below, from the 2401initial deployment for the duplicate names error: 2402 2403 DSDT.iiii 1692: Device(PEG2) { 2404 Error 6074 - ^ Name already exists in scope 2405(PEG2) 2406 2407 Original name creation/declaration below: 2408 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 2409 2410AcpiXtract: Added additional flexibility to support differing input hex 2411dump formats. Specifically, hex dumps that contain partial disassembly 2412and/or comments within the ACPI table data definition. There exist some 2413dump utilities seen in the field that create this type of hex dump (such 2414as Simics). For example: 2415 2416 DSDT @ 0xdfffd0c0 (10999 bytes) 2417 Signature DSDT 2418 Length 10999 2419 Revision 1 2420 Checksum 0xf3 (Ok) 2421 OEM_ID BXPC 2422 OEM_table_id BXDSDT 2423 OEM_revision 1 2424 Creator_id 1280593481 2425 Creator_revision 537399345 2426 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 2427 ... 2428 2af0: 5f 4c 30 46 00 a4 01 2429 2430Test suite: Miscellaneous changes/fixes: 2431 More cleanup and simplification of makefiles 2432 Continue compilation of test cases after a compile failure 2433 Do not perform binary compare unless both files actually exist 2434 2435iASL: Performed some code/module restructuring. Moved all memory 2436allocation functions to new modules. Two new files, aslallocate.c and 2437aslcache.c 2438 2439---------------------------------------- 244031 August 2017. Summary of changes for version 20170831: 2441 2442 24431) ACPICA kernel-resident subsystem: 2444 2445Implemented internal support for full 64-bit addresses that appear in all 2446Generic Address Structure (GAS) structures. Previously, only the lower 32 2447bits were used. Affects the use of GAS structures in the FADT and other 2448tables, as well as the GAS structures passed to the AcpiRead and 2449AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 2450 2451Added header support for the PDTT ACPI table (Processor Debug Trigger 2452Table). Full support in the iASL Data Table Compiler and disassembler is 2453forthcoming. 2454 2455 24562) iASL Compiler/Disassembler and Tools: 2457 2458iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 2459Properties Topology Table) where a flag bit was specified in the wrong 2460bit position ("Line Size Valid", bit 6). 2461 2462iASL: Implemented support for Octal integer constants as defined by the 2463ASL language grammar, per the ACPI specification. Any integer constant 2464that starts with a zero is an octal constant. For example, 2465 Store (037777, Local0) /* Octal constant */ 2466 Store (0x3FFF, Local0) /* Hex equivalent */ 2467 Store (16383, Local0) /* Decimal equivalent */ 2468 2469iASL: Improved overflow detection for 64-bit string conversions during 2470compilation of integer constants. "Overflow" in this case means a string 2471that represents an integer that is too large to fit into a 64-bit value. 2472Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 2473the low-order 32 bits with a warning, as previously implemented. Several 2474new exceptions are defined that indicate a 64-bit overflow, as well as 2475the base (radix) that was used during the attempted conversion. Examples: 2476 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 2477 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 2478 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 2479 2480iASL: Added a warning for the case where a ResourceTemplate is declared 2481with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 2482this case, the resulting template is created with a single END_TAG 2483descriptor, which is essentially useless. 2484 2485iASL: Expanded the -vw option (ignore specific warnings/remarks) to 2486include compilation error codes as well. 2487 2488---------------------------------------- 248928 July 2017. Summary of changes for version 20170728: 2490 2491 24921) ACPICA kernel-resident subsystem: 2493 2494Fixed a regression seen with small resource descriptors that could cause 2495an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2496 2497AML interpreter: Implemented a new feature that allows forward references 2498from individual named references within package objects that are 2499contained within blocks of "module-level code". This provides 2500compatibility with other ACPI implementations and supports existing 2501firmware that depends on this feature. Example: 2502 2503 Name (ABCD, 1) 2504 If (ABCD) /* An If() at module-level */ 2505 { 2506 Name (PKG1, Package() 2507 { 2508 INT1 /* Forward reference to object INT1 2509*/ 2510 }) 2511 Name (INT1, 0x1234) 2512 } 2513 2514AML Interpreter: Fixed a problem with the Alias() operator where aliases 2515to some ASL objects were not handled properly. Objects affected are: 2516Mutex, Event, and OperationRegion. 2517 2518AML Debugger: Enhanced to properly handle AML Alias objects. These 2519objects have one level of indirection which was not fully supported by 2520the debugger. 2521 2522Table Manager: Added support to detect and ignore duplicate SSDTs within 2523the XSDT/RSDT. This error in the XSDT has been seen in the field. 2524 2525EFI and EDK2 support: 2526 Enabled /WX flag for MSVC builds 2527 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2528 Added local support for 64-bit multiply and shift operations 2529 Added support to compile acpidump.efi on Windows 2530 Added OSL function stubs for interfaces not used under EFI 2531 2532Added additional support for the _DMA predefined name. _DMA returns a 2533buffer containing a resource template. This change add support within the 2534resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2535resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2536 2537 25382) iASL Compiler/Disassembler and Tools: 2539 2540iASL: Fixed a problem where the internal input line buffer(s) could 2541overflow if there are very long lines in the input ASL source code file. 2542Implemented buffer management that automatically increases the size of 2543the buffers as necessary. 2544 2545iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2546errors. If the specified exception is not raised during compilation, the 2547compiler emits an error. This is intended to support the ASL test suite, 2548but may be useful in other contexts. 2549 2550iASL: Implemented a new predefined macro, __METHOD__, which returns a 2551string containing the name of the current control method that is being 2552compiled. 2553 2554iASL: Implemented debugger and table compiler support for the SDEI ACPI 2555table (Software Delegated Exception Interface). James Morse 2556<james.morse@arm.com> 2557 2558Unix/Linux makefiles: Added an option to disable compile optimizations. 2559The disable occurs when the NOOPT flag is set to TRUE. 2560theracermaster@gmail.com 2561 2562Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2563when there are different tables for 32-bit versus 64-bit. 2564 2565Enhanced error reporting for the ASL test suite (ASLTS) by removing 2566unnecessary/verbose text, and emit the actual line number where an error 2567has occurred. These changes are intended to improve the usefulness of the 2568test suite. 2569 2570---------------------------------------- 257129 June 2017. Summary of changes for version 20170629: 2572 2573 25741) ACPICA kernel-resident subsystem: 2575 2576Tables: Implemented a deferred ACPI table verification. This is useful 2577for operating systems where the tables cannot be verified in the early 2578initialization stage due to early memory mapping limitations on some 2579architectures. Lv Zheng. 2580 2581Tables: Removed the signature validation for dynamically loaded tables. 2582Provides compatibility with other ACPI implementations. Previously, only 2583SSDT tables were allowed, as per the ACPI specification. Now, any table 2584signature can be used via the Load() operator. Lv Zheng. 2585 2586Tables: Fixed several mutex issues that could cause errors during table 2587acquisition. Lv Zheng. 2588 2589Tables: Fixed a problem where an ACPI warning could be generated if a 2590null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2591 2592Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2593AcpiPutTable interfaces. This applies to the "late stage" table loading 2594when the use of AcpiPutTable is no longer required (since the system 2595memory manager is fully running and available). Lv Zheng. 2596 2597Fixed/Reverted a regression during processing of resource descriptors 2598that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2599exception in this case. 2600 2601Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2602I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2603 2604Interpreter: Fixed a possible fault if an Alias operator with an invalid 2605or duplicate target is encountered during Alias creation in 2606AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2607 2608Added an option to use designated initializers for function pointers. 2609Kees Cook <keescook@google.com> 2610 2611 26122) iASL Compiler/Disassembler and Tools: 2613 2614iASL: Allow compilation of External declarations with target pathnames 2615that refer to existing named objects within the table. Erik Schmauss. 2616 2617iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2618FieldUnit name also is declared via External in the same table. Erik 2619Schmauss. 2620 2621iASL: Allow existing scope names within pathnames used in External 2622statements. For example: 2623 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2624 Device (ABCD) 2625 2626iASL: IORT ACPI table: Implemented changes required to decode the new 2627Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2628compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2629 2630Disassembler: Don't abort disassembly on errors from External() 2631statements. Erik Schmauss. 2632 2633Disassembler: fixed a possible fault when one of the Create*Field 2634operators references a Resource Template. ACPICA Bugzilla 1396. 2635 2636iASL: In the source code, resolved some naming inconsistences across the 2637parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2638Adds a new file, aslparseop.c 2639 2640---------------------------------------- 264131 May 2017. Summary of changes for version 20170531: 2642 2643 26440) ACPI 6.2 support: 2645 2646The ACPI specification version 6.2 has been released and is available at 2647http://uefi.org/specifications 2648 2649This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2650are summarized below. 2651 2652New ACPI tables (Table Compiler/Disassembler/Templates): 2653 HMAT (Heterogeneous Memory Attributes Table) 2654 WSMT (Windows SMM Security Mitigation Table) 2655 PPTT (Processor Properties Topology Table) 2656 2657New subtables for existing ACPI tables: 2658 HEST (New subtable, Arch-deferred machine check) 2659 SRAT (New subtable, Arch-specific affinity structure) 2660 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2661 2662Simple updates for existing ACPI tables: 2663 BGRT (two new flag bits) 2664 HEST (New bit defined for several subtables, GHES_ASSIST) 2665 2666New Resource Descriptors and Resource macros (Compiler/Disassembler): 2667 PinConfig() 2668 PinFunction() 2669 PinGroup() 2670 PinGroupConfig() 2671 PinGroupFunction() 2672 New type for hardware error notification (section 18.3.2.9) 2673 2674New predefined names/methods (Compiler/Interpreter): 2675 _HMA (Heterogeneous Memory Attributes) 2676 _LSI (Label Storage Information) 2677 _LSR (Label Storage Read) 2678 _LSW (Label Storage Write) 2679 2680ASL grammar/macro changes (Compiler): 2681 For() ASL macro, implemented with the AML while operator 2682 Extensions to Concatenate operator 2683 Support for multiple definition blocks in same ASL file 2684 Clarification for Buffer operator 2685 Allow executable AML code underneath all scopes (Devices, etc.) 2686 Clarification/change for the _OSI return value 2687 ASL grammar update for reference operators 2688 Allow a zero-length string for AML filename in DefinitionBlock 2689 2690Miscellaneous: 2691 New device object notification value 2692 Remove a notify value (0x0C) for graceful shutdown 2693 New UUIDs for processor/cache properties and 2694 physical package property 2695 New _HID, ACPI0014 (Wireless Power Calibration Device) 2696 2697 26981) ACPICA kernel-resident subsystem: 2699 2700Added support to disable ACPI events on hardware-reduced platforms. 2701Eliminates error messages of the form "Could not enable fixed event". Lv 2702Zheng 2703 2704Fixed a problem using Device/Thermal objects with the ObjectType and 2705DerefOf ASL operators. This support had not been fully/properly 2706implemented. 2707 2708Fixed a problem where if a Buffer object containing a resource template 2709was longer than the actual resource template, an error was generated -- 2710even though the AML is legal. This case has been seen in the field. 2711 2712Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2713The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2714 2715Added header file changes for the TPM2 ACPI table. Update to new version 2716of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2717 2718Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2719These interfaces are intended to be used only in conjunction with the 2720predefined _DLM method (Device Lock Method). "This object appears in a 2721device scope when AML access to the device must be synchronized with the 2722OS environment". 2723 2724Example Code and Data Size: These are the sizes for the OS-independent 2725acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2726debug version of the code includes the debug output trace mechanism and 2727has a much larger code and data size. 2728 2729 Current Release: 2730 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2731 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2732 Previous Release: 2733 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2734 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2735 2736 27372) iASL Compiler/Disassembler and Tools: 2738 2739iASL: Fixed a problem where an External() declaration could not refer to 2740a Field Unit. Erik Schmauss. 2741 2742Disassembler: Improved support for the Switch/Case operators. This 2743feature will disassemble AML code back to the original Switch operators 2744when possible, instead of an If..Else sequence. David Box 2745 2746iASL and disassembler: Improved the handling of multiple extraneous 2747parentheses for both ASL input and disassembled ASL output. 2748 2749Improved the behavior of the iASL compiler and disassembler to detect 2750improper use of external declarations 2751 2752Disassembler: Now aborts immediately upon detection of an unknown AML 2753opcode. The AML parser has no real way to recover from this, and can 2754result in the creation of an ill-formed parse tree that causes errors 2755later during the disassembly. 2756 2757All tools: Fixed a problem where the Unix application OSL did not handle 2758control-c correctly. For example, a control-c could incorrectly wake the 2759debugger. 2760 2761AcpiExec: Improved the Control-C handling and added a handler for 2762segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2763environments. 2764 2765Reduced the verbosity of the generic unix makefiles. Previously, each 2766compilation displayed the full set of compiler options. This has been 2767eliminated as the options are easily inspected within the makefiles. Each 2768compilation now results in a single line of output. 2769 2770---------------------------------------- 277103 March 2017. Summary of changes for version 20170303: 2772 2773 27740) ACPICA licensing: 2775 2776The licensing information at the start of each source code module has 2777been updated. In addition to the Intel license, the dual GPLv2/BSD 2778license has been added for completeness. Now, a single version of the 2779source code should be suitable for all ACPICA customers. This is the 2780major change for this release since it affects all source code modules. 2781 2782 27831) ACPICA kernel-resident subsystem: 2784 2785Fixed two issues with the common asltypes.h header that could cause 2786problems in some environments: (Kim Jung-uk) 2787 Removed typedef for YY_BUFFER_STATE ? 2788 Fixes an error with earlier versions of Flex. 2789 Removed use of FILE typedef (which is only defined in stdio.h) 2790 2791 27922) iASL Compiler/Disassembler and Tools: 2793 2794Disassembler: fixed a regression introduced in 20170224. A fix for a 2795memory leak related to resource descriptor tags (names) could fault when 2796the disassembler was generated with 64-bit compilers. 2797 2798The ASLTS test suite has been updated to implement a new testing 2799architecture. During generation of the suite from ASL source, both the 2800ASL and ASL+ compilers are now validated, as well as the disassembler 2801itself (Erik Schmauss). The architecture executes as follows: 2802 2803 For every ASL source module: 2804 Compile (legacy ASL compilation) 2805 Disassemble the resulting AML to ASL+ source code 2806 Compile the new ASL+ module 2807 Perform a binary compare on the legacy AML and the new ASL+ AML 2808 The ASLTS suite then executes normally using the AML binaries. 2809 2810---------------------------------------- 281124 February 2017. Summary of changes for version 20170224: 2812 2813 28141) ACPICA kernel-resident subsystem: 2815 2816Interpreter: Fixed two issues with the control method return value auto- 2817repair feature, where an attempt to double-delete an internal object 2818could result in an ACPICA warning (for _CID repair and others). No fault 2819occurs, however, because the attempted deletion (actually a release to an 2820internal cache) is detected and ignored via object poisoning. 2821 2822Debugger: Fixed an AML interpreter mutex issue during the single stepping 2823of control methods. If certain debugger commands are executed during 2824stepping, a mutex acquire/release error could occur. Lv Zheng. 2825 2826Fixed some issues generating ACPICA with the Intel C compiler by 2827restoring the original behavior and compiler-specific include file in 2828acenv.h. Lv Zheng. 2829 2830Example Code and Data Size: These are the sizes for the OS-independent 2831acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2832debug version of the code includes the debug output trace mechanism and 2833has a much larger code and data size. 2834 2835 Current Release: 2836 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2837 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2838 Previous Release: 2839 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2840 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2841 2842 28432) iASL Compiler/Disassembler and Tools: 2844 2845iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2846tool has been designed, implemented, and included in this release. The 2847key feature of this utility is that the original comments within the 2848input ASL file are preserved during the conversion process, and included 2849within the converted ASL+ file -- thus creating a transparent conversion 2850of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2851 2852 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2853converted code 2854 2855iASL/Disassembler: Improved the detection and correct disassembly of 2856Switch/Case operators. This feature detects sequences of if/elseif/else 2857operators that originated from ASL Switch/Case/Default operators and 2858emits the original operators. David Box. 2859 2860iASL: Improved the IORT ACPI table support in the following areas. Lv 2861Zheng: 2862 Clear MappingOffset if the MappingCount is zero. 2863 Fix the disassembly of the SMMU GSU interrupt offset. 2864 Update the template file for the IORT table. 2865 2866Disassembler: Enhanced the detection and disassembly of resource 2867template/descriptor within a Buffer object. An EndTag descriptor is now 2868required to have a zero second byte, since all known ASL compilers emit 2869this. This helps eliminate incorrect decisions when a buffer is 2870disassembled (false positives on resource templates). 2871 2872---------------------------------------- 287319 January 2017. Summary of changes for version 20170119: 2874 2875 28761) General ACPICA software: 2877 2878Entire source code base: Added the 2017 copyright to all source code 2879legal/licensing module headers and utility/tool signons. This includes 2880the standard Linux dual-license header. This affects virtually every file 2881in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2882the ACPICA test suite. 2883 2884 28852) iASL Compiler/Disassembler and Tools: 2886 2887iASL: Removed/fixed an inadvertent remark when a method argument 2888containing a reference is used as a target operand within the method (and 2889never used as a simple argument), as in the example below. Jeffrey Hugo. 2890 2891 dsdt.asl 1507: Store(0x1, Arg0) 2892 Remark 2146 - ^ Method Argument is never used (Arg0) 2893 2894All tools: Removed the bit width of the compiler that generated the tool 2895from the common signon for all user space tools. This proved to be 2896confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2897from the generic makefiles (Thomas Petazzoni). Example below. 2898 2899 Old: 2900 ASL+ Optimizing Compiler version 20170119-32 2901 ASL+ Optimizing Compiler version 20170119-64 2902 2903 New: 2904 ASL+ Optimizing Compiler version 20170119 2905 2906---------------------------------------- 290722 December 2016. Summary of changes for version 20161222: 2908 2909 29101) ACPICA kernel-resident subsystem: 2911 2912AML Debugger: Implemented a new mechanism to simplify and enhance 2913debugger integration into all environments, including kernel debuggers 2914and user-space utilities, as well as remote debug services. This 2915mechanism essentially consists of new OSL interfaces to support debugger 2916initialization/termination, as well as wait/notify interfaces to perform 2917the debugger handshake with the host. Lv Zheng. 2918 2919 New OSL interfaces: 2920 AcpiOsInitializeDebugger (void) 2921 AcpiOsTerminateDebugger (void) 2922 AcpiOsWaitCommandReady (void) 2923 AcpiOsNotifyCommandComplete (void) 2924 2925 New OS services layer: 2926 osgendbg.c -- Example implementation, and used for AcpiExec 2927 2928Update for Generic Address Space (GAS) support: Although the AccessWidth 2929and/or BitOffset fields of the GAS are not often used, this change now 2930fully supports these fields. This affects the internal support for FADT 2931registers, registers in other ACPI data tables, and the AcpiRead and 2932AcpiWrite public interfaces. Lv Zheng. 2933 2934Sleep support: In order to simplify integration of ACPI sleep for the 2935various host operating systems, a new OSL interface has been introduced. 2936AcpiOsEnterSleep allows the host to perform any required operations 2937before the final write to the sleep control register(s) is performed by 2938ACPICA. Lv Zheng. 2939 2940 New OSL interface: 2941 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2942 2943 Called from these internal interfaces: 2944 AcpiHwLegacySleep 2945 AcpiHwExtendedSleep 2946 2947EFI support: Added a very small EFI/ACPICA example application. Provides 2948a simple demo for EFI integration, as well as assisting with resolution 2949of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2950 2951 source/tools/efihello/efihello.c 2952 2953Local C library: Implemented several new functions to enhance ACPICA 2954portability, for environments where these clib functions are not 2955available (such as EFI). Lv Zheng: 2956 putchar 2957 getchar 2958 strpbrk 2959 strtok 2960 memmove 2961 2962Fixed a regression where occasionally a valid resource descriptor was 2963incorrectly detected as invalid at runtime, and a 2964AE_AML_NO_RESOURCE_END_TAG was returned. 2965 2966Fixed a problem with the recently implemented support that enables 2967control method invocations as Target operands to many ASL operators. 2968Warnings of this form: "Needed type [Reference], found [Processor]" were 2969seen at runtime for some method invocations. 2970 2971Example Code and Data Size: These are the sizes for the OS-independent 2972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2973debug version of the code includes the debug output trace mechanism and 2974has a much larger code and data size. 2975 2976 Current Release: 2977 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2978 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2979 Previous Release: 2980 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2981 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2982 2983 29842) iASL Compiler/Disassembler and Tools: 2985 2986Disassembler: Enhanced output by adding the capability to detect and 2987disassemble ASL Switch/Case statements back to the original ASL source 2988code instead of if/else blocks. David Box. 2989 2990AcpiHelp: Split a large file into separate files based upon 2991functionality/purpose. New files are: 2992 ahaml.c 2993 ahasl.c 2994 2995---------------------------------------- 299617 November 2016. Summary of changes for version 20161117: 2997 2998 29991) ACPICA kernel-resident subsystem: 3000 3001Table Manager: Fixed a regression introduced in 20160729, "FADT support 3002cleanup". This was an attempt to remove all references in the source to 3003the FADT version 2, which never was a legal version number. It was 3004skipped because it was an early version of 64-bit support that was 3005eventually abandoned for the current 64-bit support. 3006 3007Interpreter: Fixed a problem where runtime implicit conversion was 3008incorrectly disabled for the ASL operators below. This brings the 3009behavior into compliance with the ACPI specification: 3010 FromBCD 3011 ToBCD 3012 ToDecimalString 3013 ToHexString 3014 ToInteger 3015 ToBuffer 3016 3017Table Manager: Added a new public interface, AcpiPutTable, used to 3018release and free an ACPI table returned by AcpiGetTable and related 3019interfaces. Lv Zheng. 3020 3021Example Code and Data Size: These are the sizes for the OS-independent 3022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3023debug version of the code includes the debug output trace mechanism and 3024has a much larger code and data size. 3025 3026 Current Release: 3027 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 3028 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3029 Previous Release: 3030 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3031 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3032 3033 30342) iASL Compiler/Disassembler and Tools: 3035 3036Disassembler: Fixed a regression for disassembly of Resource Template. 3037Detection of templates in the AML stream missed some types of templates. 3038 3039iASL: Fixed a problem where an Access Size error was returned for the PCC 3040address space when the AccessSize of the GAS register is greater than a 3041DWORD. Hoan Tran. 3042 3043iASL: Implemented several grammar changes for the operators below. These 3044changes are slated for the next version of the ACPI specification: 3045 RefOf - Disallow method invocation as an operand 3046 CondRefOf - Disallow method invocation as an operand 3047 DerefOf - Disallow operands that use the result from operators 3048that 3049 do not return a reference (Changed TermArg to 3050SuperName). 3051 3052iASL: Control method invocations are now allowed for Target operands, as 3053per the ACPI specification. Removed error for using a control method 3054invocation as a Target operand. 3055 3056Disassembler: Improved detection of Resource Templates, Unicode, and 3057Strings within Buffer objects. These subtypes do not contain a specific 3058opcode to indicate the originating ASL code, and they must be detected by 3059other means within the disassembler. 3060 3061iASL: Implemented an optimization improvement for 32-bit ACPI tables 3062(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 3063only after 64-bit to 32-bit truncation. A truncation warning message is 3064still emitted, however. 3065 3066AcpiXtract: Implemented handling for both types of line terminators (LF 3067or CR/LF) so that it can accept AcpiDump output files from any system. 3068Peter Wu. 3069 3070AcpiBin: Added two new options for comparing AML files: 3071 -a: compare and display ALL mismatches 3072 -o: start compare at this offset into the second file 3073 3074---------------------------------------- 307530 September 2016. Summary of changes for version 20160930: 3076 3077 30781) ACPICA kernel-resident subsystem: 3079 3080Fixed a regression in the internal AcpiTbFindTable function where a non 3081AE_OK exception could inadvertently be returned even if the function did 3082not fail. This problem affects the following operators: 3083 DataTableRegion 3084 LoadTable 3085 3086Fixed a regression in the LoadTable operator where a load to any 3087namespace location other than the root no longer worked properly. 3088 3089Increased the maximum loop count value that will result in the 3090AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 3091prevent infinite loops within the AML interpreter and thus the host OS 3092kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 30931,048,575). 3094 3095Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 3096acpixf.h file. This allows hosts to easily configure the maximum loop 3097count at runtime. 3098 3099Removed an illegal character in the strtoul64.c file. This character 3100caused errors with some C compilers. 3101 3102Example Code and Data Size: These are the sizes for the OS-independent 3103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3104debug version of the code includes the debug output trace mechanism and 3105has a much larger code and data size. 3106 3107 Current Release: 3108 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3109 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3110 Previous Release: 3111 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 3112 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3113 3114 31152) iASL Compiler/Disassembler and Tools: 3116 3117Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 3118the simpler ASL ElseIf keyword. During the conversion, a trailing If 3119block could be lost and missing from the disassembled output. 3120 3121iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 3122the missing rule caused a parse error when using the Index operator as an 3123operand to ObjectType. This construct now compiles properly. Example: 3124 ObjectType(PKG1[4]). 3125 3126iASL: Correctly handle unresolved symbols in the hardware map file (-lm 3127option). Previously, unresolved symbols could cause a protection fault. 3128Such symbols are now marked as unresolved in the map file. 3129 3130iASL: Implemented support to allow control method invocations as an 3131operand to the ASL DeRefOf operator. Example: 3132 DeRefOf(MTH1(Local0)) 3133 3134Disassembler: Improved support for the ToPLD ASL macro. Detection of a 3135possible _PLD buffer now includes examination of both the normal buffer 3136length (16 or 20) as well as the surrounding AML package length. 3137 3138Disassembler: Fixed a problem with the decoding of complex expressions 3139within the Divide operator for ASL+. For the case where both the quotient 3140and remainder targets are specified, the entire statement cannot be 3141disassembled. Previously, the output incorrectly contained a mix of ASL- 3142and ASL+ operators. This mixed statement causes a syntax error when 3143compiled. Example: 3144 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 3145disassembled to: 3146 Divide (INT1 + 6, 128, RSLT, QUOT) 3147 3148iASL/Tools: Added support to process AML and non-AML ACPI tables 3149consistently. For the disassembler and AcpiExec, allow all types of ACPI 3150tables (AML and data tables). For the iASL -e option, allow only AML 3151tables (DSDT/SSDT). 3152 3153---------------------------------------- 315431 August 2016. Summary of changes for version 20160831: 3155 3156 31571) ACPICA kernel-resident subsystem: 3158 3159Improve support for the so-called "module-level code", which is defined 3160to be math, logical and control AML opcodes that appear outside of any 3161control method. This change improves the support by adding more opcodes 3162that can be executed in the manner. Some other issues have been solved, 3163and the ASL grammar changes to support such code under all scope 3164operators (Device, etc.) are complete. Lv Zheng. 3165 3166UEFI support: these OSL functions have been implemented. This is an 3167additional step toward supporting the AcpiExec utility natively (with 3168full hardware access) under UEFI. Marcelo Ferreira. 3169 AcpiOsReadPciConfiguration 3170 AcpiOsWritePciConfiguration 3171 3172Fixed a possible mutex error during control method auto-serialization. Lv 3173Zheng. 3174 3175Updated support for the Generic Address Structure by fully implementing 3176all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 3177Zheng. 3178 3179Updated the return value for the internal _OSI method. Instead of 31800xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 3181for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 3182implementations, and will be reflected and clarified in the next version 3183of the ACPI specification. 3184 3185Implemented two new table events that can be passed to an ACPICA table 3186handler. These events are used to indicate a table installation or 3187uninstallation. These events are used in addition to existed table load 3188and unload events. Lv Zheng. 3189 3190Implemented a cleanup for all internal string-to-integer conversions. 3191Consolidate multiple versions of this functionality and limit possible 3192bases to either 10 or 16 to simplify the code. Adds a new file, 3193utstrtoul64. 3194 3195Cleanup the inclusion order of the various compiler-specific headers. 3196This simplifies build configuration management. The compiler-specific 3197headers are now split out from the host-specific headers. Lv Zheng. 3198 3199Example Code and Data Size: These are the sizes for the OS-independent 3200acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3201debug version of the code includes the debug output trace mechanism and 3202has a much larger code and data size. 3203 3204 Current Release: 3205 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 3206 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3207 3208 32092) iASL Compiler/Disassembler and Tools: 3210 3211iASL/AcpiExec: Added a command line option to display the build date/time 3212of the tool (-vd). This can be useful to verify that the correct version 3213of the tools are being used. 3214 3215AML Debugger: Implemented a new subcommand ("execute predef") to execute 3216all predefined control methods and names within the current namespace. 3217This can be useful for debugging problems with ACPI tables and the ACPI 3218namespace. 3219 3220---------------------------------------- 322129 July 2016. Summary of changes for version 20160729: 3222 3223 32241) ACPICA kernel-resident subsystem: 3225 3226Implemented basic UEFI support for the various ACPICA tools. This 3227includes: 32281) An OSL to implement the various AcpiOs* interfaces on UEFI. 32292) Support to obtain the ACPI tables on UEFI. 32303) Local implementation of required C library functions not available on 3231UEFI. 32324) A front-end (main) function for the tools for UEFI-related 3233initialization. 3234 3235The initial deployment of this support is the AcpiDump utility executing 3236as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 3237Current environments supported are Linux/Unix. MSVC generation is not 3238supported at this time. See the generate/efi/README file for build 3239instructions. Lv Zheng. 3240 3241Future plans include porting the AcpiExec utility to execute natively on 3242the platform with I/O and memory access. This will allow viewing/dump of 3243the platform namespace and native execution of ACPI control methods that 3244access the actual hardware. To fully implement this support, the OSL 3245functions below must be implemented with UEFI interfaces. Any community 3246help in the implementation of these functions would be appreciated: 3247 AcpiOsReadPort 3248 AcpiOsWritePort 3249 AcpiOsReadMemory 3250 AcpiOsWriteMemory 3251 AcpiOsReadPciConfiguration 3252 AcpiOsWritePciConfiguration 3253 3254Restructured and standardized the C library configuration for ACPICA, 3255resulting in the various configuration options below. This includes a 3256global restructuring of the compiler-dependent and platform-dependent 3257include files. These changes may affect the existing platform-dependent 3258configuration files on some hosts. Lv Zheng. 3259 3260The current C library configuration options appear below. For any issues, 3261it may be helpful to examine the existing compiler-dependent and 3262platform-dependent files as examples. Lv Zheng. 3263 32641) Linux kernel: 3265 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3266library. 3267 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 32682) Unix/Windows/BSD applications: 3269 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 3270library. 3271 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 32723) UEFI applications: 3273 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3274library. 3275 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 32764) UEFI applications (EDK2/StdLib): 3277 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 3278 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 3279 3280 3281AML interpreter: "module-level code" support. Allows for execution of so- 3282called "executable" AML code (math/logical operations, etc.) outside of 3283control methods not just at the module level (top level) but also within 3284any scope declared outside of a control method - Scope{}, Device{}, 3285Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 3286 3287Simplified the configuration of the "maximum AML loops" global option by 3288adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 3289modified at runtime. 3290 3291 3292Example Code and Data Size: These are the sizes for the OS-independent 3293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3294debug version of the code includes the debug output trace mechanism and 3295has a much larger code and data size. 3296 3297 Current Release: 3298 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 3299 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 3300 3301 33022) iASL Compiler/Disassembler and Tools: 3303 3304iASL: Add full support for the RASF ACPI table (RAS Features Table). 3305Includes disassembler, data table compiler, and header support. 3306 3307iASL Expand "module-level code" support. Allows for 3308compilation/disassembly of so-called "executable" AML code (math/logical 3309operations, etc.) outside of control methods not just at the module level 3310(top level) but also within any scope declared outside of a control 3311method - Scope{}, Device{}, Processor{}, PowerResource{}, and 3312ThermalZone{}. 3313 3314AcpiDump: Added support for dumping all SSDTs on newer versions of 3315Windows. These tables are now easily available -- SSDTs are not available 3316through the registry on older versions. 3317 3318---------------------------------------- 331927 May 2016. Summary of changes for version 20160527: 3320 3321 33221) ACPICA kernel-resident subsystem: 3323 3324Temporarily reverted the new arbitrary bit length/alignment support in 3325AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 3326a number of regressions with the new code that need to be fully resolved 3327and tested before this support can be finally integrated into ACPICA. 3328Apologies for any inconveniences these issues may have caused. 3329 3330The ACPI message macros are not configurable (ACPI_MSG_ERROR, 3331ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 3332and ACPI_MSG_BIOS_WARNING). Lv Zheng. 3333 3334Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 3335option. Adds a new return macro, return_STR. Junk-uk Kim. 3336 3337Example Code and Data Size: These are the sizes for the OS-independent 3338acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3339debug version of the code includes the debug output trace mechanism and 3340has a much larger code and data size. 3341 3342 Current Release: 3343 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 3344 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3345 Previous Release: 3346 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3347 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 3348 3349---------------------------------------- 335022 April 2016. Summary of changes for version 20160422: 3351 33521) ACPICA kernel-resident subsystem: 3353 3354Fixed a regression in the GAS (generic address structure) arbitrary bit 3355support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 3356and incorrect return values. Lv Zheng. ACPICA BZ 1270. 3357 3358ACPI 6.0: Added support for new/renamed resource macros. One new argument 3359was added to each of these macros, and the original name has been 3360deprecated. The AML disassembler will always disassemble to the new 3361names. Support for the new macros was added to iASL, disassembler, 3362resource manager, and the acpihelp utility. ACPICA BZ 1274. 3363 3364 I2cSerialBus -> I2cSerialBusV2 3365 SpiSerialBus -> SpiSerialBusV2 3366 UartSerialBus -> UartSerialBusV2 3367 3368ACPI 6.0: Added support for a new integer field that was appended to the 3369package object returned by the _BIX method. This adds iASL compile-time 3370and AML runtime error checking. ACPICA BZ 1273. 3371 3372ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 3373Subspace Type2" (Headers, Disassembler, and data table compiler). 3374 3375Example Code and Data Size: These are the sizes for the OS-independent 3376acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3377debug version of the code includes the debug output trace mechanism and 3378has a much larger code and data size. 3379 3380 Current Release: 3381 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3382 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3383 Previous Release: 3384 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3385 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3386 3387 33882) iASL Compiler/Disassembler and Tools: 3389 3390iASL: Implemented an ASL grammar extension to allow/enable executable 3391"module-level code" to be created and executed under the various 3392operators that create new scopes. This type of AML code is already 3393supported in all known AML interpreters, and the grammar change will 3394appear in the next version of the ACPI specification. Simplifies the 3395conditional runtime creation of named objects under these object types: 3396 3397 Device 3398 PowerResource 3399 Processor 3400 Scope 3401 ThermalZone 3402 3403iASL: Implemented a new ASL extension, a "For" loop macro to add greater 3404ease-of-use to the ASL language. The syntax is similar to the 3405corresponding C operator, and is implemented with the existing AML While 3406opcode -- thus requiring no changes to existing AML interpreters. 3407 3408 For (Initialize, Predicate, Update) {TermList} 3409 3410Grammar: 3411 ForTerm := 3412 For ( 3413 Initializer // Nothing | TermArg => ComputationalData 3414 Predicate // Nothing | TermArg => ComputationalData 3415 Update // Nothing | TermArg => ComputationalData 3416 ) {TermList} 3417 3418 3419iASL: The _HID/_ADR detection and validation has been enhanced to search 3420under conditionals in order to allow these objects to be conditionally 3421created at runtime. 3422 3423iASL: Fixed several issues with the constant folding feature. The 3424improvement allows better detection and resolution of statements that can 3425be folded at compile time. ACPICA BZ 1266. 3426 3427iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 3428conversion to the ASL ElseIf operator where incorrect ASL code could be 3429generated. 3430 3431iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 3432sometimes an extra (and extraneous) set of parentheses were emitted for 3433some combinations of operators. Although this did not cause any problems 3434with recompilation of the disassembled code, it made the code more 3435difficult to read. David Box. ACPICA BZ 1231. 3436 3437iASL: Changed to ignore the unreferenced detection for predefined names 3438of resource descriptor elements, when the resource descriptor is 3439created/defined within a control method. 3440 3441iASL: Disassembler: Fix a possible fault with externally declared Buffer 3442objects. 3443 3444---------------------------------------- 344518 March 2016. Summary of changes for version 20160318: 3446 34471) ACPICA kernel-resident subsystem: 3448 3449Added support for arbitrary bit lengths and bit offsets for registers 3450defined by the Generic Address Structure. Previously, only aligned bit 3451lengths of 8/16/32/64 were supported. This was sufficient for many years, 3452but recently some machines have been seen that require arbitrary bit- 3453level support. ACPICA BZ 1240. Lv Zheng. 3454 3455Fixed an issue where the \_SB._INI method sometimes must be evaluated 3456before any _REG methods are evaluated. Lv Zheng. 3457 3458Implemented several changes related to ACPI table support 3459(Headers/Disassembler/TableCompiler): 3460NFIT: For ACPI 6.1, updated to add some additional new fields and 3461constants. 3462FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 34636). 3464DMAR: Added new constants per the 10/2014 DMAR spec. 3465IORT: Added new subtable per the 10/2015 IORT spec. 3466HEST: For ACPI 6.1, added new constants and new subtable. 3467DBG2: Added new constants per the 12/2015 DBG2 spec. 3468FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 3469ACPICA BZ 1249. 3470ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 3471 3472Updated header support for the DMAR table to match the current version of 3473the related spec. 3474 3475Added extensions to the ASL Concatenate operator to allow any ACPI object 3476to be passed as an operand. Any object other than Integer/String/Buffer 3477simply returns a string containing the object type. This extends the 3478usefulness of the Printf macros. Previously, Concatenate would abort the 3479control method if a non-data object was encountered. 3480 3481ACPICA source code: Deployed the C "const" keyword across the source code 3482where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 3483 3484Example Code and Data Size: These are the sizes for the OS-independent 3485acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3486debug version of the code includes the debug output trace mechanism and 3487has a much larger code and data size. 3488 3489 Current Release: 3490 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3491 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3492 Previous Release: 3493 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3494 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3495 3496 34972) iASL Compiler/Disassembler and Tools: 3498 3499iASL/Disassembler: Improved the heuristic used to determine the number of 3500arguments for an externally defined control method (a method in another 3501table). Although this is an improvement, there is no deterministic way to 3502"guess" the number of method arguments. Only the ACPI 6.0 External opcode 3503will completely solve this problem as it is deployed (automatically) in 3504newer BIOS code. 3505 3506iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3507statements that could cause errors when the disassembled file is 3508compiled. ACPICA BZ 1243. David Box. 3509 3510iASL: Fixed a regression caused by the merger of the two versions of the 3511local strtoul64. Because of a dependency on a global variable, strtoul64 3512could return an error for integers greater than a 32-bit value. ACPICA BZ 35131260. 3514 3515iASL: Fixed a regression where a fault could occur for an ASL Return 3516statement if it invokes a control method that is not resolved. ACPICA BZ 35171264. 3518 3519AcpiXtract: Improved input file validation: detection of binary files and 3520non-acpidump text files. 3521 3522---------------------------------------- 352312 February 2016. Summary of changes for version 20160212: 3524 35251) ACPICA kernel-resident subsystem: 3526 3527Implemented full support for the ACPI 6.1 specification (released in 3528January). This version of the specification is available at: 3529http://www.uefi.org/specifications 3530 3531Only a relatively small number of changes were required in ACPICA to 3532support ACPI 6.1, in these areas: 3533- New predefined names 3534- New _HID values 3535- A new subtable for HEST 3536- A few other header changes for new values 3537 3538Ensure \_SB_._INI is executed before any _REG methods are executed. There 3539appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3540 3541Reverted a change made in version 20151218 which enabled method 3542invocations to be targets of various ASL operators (SuperName and Target 3543grammar elements). While the new behavior is supported by the ACPI 3544specification, other AML interpreters do not support this behavior and 3545never will. The ACPI specification will be updated for ACPI 6.2 to remove 3546this support. Therefore, the change was reverted to the original ACPICA 3547behavior. 3548 3549ACPICA now supports the GCC 6 compiler. 3550 3551Current Release: (Note: build changes increased sizes) 3552 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3553 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3554Previous Release: 3555 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3556 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3557 3558 35592) iASL Compiler/Disassembler and Tools: 3560 3561Completed full support for the ACPI 6.0 External() AML opcode. The 3562compiler emits an external AML opcode for each ASL External statement. 3563This opcode is used by the disassembler to assist with the disassembly of 3564external control methods by specifying the required number of arguments 3565for the method. AML interpreters do not use this opcode. To ensure that 3566interpreters do not even see the opcode, a block of one or more external 3567opcodes is surrounded by an "If(0)" construct. As this feature becomes 3568commonly deployed in BIOS code, the ability of disassemblers to correctly 3569disassemble AML code will be greatly improved. David Box. 3570 3571iASL: Implemented support for an optional cross-reference output file. 3572The -lx option will create a the cross-reference file with the suffix 3573"xrf". Three different types of cross-reference are created in this file: 3574- List of object references made from within each control method 3575- Invocation (caller) list for each user-defined control method 3576- List of references to each non-method object in the namespace 3577 3578iASL: Method invocations as ASL Target operands are now disallowed and 3579flagged as errors in preparation for ACPI 6.2 (see the description of the 3580problem above). 3581 3582---------------------------------------- 35838 January 2016. Summary of changes for version 20160108: 3584 35851) ACPICA kernel-resident subsystem: 3586 3587Updated all ACPICA copyrights and signons to 2016: Added the 2016 3588copyright to all source code module headers and utility/tool signons. 3589This includes the standard Linux dual-license header. This affects 3590virtually every file in the ACPICA core subsystem, iASL compiler, all 3591ACPICA utilities, and the ACPICA test suite. 3592 3593Fixed a regression introduced in version 20151218 concerning the 3594execution of so-called module-level ASL/AML code. Namespace objects 3595created under a module-level If() construct were not properly/fully 3596entered into the namespace and could cause an interpreter fault when 3597accessed. 3598 3599Example Code and Data Size: These are the sizes for the OS-independent 3600acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3601debug version of the code includes the debug output trace mechanism and 3602has a much larger code and data size. 3603 3604Current Release: 3605 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3606 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3607 Previous Release: 3608 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3609 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3610 3611 36122) iASL Compiler/Disassembler and Tools: 3613 3614Fixed a problem with the compilation of the GpioIo and GpioInt resource 3615descriptors. The _PIN field name was incorrectly defined to be an array 3616of 32-bit values, but the _PIN values are in fact 16 bits each. This 3617would cause incorrect bit width warnings when using Word (16-bit) fields 3618to access the descriptors. 3619 3620 3621---------------------------------------- 362218 December 2015. Summary of changes for version 20151218: 3623 36241) ACPICA kernel-resident subsystem: 3625 3626Implemented per-AML-table execution of "module-level code" as individual 3627ACPI tables are loaded into the namespace during ACPICA initialization. 3628In other words, any module-level code within an AML table is executed 3629immediately after the table is loaded, instead of batched and executed 3630after all of the tables have been loaded. This provides compatibility 3631with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3632David Box. 3633 3634To fully support the feature above, the default operation region handlers 3635for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3636installed before any ACPI tables are loaded. This enables module-level 3637code to access these address spaces during the table load and module- 3638level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3639Box. 3640 3641Implemented several changes to the internal _REG support in conjunction 3642with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3643utilities for the changes above. Although these tools were changed, host 3644operating systems that simply use the default handlers for SystemMemory, 3645SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3646 3647For example, in the code below, DEV1 is conditionally added to the 3648namespace by the DSDT via module-level code that accesses an operation 3649region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3650created immediately after the DSDT is loaded in order for the SSDT to 3651successfully reference DEV1. Previously, this code would cause an 3652AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3653fully supported by ACPICA. 3654 3655 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3656 { 3657 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3658 Field (OPR1, AnyAcc, NoLock, Preserve) 3659 { 3660 FLD1, 1 3661 } 3662 If (FLD1) 3663 { 3664 Device (\DEV1) 3665 { 3666 } 3667 } 3668 } 3669 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3670 { 3671 External (\DEV1, DeviceObj) 3672 Scope (\DEV1) 3673 { 3674 } 3675 } 3676 3677Fixed an AML interpreter problem where control method invocations were 3678not handled correctly when the invocation was itself a SuperName argument 3679to another ASL operator. In these cases, the method was not invoked. 3680ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3681argument: 3682 Store 3683 Acquire, Wait 3684 CondRefOf, RefOf 3685 Decrement, Increment 3686 Load, Unload 3687 Notify 3688 Signal, Release, Reset 3689 SizeOf 3690 3691Implemented automatic String-to-ObjectReference conversion support for 3692packages returned by predefined names (such as _DEP). A common BIOS error 3693is to add double quotes around an ObjectReference namepath, which turns 3694the reference into an unexpected string object. This support detects the 3695problem and corrects it before the package is returned to the caller that 3696invoked the method. Lv Zheng. 3697 3698Implemented extensions to the Concatenate operator. Concatenate now 3699accepts any type of object, it is not restricted to simply 3700Integer/String/Buffer. For objects other than these 3 basic data types, 3701the argument is treated as a string containing the name of the object 3702type. This expands the utility of Concatenate and the Printf/Fprintf 3703macros. ACPICA BZ 1222. 3704 3705Cleaned up the output of the ASL Debug object. The timer() value is now 3706optional and no longer emitted by default. Also, the basic data types of 3707Integer/String/Buffer are simply emitted as their values, without a data 3708type string -- since the data type is obvious from the output. ACPICA BZ 37091221. 3710 3711Example Code and Data Size: These are the sizes for the OS-independent 3712acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3713debug version of the code includes the debug output trace mechanism and 3714has a much larger code and data size. 3715 3716 Current Release: 3717 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3718 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3719 Previous Release: 3720 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3721 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3722 3723 37242) iASL Compiler/Disassembler and Tools: 3725 3726iASL: Fixed some issues with the ASL Include() operator. This operator 3727was incorrectly defined in the iASL parser rules, causing a new scope to 3728be opened for the code within the include file. This could lead to 3729several issues, including allowing ASL code that is technically illegal 3730and not supported by AML interpreters. Note, this does not affect the 3731related #include preprocessor operator. ACPICA BZ 1212. 3732 3733iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3734operator is essentially an ASL macro since there is no AML opcode 3735associated with it. The code emitted by the iASL compiler for ElseIf is 3736an Else opcode followed immediately by an If opcode. The disassembler 3737will now emit an ElseIf if it finds an Else immediately followed by an 3738If. This simplifies the decoded ASL, especially for deeply nested 3739If..Else and large Switch constructs. Thus, the disassembled code more 3740closely follows the original source ASL. ACPICA BZ 1211. Example: 3741 3742 Old disassembly: 3743 Else 3744 { 3745 If (Arg0 == 0x02) 3746 { 3747 Local0 = 0x05 3748 } 3749 } 3750 3751 New disassembly: 3752 ElseIf (Arg0 == 0x02) 3753 { 3754 Local0 = 0x05 3755 } 3756 3757AcpiExec: Added support for the new module level code behavior and the 3758early region installation. This required a small change to the 3759initialization, since AcpiExec must install its own operation region 3760handlers. 3761 3762AcpiExec: Added support to make the debug object timer optional. Default 3763is timer disabled. This cleans up the debug object output -- the timer 3764data is rarely used. 3765 3766AcpiExec: Multiple ACPI tables are now loaded in the order that they 3767appear on the command line. This can be important when there are 3768interdependencies/references between the tables. 3769 3770iASL/Templates. Add support to generate template files with multiple 3771SSDTs within a single output file. Also added ommand line support to 3772specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 37731223, 1225. 3774 3775 3776---------------------------------------- 377724 November 2015. Summary of changes for version 20151124: 3778 37791) ACPICA kernel-resident subsystem: 3780 3781Fixed a possible regression for a previous update to FADT handling. The 3782FADT no longer has a fixed table ID, causing some issues with code that 3783was hardwired to a specific ID. Lv Zheng. 3784 3785Fixed a problem where the method auto-serialization could interfere with 3786the current SyncLevel. This change makes the auto-serialization support 3787transparent to the SyncLevel support and management. 3788 3789Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3790interface is intended for early access to the namespace during the 3791initial namespace device discovery walk. The _SUB method has been seen to 3792access operation regions in some cases, causing errors because the 3793operation regions are not fully initialized. 3794 3795AML Debugger: Fixed some issues with the terminate/quit/exit commands 3796that can cause faults. Lv Zheng. 3797 3798AML Debugger: Add thread ID support so that single-step mode only applies 3799to the AML Debugger thread. This prevents runtime errors within some 3800kernels. Lv Zheng. 3801 3802Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3803methods that are invoked by this interface are optional, removed warnings 3804emitted for the case where one or more of these methods do not exist. 3805ACPICA BZ 1208, original change by Prarit Bhargava. 3806 3807Made a major pass through the entire ACPICA source code base to 3808standardize formatting that has diverged a bit over time. There are no 3809functional changes, but this will of course cause quite a few code 3810differences from the previous ACPICA release. 3811 3812Example Code and Data Size: These are the sizes for the OS-independent 3813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3814debug version of the code includes the debug output trace mechanism and 3815has a much larger code and data size. 3816 3817 Current Release: 3818 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3819 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3820 Previous Release: 3821 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3822 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3823 3824 38252) iASL Compiler/Disassembler and Tools: 3826 3827iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3828definition blocks within a single ASL file and the resulting AML file. 3829Support for this type of file was also added to the various tools that 3830use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3831example code below shows two definition blocks within the same file: 3832 3833 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 38340x12345678) 3835 { 3836 } 3837 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3838 { 3839 } 3840 3841iASL: Enhanced typechecking for the Name() operator. All expressions for 3842the value of the named object must be reduced/folded to a single constant 3843at compile time, as per the ACPI specification (the AML definition of 3844Name()). 3845 3846iASL: Fixed some code indentation issues for the -ic and -ia options (C 3847and assembly headers). Now all emitted code correctly begins in column 1. 3848 3849iASL: Added an error message for an attempt to open a Scope() on an 3850object defined in an SSDT. The DSDT is always loaded into the namespace 3851first, so any attempt to open a Scope on an SSDT object will fail at 3852runtime. 3853 3854 3855---------------------------------------- 385630 September 2015. Summary of changes for version 20150930: 3857 38581) ACPICA kernel-resident subsystem: 3859 3860Debugger: Implemented several changes and bug fixes to assist support for 3861the in-kernel version of the AML debugger. Lv Zheng. 3862- Fix the "predefined" command for in-kernel debugger. 3863- Do not enter debug command loop for the help and version commands. 3864- Disallow "execute" command during execution/single-step of a method. 3865 3866Interpreter: Updated runtime typechecking for all operators that have 3867target operands. The operand is resolved and validated that it is legal. 3868For example, the target cannot be a non-data object such as a Device, 3869Mutex, ThermalZone, etc., as per the ACPI specification. 3870 3871Debugger: Fixed the double-mutex user I/O handshake to work when local 3872deadlock detection is enabled. 3873 3874Debugger: limited display of method locals and arguments (LocalX and 3875ArgX) to only those that have actually been initialized. This prevents 3876lines of extraneous output. 3877 3878Updated the definition of the NFIT table to correct the bit polarity of 3879one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3880 3881Example Code and Data Size: These are the sizes for the OS-independent 3882acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3883debug version of the code includes the debug output trace mechanism and 3884has a much larger code and data size. 3885 3886 Current Release: 3887 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3888 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3889 Previous Release: 3890 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3891 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3892 3893 38942) iASL Compiler/Disassembler and Tools: 3895 3896iASL: Improved the compile-time typechecking for operands of many of the 3897ASL operators: 3898 3899-- Added an option to disable compiler operand/operator typechecking (- 3900ot). 3901 3902-- For the following operators, the TermArg operands are now validated 3903when possible to be Integer data objects: BankField, OperationRegion, 3904DataTableRegion, Buffer, and Package. 3905 3906-- Store (Source, Target): Both the source and target operands are 3907resolved and checked that the operands are both legal. For example, 3908neither operand can be a non-data object such as a Device, Mutex, 3909ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3910operator can be used to store an object to any type of target object. 3911 3912-- Store (Source, Target): If the source is a Package object, the target 3913must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3914is a Package, the source must also be a Package. 3915 3916-- Store (Source, Target): A warning is issued if the source and target 3917resolve to the identical named object. 3918 3919-- Store (Source, <method invocation>): An error is generated for the 3920target method invocation, as this construct is not supported by the AML 3921interpreter. 3922 3923-- For all ASL math and logic operators, the target operand must be a 3924data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3925includes the function return value also. 3926 3927-- External declarations are also included in the typechecking where 3928possible. External objects defined using the UnknownObj keyword cannot be 3929typechecked, however. 3930 3931iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3932operator: 3933- Legacy code: Index(PKG1, 3) 3934- New ASL+ code: PKG1[3] 3935This completes the ACPI 6.0 ASL+ support as it was the only operator not 3936supported. 3937 3938iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3939spaces were inadvertently appended to the filename, causing file access 3940and deletion problems on some systems. 3941 3942ASL Test Suite (ASLTS): Updated the master makefile to generate all 3943possible compiler output files when building the test suite -- thus 3944exercising these features of the compiler. These files are automatically 3945deleted when the test suite exits. 3946 3947 3948---------------------------------------- 394918 August 2015. Summary of changes for version 20150818: 3950 39511) ACPICA kernel-resident subsystem: 3952 3953Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3954Zheng. ACPICA BZ 1186. 3955 3956Completed development to ensure that the ACPICA Disassembler and Debugger 3957are fully standalone components of ACPICA. Removed cross-component 3958dependences. Lv Zheng. 3959 3960The max-number-of-AML-loops is now runtime configurable (previously was 3961compile-time only). This is essentially a loop timeout to force-abort 3962infinite AML loops. ACPCIA BZ 1192. 3963 3964Debugger: Cleanup output to dump ACPI names and namepaths without any 3965trailing underscores. Lv Zheng. ACPICA BZ 1135. 3966 3967Removed unnecessary conditional compilations across the Debugger and 3968Disassembler components where entire modules could be left uncompiled. 3969 3970The aapits test is deprecated and has been removed from the ACPICA git 3971tree. The test has never been completed and has not been maintained, thus 3972becoming rather useless. ACPICA BZ 1015, 794. 3973 3974A batch of small changes to close bugzilla and other reports: 3975- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3976- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3977- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3978- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3979Moore. 3980- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3981ACPICA BZ 1184. 3982- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3983operators. 3984- Debugger: Split debugger initialization/termination interfaces. Lv 3985Zheng. 3986- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3987identification. 3988- AcpiExec: Add debug message during _REG method phase during table 3989load/init. 3990- AcpiNames: Fix a regression where some output was missing and no longer 3991emitted. 3992- Debugger: General cleanup and simplification. Lv Zheng. 3993- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3994 3995Example Code and Data Size: These are the sizes for the OS-independent 3996acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3997debug version of the code includes the debug output trace mechanism and 3998has a much larger code and data size. 3999 4000 Current Release: 4001 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 4002 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 4003 Previous Release: 4004 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4005 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4006 4007 40082) iASL Compiler/Disassembler and Tools: 4009 4010AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 4011were not handled properly and caused load errors. Now, properly invoke 4012and use the ACPICA auto-reallocate mechanism for ACPI table data 4013structures. ACPICA BZ 1188 4014 4015AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 4016BZ 1190. 4017 4018AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 4019AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 4020executed during initialization. ACPICA BZ 1187, 1189. 4021 4022iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 4023that corresponds to each disassembled ASL statement, to simplify 4024debugging. ACPICA BZ 1191. 4025 4026Debugger: Add option to the "objects" command to display a summary of the 4027current namespace objects (Object type and count). This is displayed if 4028the command is entered with no arguments. 4029 4030AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 4031 4032 4033---------------------------------------- 403417 July 2015. Summary of changes for version 20150717: 4035 40361) ACPICA kernel-resident subsystem: 4037 4038Improved the partitioning between the Debugger and Disassembler 4039components. This allows the Debugger to be used standalone within kernel 4040code without the Disassembler (which is used for single stepping also). 4041This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 4042 4043Debugger: Implemented a new command to trace the execution of control 4044methods (Trace). This is especially useful for the in-kernel version of 4045the debugger when file I/O may not be available for method trace output. 4046See the ACPICA reference for more information. Lv Zheng. 4047 4048Moved all C library prototypes (used for the local versions of these 4049functions when requested) to a new header, acclib.h 4050Cleaned up the use of non-ANSI C library functions. These functions are 4051implemented locally in ACPICA. Moved all such functions to a common 4052source file, utnonansi.c 4053 4054Debugger: Fixed a problem with the "!!" command (get last command 4055executed) where the debugger could enter an infinite loop and eventually 4056crash. 4057 4058Removed the use of local macros that were used for some of the standard C 4059library functions to automatically cast input parameters. This mostly 4060affected the is* functions where the input parameter is defined to be an 4061int. This required a few modifications to the main ACPICA source code to 4062provide casting for these functions and eliminate possible compiler 4063warnings for these parameters. 4064 4065Across the source code, added additional status/error checking to resolve 4066issues discovered by static source code analysis tools such as Coverity. 4067 4068Example Code and Data Size: These are the sizes for the OS-independent 4069acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4070debug version of the code includes the debug output trace mechanism and 4071has a much larger code and data size. 4072 4073 Current Release: 4074 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4075 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4076 Previous Release: 4077 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4078 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4079 4080 40812) iASL Compiler/Disassembler and Tools: 4082 4083iASL: Fixed a regression where the device map file feature no longer 4084worked properly when used in conjunction with the disassembler. It only 4085worked properly with the compiler itself. 4086 4087iASL: Implemented a new warning for method LocalX variables that are set 4088but never used (similar to a C compiler such as gcc). This also applies 4089to ArgX variables that are not defined by the parent method, and are 4090instead (legally) used as local variables. 4091 4092iASL/Preprocessor: Finished the pass-through of line numbers from the 4093preprocessor to the compiler. This ensures that compiler errors/warnings 4094have the correct original line numbers and filenames, regardless of any 4095#include files. 4096 4097iASL/Preprocessor: Fixed a couple of issues with comment handling and the 4098pass-through of comments to the preprocessor output file (which becomes 4099the compiler input file). Also fixed a problem with // comments that 4100appear after a math expression. 4101 4102iASL: Added support for the TCPA server table to the table compiler and 4103template generator. (The client table was already previously supported) 4104 4105iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 4106identify the iASL compiler. 4107 4108Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 4109multiple times. The new names are ACPI_SIGN_NEGATIVE and 4110ACPI_SIGN_POSITIVE. 4111 4112AcpiHelp: Update to expand help messages for the iASL preprocessor 4113directives. 4114 4115 4116---------------------------------------- 411719 June 2015. Summary of changes for version 20150619: 4118 4119Two regressions in version 20150616 have been addressed: 4120 4121Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 4122etc.) This update changes ACPICA to only use the standard headers for 4123functions, or the prototypes for the local versions of the C library 4124functions. Across the source code, this required some additional casts 4125for some Clib invocations for portability. Moved all local prototypes to 4126a new file, acclib.h 4127 4128Fixes several problems with recent changes to the handling of the FACS 4129table that could cause some systems not to boot. 4130 4131 4132---------------------------------------- 413316 June 2015. Summary of changes for version 20150616: 4134 4135 41361) ACPICA kernel-resident subsystem: 4137 4138Across the entire ACPICA source code base, the various macros for the C 4139library functions (such as ACPI_STRLEN, etc.) have been removed and 4140replaced by the standard C library names (strlen, etc.) The original 4141purpose for these macros is no longer applicable. This simplification 4142reduces the number of macros used in the ACPICA source code 4143significantly, improving readability and maintainability. 4144 4145Implemented support for a new ACPI table, the OSDT. This table, the 4146"override" SDT, can be loaded directly by the host OS at boot time. It 4147enables the replacement of existing namespace objects that were installed 4148via the DSDT and/or SSDTs. The primary purpose for this is to replace 4149buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 4150for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 4151Moore. 4152 4153Added support for systems with (improperly) two FACS tables -- a "32-bit" 4154table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 4155X field). This change will support both automatically. There continues to 4156be systems found with this issue. This support requires a change to the 4157AcpiSetFirmwareWakingVector interface. Also, a public global variable has 4158been added to allow the host to select which FACS is desired 4159(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 4160details Lv Zheng. 4161 4162Added a new feature to allow for systems that do not contain an FACS. 4163Although this is already supported on hardware-reduced platforms, the 4164feature has been extended for all platforms. The reasoning is that we do 4165not want to abort the entire ACPICA initialization just because the 4166system is seriously buggy and has no FACS. 4167 4168Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 4169not correctly transcribed from the ACPI specification in ACPICA version 417020150515. 4171 4172Implemented support for the _CLS object in the AcpiGetObjectInfo external 4173interface. 4174 4175Updated the definitions of the TCPA and TPM2 ACPI tables to the more 4176recent TCG ACPI Specification, December 14, 2014. Table disassembler and 4177compiler also updated. Note: The TCPA "server" table is not supported by 4178the disassembler/table-compiler at this time. 4179 4180ACPI 6.0: Added definitions for the new GIC version field in the MADT. 4181 4182Example Code and Data Size: These are the sizes for the OS-independent 4183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4184debug version of the code includes the debug output trace mechanism and 4185has a much larger code and data size. 4186 4187 Current Release: 4188 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4189 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4190 Previous Release: 4191 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4192 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4193 4194 41952) iASL Compiler/Disassembler and Tools: 4196 4197Disassembler: Fixed a problem with the new symbolic operator disassembler 4198where incorrect ASL code could be emitted in some cases for the "non- 4199commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 4200ShiftRight. The actual problem cases seem to be rather unusual in common 4201ASL code, however. David Box. 4202 4203Modified the linux version of acpidump to obtain ACPI tables from not 4204just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 4205Zheng. 4206 4207iASL: Fixed a problem where the user preprocessor output file (.i) 4208contained extra data that was not expected. The compiler was using this 4209file as a temporary file and passed through #line directives in order to 4210keep compiler error messages in sync with the input file and line number 4211across multiple include files. The (.i) is no longer a temporary file as 4212the compiler uses a new, different file for the original purpose. 4213 4214iASL: Fixed a problem where comments within the original ASL source code 4215file were not passed through to the preprocessor output file, nor any 4216listing files. 4217 4218iASL: Fixed some issues for the handling of the "#include" preprocessor 4219directive and the similar (but not the same) "Include" ASL operator. 4220 4221iASL: Add support for the new OSDT in both the disassembler and compiler. 4222 4223iASL: Fixed a problem with the constant folding support where a Buffer 4224object could be incorrectly generated (incorrectly formed) during a 4225conversion to a Store() operator. 4226 4227AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 4228description text for the _REV predefined name. _REV now permanently 4229returns 2, as per the ACPI 6.0 specification. 4230 4231Debugger: Enhanced the output of the Debug ASL object for references 4232produced by the Index operator. For Buffers and strings, only output the 4233actual byte pointed to by the index. For packages, only print the single 4234package element decoded by the index. Previously, the entire 4235buffer/string/package was emitted. 4236 4237iASL/Table-compiler: Fixed a regression where the "generic" data types 4238were no longer recognized, causing errors. 4239 4240 4241---------------------------------------- 424215 May 2015. Summary of changes for version 20150515: 4243 4244This release implements most of ACPI 6.0 as described below. 4245 42461) ACPICA kernel-resident subsystem: 4247 4248Implemented runtime argument checking and return value checking for all 4249new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 4250_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 4251 4252Example Code and Data Size: These are the sizes for the OS-independent 4253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4254debug version of the code includes the debug output trace mechanism and 4255has a much larger code and data size. 4256 4257 Current Release: 4258 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4259 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4260 Previous Release: 4261 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4262 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4263 4264 42652) iASL Compiler/Disassembler and Tools: 4266 4267iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 4268names (argument count validation and return value typechecking.) 4269 4270iASL disassembler and table compiler: implemented support for all new 4271ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 4272 4273iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 4274tables: FADT, MADT. 4275 4276iASL preprocessor: Added a new directive to enable inclusion of binary 4277blobs into ASL code. The new directive is #includebuffer. It takes a 4278binary file as input and emits a named ascii buffer object into the ASL 4279code. 4280 4281AcpiHelp: Added support for all new ACPI 6.0 predefined names. 4282 4283AcpiHelp: Added a new option, -d, to display all iASL preprocessor 4284directives. 4285 4286AcpiHelp: Added a new option, -t, to display all known/supported ACPI 4287tables. 4288 4289 4290---------------------------------------- 429110 April 2015. Summary of changes for version 20150410: 4292 4293Reverted a change introduced in version 20150408 that caused 4294a regression in the disassembler where incorrect operator 4295symbols could be emitted. 4296 4297 4298---------------------------------------- 429908 April 2015. Summary of changes for version 20150408: 4300 4301 43021) ACPICA kernel-resident subsystem: 4303 4304Permanently set the return value for the _REV predefined name. It now 4305returns 2 (was 5). This matches other ACPI implementations. _REV will be 4306deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 4307for ACPI 2.0 and later. It should never be used to differentiate or 4308identify operating systems. 4309 4310Added the "Windows 2015" string to the _OSI support. ACPICA will now 4311return TRUE to a query with this string. 4312 4313Fixed several issues with the local version of the printf function. 4314 4315Added the C99 compiler option (-std=c99) to the Unix makefiles. 4316 4317 Current Release: 4318 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 4319 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 4320 Previous Release: 4321 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4322 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4323 4324 43252) iASL Compiler/Disassembler and Tools: 4326 4327iASL: Implemented an enhancement to the constant folding feature to 4328transform the parse tree to a simple Store operation whenever possible: 4329 Add (2, 3, X) ==> is converted to: Store (5, X) 4330 X = 2 + 3 ==> is converted to: Store (5, X) 4331 4332Updated support for the SLIC table (Software Licensing Description Table) 4333in both the Data Table compiler and the disassembler. The SLIC table 4334support now conforms to "Microsoft Software Licensing Tables (SLIC and 4335MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 4336following the ACPI header is now defined to be "Proprietary Data", and as 4337such, can only be entered or displayed as a hex data block. 4338 4339Implemented full support for the MSDM table as described in the document 4340above. Note: The format of MSDM is similar to SLIC. Any MSDM data 4341following the ACPI header is defined to be "Proprietary Data", and can 4342only be entered or displayed as a hex data block. 4343 4344Implemented the -Pn option for the iASL Table Compiler (was only 4345implemented for the ASL compiler). This option disables the iASL 4346preprocessor. 4347 4348Disassembler: For disassembly of Data Tables, added a comment field 4349around the Ascii equivalent data that is emitted as part of the "Raw 4350Table Data" block. This prevents the iASL Preprocessor from possible 4351confusion if/when the table is compiled. 4352 4353Disassembler: Added an option (-df) to force the disassembler to assume 4354that the table being disassembled contains valid AML. This feature is 4355useful for disassembling AML files that contain ACPI signatures other 4356than DSDT or SSDT (such as OEMx or other signatures). 4357 4358Changes for the EFI version of the tools: 43591) Fixed a build error/issue 43602) Fixed a cast warning 4361 4362iASL: Fixed a path issue with the __FILE__ operator by making the 4363directory prefix optional within the internal SplitInputFilename 4364function. 4365 4366Debugger: Removed some unused global variables. 4367 4368Tests: Updated the makefile for proper generation of the AAPITS suite. 4369 4370 4371---------------------------------------- 437204 February 2015. Summary of changes for version 20150204: 4373 4374ACPICA kernel-resident subsystem: 4375 4376Updated all ACPICA copyrights and signons to 2014. Added the 2014 4377copyright to all module headers and signons, including the standard Linux 4378header. This affects virtually every file in the ACPICA core subsystem, 4379iASL compiler, all ACPICA utilities, and the test suites. 4380 4381Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 4382A raw gpe handling mechanism was created to allow better handling of GPE 4383storms that aren't easily managed by the normal handler. The raw handler 4384allows disabling/renabling of the GPE so that interrupt storms can be 4385avoided in cases where events cannot be timely serviced. In this 4386scenario, handlers should use the AcpiSetGpe() API to disable/enable the 4387GPE. This API will leave the reference counts undisturbed, thereby 4388preventing unintentional clearing of the GPE when the intent in only to 4389temporarily disable it. Raw handlers allow enabling and disabling of a 4390GPE by removing GPE register locking. As such, raw handlers much provide 4391their own locks while using GPE API's to protect access to GPE data 4392structures. 4393Lv Zheng 4394 4395Events: Always modify GPE registers under the GPE lock. 4396Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 4397values. Reported as bug by joe.liu@apple.com. 4398 4399Unix makefiles: Separate option to disable optimizations and 4400_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 4401NOOPT disable option and creates a separate flag (NOFORTIFY) for this 4402purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 4403errors when building ACPICA. This allows disabling the option without 4404also having to disable optimazations. 4405David Box 4406 4407 Current Release: 4408 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4409 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 4410 4411-- 4412-------------------------------------- 441307 November 2014. Summary of changes for version 20141107: 4414 4415This release is available at https://acpica.org/downloads 4416 4417This release introduces and implements language extensions to ASL that 4418provide support for symbolic ("C-style") operators and expressions. These 4419language extensions are known collectively as ASL+. 4420 4421 44221) iASL Compiler/Disassembler and Tools: 4423 4424Disassembler: Fixed a problem with disassembly of the UartSerialBus 4425macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 4426Box. 4427 4428Disassembler: Fixed the Unicode macro support to add escape sequences. 4429All non-printable ASCII values are emitted as escape sequences, as well 4430as the standard escapes for quote and backslash. Ensures that the 4431disassembled macro can be correctly recompiled. 4432 4433iASL: Added Printf/Fprintf macros for formatted output. These macros are 4434translated to existing AML Concatenate and Store operations. Printf 4435writes to the ASL Debug object. Fprintf allows the specification of an 4436ASL name as the target. Only a single format specifier is required, %o, 4437since the AML interpreter dynamically converts objects to the required 4438type. David E. Box. 4439 4440 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4441 (Concatenate (Concatenate (Concatenate ("", Arg0), 4442 ": Unexpected value for "), Arg1), ", "), Arg2), 4443 " at line "), Arg3), Debug) 4444 4445 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 4446 Arg0, Arg1, Arg2, Arg3) 4447 4448 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4449 ("", Arg1), ": "), Arg0), " Successful"), STR1) 4450 4451 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 4452 4453iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 4454ASL parse tree before the AML code is generated. This allows blocks of 4455ASL code to be removed in order to help locate and identify problem 4456devices and/or code. David E. Box. 4457 4458AcpiExec: Added support (-fi) for an optional namespace object 4459initialization file. This file specifies initial values for namespace 4460objects as necessary for debugging and testing different ASL code paths 4461that may be taken as a result of BIOS options. 4462 4463 44642) Overview of symbolic operator support for ASL (ASL+) 4465------------------------------------------------------- 4466 4467As an extension to the ASL language, iASL implements support for symbolic 4468(C-style) operators for math and logical expressions. This can greatly 4469simplify ASL code as well as improve both readability and 4470maintainability. These language extensions can exist concurrently with 4471all legacy ASL code and expressions. 4472 4473The symbolic extensions are 100% compatible with existing AML 4474interpreters, since no new AML opcodes are created. To implement the 4475extensions, the iASL compiler transforms the symbolic expressions into 4476the legacy ASL/AML equivalents at compile time. 4477 4478Full symbolic expressions are supported, along with the standard C 4479precedence and associativity rules. 4480 4481Full disassembler support for the symbolic expressions is provided, and 4482creates an automatic migration path for existing ASL code to ASL+ code 4483via the disassembly process. By default, the disassembler now emits ASL+ 4484code with symbolic expressions. An option (-dl) is provided to force the 4485disassembler to emit legacy ASL code if desired. 4486 4487Below is the complete list of the currently supported symbolic operators 4488with examples. See the iASL User Guide for additional information. 4489 4490 4491ASL+ Syntax Legacy ASL Equivalent 4492----------- --------------------- 4493 4494 // Math operators 4495 4496Z = X + Y Add (X, Y, Z) 4497Z = X - Y Subtract (X, Y, Z) 4498Z = X * Y Multiply (X, Y, Z) 4499Z = X / Y Divide (X, Y, , Z) 4500Z = X % Y Mod (X, Y, Z) 4501Z = X << Y ShiftLeft (X, Y, Z) 4502Z = X >> Y ShiftRight (X, Y, Z) 4503Z = X & Y And (X, Y, Z) 4504Z = X | Y Or (X, Y, Z) 4505Z = X ^ Y Xor (X, Y, Z) 4506Z = ~X Not (X, Z) 4507X++ Increment (X) 4508X-- Decrement (X) 4509 4510 // Logical operators 4511 4512(X == Y) LEqual (X, Y) 4513(X != Y) LNotEqual (X, Y) 4514(X < Y) LLess (X, Y) 4515(X > Y) LGreater (X, Y) 4516(X <= Y) LLessEqual (X, Y) 4517(X >= Y) LGreaterEqual (X, Y) 4518(X && Y) LAnd (X, Y) 4519(X || Y) LOr (X, Y) 4520(!X) LNot (X) 4521 4522 // Assignment and compound assignment operations 4523 4524X = Y Store (Y, X) 4525X += Y Add (X, Y, X) 4526X -= Y Subtract (X, Y, X) 4527X *= Y Multiply (X, Y, X) 4528X /= Y Divide (X, Y, , X) 4529X %= Y Mod (X, Y, X) 4530X <<= Y ShiftLeft (X, Y, X) 4531X >>= Y ShiftRight (X, Y, X) 4532X &= Y And (X, Y, X) 4533X |= Y Or (X, Y, X) 4534X ^= Y Xor (X, Y, X) 4535 4536 45373) ASL+ Examples: 4538----------------- 4539 4540Legacy ASL: 4541 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4542 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 45430x03FB), 4544 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4545 { 4546 And (MEMB, 0xFFFFFFF0, SRMB) 4547 Store (MEMB, Local2) 4548 Store (PDBM, Local1) 4549 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4550 Store (SRMB, MEMB) 4551 Or (PDBM, 0x02, PDBM) 4552 } 4553 4554ASL+ version: 4555 If (((R510 & 0x03FB) == 0x02E0) || 4556 ((R520 & 0x03FB) == 0x02E0) || 4557 ((R530 & 0x03FB) == 0x02E0) || 4558 ((R540 & 0x03FB) == 0x02E0)) 4559 { 4560 SRMB = (MEMB & 0xFFFFFFF0) 4561 Local2 = MEMB 4562 Local1 = PDBM 4563 PDBM &= 0xFFFFFFFFFFFFFFF9 4564 MEMB = SRMB 4565 PDBM |= 0x02 4566 } 4567 4568Legacy ASL: 4569 Store (0x1234, Local1) 4570 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4571 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4572 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4573 Store (Index (PKG1, 0x03), Local6) 4574 Store (Add (Local3, Local2), Debug) 4575 Add (Local1, 0x0F, Local2) 4576 Add (Local1, Multiply (Local2, Local3), Local2) 4577 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4578 4579ASL+ version: 4580 Local1 = 0x1234 4581 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4582 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4583 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4584 Local6 = Index (PKG1, 0x03) 4585 Debug = (Local3 + Local2) 4586 Local2 = (Local1 + 0x0F) 4587 Local2 = (Local1 + (Local2 * Local3)) 4588 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4589 4590 4591---------------------------------------- 459226 September 2014. Summary of changes for version 20140926: 4593 45941) ACPICA kernel-resident subsystem: 4595 4596Updated the GPIO operation region handler interface (GeneralPurposeIo). 4597In order to support GPIO Connection objects with multiple pins, along 4598with the related Field objects, the following changes to the interface 4599have been made: The Address is now defined to be the offset in bits of 4600the field unit from the previous invocation of a Connection. It can be 4601viewed as a "Pin Number Index" into the connection resource descriptor. 4602The BitWidth is the exact bit width of the field. It is usually one bit, 4603but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4604additional information and examples. 4605 4606GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4607corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4608by the firmware), so that they cannot fire until they are enabled via 4609AcpiUpdateAllGpes. Rafael J. Wysocki. 4610 4611Added a new return flag for the Event/GPE status interfaces -- 4612AcpiGetEventStatus and AcpiGetGpeStatus. The new 4613ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4614GPE currently has a handler associated with it, and can thus actually 4615affect the system. Lv Zheng. 4616 4617Example Code and Data Size: These are the sizes for the OS-independent 4618acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4619debug version of the code includes the debug output trace mechanism and 4620has a much larger code and data size. 4621 4622 Current Release: 4623 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4624 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4625 Previous Release: 4626 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4627 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4628 46292) iASL Compiler/Disassembler and Tools: 4630 4631iASL: Fixed a memory allocation/free regression introduced in 20140828 4632that could cause the compiler to crash. This was introduced inadvertently 4633during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 46341113. 4635 4636iASL: Removed two error messages that have been found to create false 4637positives, until they can be fixed and fully validated (ACPICA BZ 1112): 46381) Illegal forward reference within a method 46392) Illegal reference across two methods 4640 4641iASL: Implemented a new option (-lm) to create a hardware mapping file 4642that summarizes all GPIO, I2C, SPI, and UART connections. This option 4643works for both the compiler and disassembler. See the iASL compiler user 4644guide for additional information and examples (section 6.4.6). 4645 4646AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4647version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4648a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4649 4650AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4651unless STDIN is actually a terminal. Assists with batch-mode processing. 4652ACPICA BZ 1114. 4653 4654Disassembler/AcpiHelp: Added another large group of recognized _HID 4655values. 4656 4657 4658---------------------------------------- 465928 August 2014. Summary of changes for version 20140828: 4660 46611) ACPICA kernel-resident subsystem: 4662 4663Fixed a problem related to the internal use of the Timer() operator where 4664a 64-bit divide could cause an attempted link to a double-precision math 4665library. This divide is not actually necessary, so the code was 4666restructured to eliminate it. Lv Zheng. 4667 4668ACPI 5.1: Added support for the runtime validation of the _DSD package 4669(similar to the iASL support). 4670 4671ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4672SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4673 4674Example Code and Data Size: These are the sizes for the OS-independent 4675acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4676debug version of the code includes the debug output trace mechanism and 4677has a much larger code and data size. 4678 4679 Current Release: 4680 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4681 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4682 Previous Release: 4683 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4684 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4685 46862) iASL Compiler/Disassembler and Tools: 4687 4688AcpiExec: Fixed a problem on unix systems where the original terminal 4689state was not always properly restored upon exit. Seen when using the -v 4690option. ACPICA BZ 1104. 4691 4692iASL: Fixed a problem with the validation of the ranges/length within the 4693Memory24 resource descriptor. There was a boundary condition when the 4694range was equal to the (length -1) caused by the fact that these values 4695are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4696 4697Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4698polarity 4699flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4700is 4701now supported properly. 4702 4703ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4704in the disassembler, data table compiler, and table template generator. 4705 4706iASL: Added a requirement for Device() objects that one of either a _HID 4707or _ADR must exist within the scope of a Device, as per the ACPI 4708specification. Remove a similar requirement that was incorrectly in place 4709for the _DSD object. 4710 4711iASL: Added error detection for illegal named references within control 4712methods that would cause runtime failures. Now trapped as errors are: 1) 4713References to objects within a non-parent control method. 2) Forward 4714references (within a method) -- for control methods, AML interpreters use 4715a one-pass parse of control methods. ACPICA BZ 1008. 4716 4717iASL: Added error checking for dependencies related to the _PSx power 4718methods. ACPICA BZ 1029. 47191) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4720_PS3. 47212) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4722scope. 4723 4724iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4725deploying the existing object and string caches and adding new caches for 4726the table compiler. 4727 4728iASL: Split the huge parser source file into multiple subfiles to improve 4729manageability. Generation now requires the M4 macro preprocessor, which 4730is part of the Bison distribution on both unix and windows platforms. 4731 4732AcpiSrc: Fixed and removed all extraneous warnings generated during 4733entire ACPICA source code scan and/or conversion. 4734 4735 4736---------------------------------------- 4737 473824 July 2014. Summary of changes for version 20140724: 4739 4740The ACPI 5.1 specification has been released and is available at: 4741http://uefi.org/specs/access 4742 4743 47440) ACPI 5.1 support in ACPICA: 4745 4746ACPI 5.1 is fully supported in ACPICA as of this release. 4747 4748New predefined names. Support includes iASL and runtime ACPICA 4749validation. 4750 _CCA (Cache Coherency Attribute). 4751 _DSD (Device-Specific Data). David Box. 4752 4753Modifications to existing ACPI tables. Support includes headers, iASL 4754Data Table compiler, disassembler, and the template generator. 4755 FADT - New fields and flags. Graeme Gregory. 4756 GTDT - One new subtable and new fields. Tomasz Nowicki. 4757 MADT - Two new subtables. Tomasz Nowicki. 4758 PCCT - One new subtable. 4759 4760Miscellaneous. 4761 New notification type for System Resource Affinity change events. 4762 4763 47641) ACPICA kernel-resident subsystem: 4765 4766Fixed a regression introduced in 20140627 where a fault can happen during 4767the deletion of Alias AML namespace objects. The problem affected both 4768the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4769 4770Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4771simple mechanism to enable wake GPEs that have no associated handler or 4772control method. Rafael Wysocki. 4773 4774Updated the AcpiEnableGpe interface to disallow the enable if there is no 4775handler or control method associated with the particular GPE. This will 4776help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4777 4778Updated GPE handling and dispatch by disabling the GPE before clearing 4779the status bit for edge-triggered GPEs. Lv Zheng. 4780 4781Added Timer() support to the AML Debug object. The current timer value is 4782now displayed with each invocation of (Store to) the debug object to 4783enable simple generation of execution times for AML code (method 4784execution for example.) ACPICA BZ 1093. 4785 4786Example Code and Data Size: These are the sizes for the OS-independent 4787acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4788debug version of the code includes the debug output trace mechanism and 4789has a much larger code and data size. 4790 4791 Current Release: 4792 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4793 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4794 Previous Release: 4795 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4796 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4797 4798 47992) iASL Compiler/Disassembler and Tools: 4800 4801Fixed an issue with the recently added local printf implementation, 4802concerning width/precision specifiers that could cause incorrect output. 4803Lv Zheng. ACPICA BZ 1094. 4804 4805Disassembler: Added support to detect buffers that contain UUIDs and 4806disassemble them to an invocation of the ToUUID operator. Also emit 4807commented descriptions of known ACPI-related UUIDs. 4808 4809AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4810-u. Adds three new files. 4811 4812iASL: Update table compiler and disassembler for DMAR table changes that 4813were introduced in September 2013. With assistance by David Woodhouse. 4814 4815---------------------------------------- 481627 June 2014. Summary of changes for version 20140627: 4817 48181) ACPICA kernel-resident subsystem: 4819 4820Formatted Output: Implemented local versions of standard formatted output 4821utilities such as printf, etc. Over time, it has been discovered that 4822there are in fact many portability issues with printf, and the addition 4823of this feature will fix/prevent these issues once and for all. Some 4824known issues are summarized below: 4825 48261) Output of 64-bit values is not portable. For example, UINT64 is %ull 4827for the Linux kernel and is %uI64 for some MSVC versions. 48282) Invoking printf consistently in a manner that is portable across both 482932-bit and 64-bit platforms is difficult at best in many situations. 48303) The output format for pointers varies from system to system (leading 4831zeros especially), and leads to inconsistent output from ACPICA across 4832platforms. 48334) Certain platform-specific printf formats may conflict with ACPICA use. 48345) If there is no local C library available, ACPICA now has local support 4835for printf. 4836 4837-- To address these printf issues in a complete manner, ACPICA now 4838directly implements a small subset of printf format specifiers, only 4839those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4840 4841Implemented support for ACPICA generation within the EFI environment. 4842Initially, the AcpiDump utility is supported in the UEFI shell 4843environment. Lv Zheng. 4844 4845Added a new external interface, AcpiLogError, to improve ACPICA 4846portability. This allows the host to redirect error messages from the 4847ACPICA utilities. Lv Zheng. 4848 4849Added and deployed new OSL file I/O interfaces to improve ACPICA 4850portability: 4851 AcpiOsOpenFile 4852 AcpiOsCloseFile 4853 AcpiOsReadFile 4854 AcpiOsWriteFile 4855 AcpiOsGetFileOffset 4856 AcpiOsSetFileOffset 4857There are C library implementations of these functions in the new file 4858service_layers/oslibcfs.c -- however, the functions can be implemented by 4859the local host in any way necessary. Lv Zheng. 4860 4861Implemented a mechanism to disable/enable ACPI table checksum validation 4862at runtime. This can be useful when loading tables very early during OS 4863initialization when it may not be possible to map the entire table in 4864order to compute the checksum. Lv Zheng. 4865 4866Fixed a buffer allocation issue for the Generic Serial Bus support. 4867Originally, a fixed buffer length was used. This change allows for 4868variable-length buffers based upon the protocol indicated by the field 4869access attributes. Reported by Lan Tianyu. Lv Zheng. 4870 4871Fixed a problem where an object detached from a namespace node was not 4872properly terminated/cleared and could cause a circular list problem if 4873reattached. ACPICA BZ 1063. David Box. 4874 4875Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4876 4877Fixed a possible memory leak in an error return path within the function 4878AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4879 4880Example Code and Data Size: These are the sizes for the OS-independent 4881acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4882debug version of the code includes the debug output trace mechanism and 4883has a much larger code and data size. 4884 4885 Current Release: 4886 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4887 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4888 Previous Release: 4889 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4890 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4891 4892 48932) iASL Compiler/Disassembler and Tools: 4894 4895Disassembler: Add dump of ASCII equivalent text within a comment at the 4896end of each line of the output for the Buffer() ASL operator. 4897 4898AcpiDump: Miscellaneous changes: 4899 Fixed repetitive table dump in -n mode. 4900 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4901the ACPI 2.0 GUID fails. 4902 4903iASL: Fixed a problem where the compiler could fault if incorrectly given 4904an acpidump output file as input. ACPICA BZ 1088. David Box. 4905 4906AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4907they are invoked without any arguments. 4908 4909Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 49101086. Colin Ian King. 4911 4912Disassembler: Cleaned up a block of code that extracts a parent Op 4913object. Added a comment that explains that the parent is guaranteed to be 4914valid in this case. ACPICA BZ 1069. 4915 4916 4917---------------------------------------- 491824 April 2014. Summary of changes for version 20140424: 4919 49201) ACPICA kernel-resident subsystem: 4921 4922Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4923Some of these tables are known to contain a trailing NULL entry. Lv 4924Zheng. 4925 4926Removed an extraneous error message for the case where there are a large 4927number of system GPEs (> 124). This was the "32-bit FADT register is too 4928long to convert to GAS struct" message, which is irrelevant for GPEs 4929since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4930(limited capacity) GAS bit length. Also, several changes to ensure proper 4931support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4932internally. 4933 4934Implemented and deployed additional configuration support for the public 4935ACPICA external interfaces. Entire classes of interfaces can now be 4936easily modified or configured out, replaced by stubbed inline functions 4937by default. Lv Zheng. 4938 4939Moved all public ACPICA runtime configuration globals to the public 4940ACPICA external interface file for convenience. Also, removed some 4941obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4942 4943Documentation: Added a new section to the ACPICA reference describing the 4944maximum number of GPEs that can be supported by the FADT-defined GPEs in 4945block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4946reference. 4947 4948Example Code and Data Size: These are the sizes for the OS-independent 4949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4950debug version of the code includes the debug output trace mechanism and 4951has a much larger code and data size. 4952 4953 Current Release: 4954 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4955 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4956 Previous Release: 4957 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4958 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4959 4960 49612) iASL Compiler/Disassembler and Tools: 4962 4963iASL and disassembler: Add full support for the LPIT table (Low Power 4964Idle Table). Includes support in the disassembler, data table compiler, 4965and template generator. 4966 4967AcpiDump utility: 49681) Add option to force the use of the RSDT (over the XSDT). 49692) Improve validation of the RSDP signature (use 8 chars instead of 4). 4970 4971iASL: Add check for predefined packages that are too large. For 4972predefined names that contain subpackages, check if each subpackage is 4973too large. (Check for too small already exists.) 4974 4975Debugger: Updated the GPE command (which simulates a GPE by executing the 4976GPE code paths in ACPICA). The GPE device is now optional, and defaults 4977to the GPE 0/1 FADT-defined blocks. 4978 4979Unix application OSL: Update line-editing support. Add additional error 4980checking and take care not to reset terminal attributes on exit if they 4981were never set. This should help guarantee that the terminal is always 4982left in the previous state on program exit. 4983 4984 4985---------------------------------------- 498625 March 2014. Summary of changes for version 20140325: 4987 49881) ACPICA kernel-resident subsystem: 4989 4990Updated the auto-serialize feature for control methods. This feature 4991automatically serializes all methods that create named objects in order 4992to prevent runtime errors. The update adds support to ignore the 4993currently executing AML SyncLevel when invoking such a method, in order 4994to prevent disruption of any existing SyncLevel priorities that may exist 4995in the AML code. Although the use of SyncLevels is relatively rare, this 4996change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4997appear on some machines starting with the 20140214 release. 4998 4999Added a new external interface to allow the host to install ACPI tables 5000very early, before the namespace is even created. AcpiInstallTable gives 5001the host additional flexibility for ACPI table management. Tables can be 5002installed directly by the host as if they had originally appeared in the 5003XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 5004(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 5005with additional internal restructuring and cleanup. See the ACPICA 5006Reference for interface details. Lv Zheng. 5007 5008Added validation of the checksum for all incoming dynamically loaded 5009tables (via external interfaces or via AML Load/LoadTable operators). Lv 5010Zheng. 5011 5012Updated the use of the AcpiOsWaitEventsComplete interface during Notify 5013and GPE handler removal. Restructured calls to eliminate possible race 5014conditions. Lv Zheng. 5015 5016Added a warning for the use/execution of the ASL/AML Unload (table) 5017operator. This will help detect and identify machines that use this 5018operator if and when it is ever used. This operator has never been seen 5019in the field and the usage model and possible side-effects of the drastic 5020runtime action of a full table removal are unknown. 5021 5022Reverted the use of #pragma push/pop which was introduced in the 20140214 5023release. It appears that push and pop are not implemented by enough 5024compilers to make the use of this feature feasible for ACPICA at this 5025time. However, these operators may be deployed in a future ACPICA 5026release. 5027 5028Added the missing EXPORT_SYMBOL macros for the install and remove SCI 5029handler interfaces. 5030 5031Source code generation: 50321) Disabled the use of the "strchr" macro for the gcc-specific 5033generation. For some versions of gcc, this macro can periodically expose 5034a compiler bug which in turn causes compile-time error(s). 50352) Added support for PPC64 compilation. Colin Ian King. 5036 5037Example Code and Data Size: These are the sizes for the OS-independent 5038acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5039debug version of the code includes the debug output trace mechanism and 5040has a much larger code and data size. 5041 5042 Current Release: 5043 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 5044 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 5045 Previous Release: 5046 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5047 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5048 5049 50502) iASL Compiler/Disassembler and Tools: 5051 5052Disassembler: Added several new features to improve the readability of 5053the resulting ASL code. Extra information is emitted within comment 5054fields in the ASL code: 50551) Known _HID/_CID values are decoded to descriptive text. 50562) Standard values for the Notify() operator are decoded to descriptive 5057text. 50583) Target operands are expanded to full pathnames (in a comment) when 5059possible. 5060 5061Disassembler: Miscellaneous updates for extern() handling: 50621) Abort compiler if file specified by -fe option does not exist. 50632) Silence unnecessary warnings about argument count mismatches. 50643) Update warning messages concerning unresolved method externals. 50654) Emit "UnknownObj" keyword for externals whose type cannot be 5066determined. 5067 5068AcpiHelp utility: 50691) Added the -a option to display both the ASL syntax and the AML 5070encoding for an input ASL operator. This effectively displays all known 5071information about an ASL operator with one AcpiHelp invocation. 50722) Added substring match support (similar to a wildcard) for the -i 5073(_HID/PNP IDs) option. 5074 5075iASL/Disassembler: Since this tool does not yet support execution on big- 5076endian machines, added detection of endianness and an error message if 5077execution is attempted on big-endian. Support for big-endian within iASL 5078is a feature that is on the ACPICA to-be-done list. 5079 5080AcpiBin utility: 50811) Remove option to extract binary files from an acpidump; this function 5082is made obsolete by the AcpiXtract utility. 50832) General cleanup of open files and allocated buffers. 5084 5085 5086---------------------------------------- 508714 February 2014. Summary of changes for version 20140214: 5088 50891) ACPICA kernel-resident subsystem: 5090 5091Implemented a new mechanism to proactively prevent problems with ill- 5092behaved reentrant control methods that create named ACPI objects. This 5093behavior is illegal as per the ACPI specification, but is nonetheless 5094frequently seen in the field. Previously, this could lead to an 5095AE_ALREADY_EXISTS exception if the method was actually entered by more 5096than one thread. This new mechanism detects such methods at table load 5097time and marks them "serialized" to prevent reentrancy. A new global 5098option, AcpiGbl_AutoSerializeMethods, has been added to disable this 5099feature if desired. This mechanism and global option obsoletes and 5100supersedes the previous AcpiGbl_SerializeAllMethods option. 5101 5102Added the "Windows 2013" string to the _OSI support. ACPICA will now 5103respond TRUE to _OSI queries with this string. It is the stated policy of 5104ACPICA to add new strings to the _OSI support as soon as possible after 5105they are defined. See the full ACPICA _OSI policy which has been added to 5106the utilities/utosi.c file. 5107 5108Hardened/updated the _PRT return value auto-repair code: 51091) Do not abort the repair on a single subpackage failure, continue to 5110check all subpackages. 51112) Add check for the minimum subpackage length (4). 51123) Properly handle extraneous NULL package elements. 5113 5114Added support to avoid the possibility of infinite loops when traversing 5115object linked lists. Never allow an infinite loop, even in the face of 5116corrupted object lists. 5117 5118ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 5119pack(pop) directives to ensure that the ACPICA headers are independent of 5120compiler settings or other host headers. 5121 5122Example Code and Data Size: These are the sizes for the OS-independent 5123acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5124debug version of the code includes the debug output trace mechanism and 5125has a much larger code and data size. 5126 5127 Current Release: 5128 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5129 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5130 Previous Release: 5131 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5132 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5133 5134 51352) iASL Compiler/Disassembler and Tools: 5136 5137iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 5138first reserved field was incorrectly forced to have a value of zero. This 5139change correctly forces the field to have a value of one. ACPICA BZ 1081. 5140 5141Debugger: Added missing support for the "Extra" and "Data" subobjects 5142when displaying object data. 5143 5144Debugger: Added support to display entire object linked lists when 5145displaying object data. 5146 5147iASL: Removed the obsolete -g option to obtain ACPI tables from the 5148Windows registry. This feature has been superseded by the acpidump 5149utility. 5150 5151 5152---------------------------------------- 515314 January 2014. Summary of changes for version 20140114: 5154 51551) ACPICA kernel-resident subsystem: 5156 5157Updated all ACPICA copyrights and signons to 2014. Added the 2014 5158copyright to all module headers and signons, including the standard Linux 5159header. This affects virtually every file in the ACPICA core subsystem, 5160iASL compiler, all ACPICA utilities, and the test suites. 5161 5162Improved parameter validation for AcpiInstallGpeBlock. Added the 5163following checks: 51641) The incoming device handle refers to type ACPI_TYPE_DEVICE. 51652) There is not already a GPE block attached to the device. 5166Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 5167device. 5168 5169Correctly support "references" in the ACPI_OBJECT. This change fixes the 5170support to allow references (namespace nodes) to be passed as arguments 5171to control methods via the evaluate object interface. This is probably 5172most useful for testing purposes, however. 5173 5174Improved support for 32/64 bit physical addresses in printf()-like 5175output. This change improves the support for physical addresses in printf 5176debug statements and other output on both 32-bit and 64-bit hosts. It 5177consistently outputs the appropriate number of bytes for each host. The 5178%p specifier is unsatisfactory since it does not emit uniform output on 5179all hosts/clib implementations (on some, leading zeros are not supported, 5180leading to difficult-to-read output). 5181 5182Example Code and Data Size: These are the sizes for the OS-independent 5183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5184debug version of the code includes the debug output trace mechanism and 5185has a much larger code and data size. 5186 5187 Current Release: 5188 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5189 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5190 Previous Release: 5191 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5192 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5193 5194 51952) iASL Compiler/Disassembler and Tools: 5196 5197iASL: Fix a possible fault when using the Connection() operator. Fixes a 5198problem if the parent Field definition for the Connection operator refers 5199to an operation region that does not exist. ACPICA BZ 1064. 5200 5201AcpiExec: Load of local test tables is now optional. The utility has the 5202capability to load some various tables to test features of ACPICA. 5203However, there are enough of them that the output of the utility became 5204confusing. With this change, only the required local tables are displayed 5205(RSDP, XSDT, etc.) along with the actual tables loaded via the command 5206line specification. This makes the default output simler and easier to 5207understand. The -el command line option restores the original behavior 5208for testing purposes. 5209 5210AcpiExec: Added support for overlapping operation regions. This change 5211expands the simulation of operation regions by supporting regions that 5212overlap within the given address space. Supports SystemMemory and 5213SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 5214 5215AcpiExec: Added region handler support for PCI_Config and EC spaces. This 5216allows AcpiExec to simulate these address spaces, similar to the current 5217support for SystemMemory and SystemIO. 5218 5219Debugger: Added new command to read/write/compare all namespace objects. 5220The command "test objects" will exercise the entire namespace by writing 5221new values to each data object, and ensuring that the write was 5222successful. The original value is then restored and verified. 5223 5224Debugger: Added the "test predefined" command. This change makes this 5225test public and puts it under the new "test" command. The test executes 5226each and every predefined name within the current namespace. 5227 5228 5229---------------------------------------- 523018 December 2013. Summary of changes for version 20131218: 5231 5232Global note: The ACPI 5.0A specification was released this month. There 5233are no changes needed for ACPICA since this release of ACPI is an 5234errata/clarification release. The specification is available at 5235acpi.info. 5236 5237 52381) ACPICA kernel-resident subsystem: 5239 5240Added validation of the XSDT root table if it is present. Some older 5241platforms contain an XSDT that is ill-formed or otherwise invalid (such 5242as containing some or all entries that are NULL pointers). This change 5243adds a new function to validate the XSDT before actually using it. If the 5244XSDT is found to be invalid, ACPICA will now automatically fall back to 5245using the RSDT instead. Original implementation by Zhao Yakui. Ported to 5246ACPICA and enhanced by Lv Zheng and Bob Moore. 5247 5248Added a runtime option to ignore the XSDT and force the use of the RSDT. 5249This change adds a runtime option that will force ACPICA to use the RSDT 5250instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 5251requires that an XSDT be used instead of the RSDT, the XSDT has been 5252found to be corrupt or ill-formed on some machines. Lv Zheng. 5253 5254Added a runtime option to favor 32-bit FADT register addresses over the 525564-bit addresses. This change adds an option to favor 32-bit FADT 5256addresses when there is a conflict between the 32-bit and 64-bit versions 5257of the same register. The default behavior is to use the 64-bit version 5258in accordance with the ACPI specification. This can now be overridden via 5259the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 5260 5261During the change above, the internal "Convert FADT" and "Verify FADT" 5262functions have been merged to simplify the code, making it easier to 5263understand and maintain. ACPICA BZ 933. 5264 5265Improve exception reporting and handling for GPE block installation. 5266Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 5267status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 5268 5269Added helper macros to extract bus/segment numbers from the HEST table. 5270This change adds two macros to extract the encoded bus and segment 5271numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 5272Betty Dall <betty.dall@hp.com> 5273 5274Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 5275by ACPICA. It is not a public macro, so it should have no effect on 5276existing OSV code. Lv Zheng. 5277 5278Example Code and Data Size: These are the sizes for the OS-independent 5279acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5280debug version of the code includes the debug output trace mechanism and 5281has a much larger code and data size. 5282 5283 Current Release: 5284 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5285 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5286 Previous Release: 5287 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5288 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5289 5290 52912) iASL Compiler/Disassembler and Tools: 5292 5293Disassembler: Improved pathname support for emitted External() 5294statements. This change adds full pathname support for external names 5295that have been resolved internally by the inclusion of additional ACPI 5296tables (via the iASL -e option). Without this change, the disassembler 5297can emit multiple externals for the same object, or it become confused 5298when the Scope() operator is used on an external object. Overall, greatly 5299improves the ability to actually recompile the emitted ASL code when 5300objects a referenced across multiple ACPI tables. Reported by Michael 5301Tsirkin (mst@redhat.com). 5302 5303Tests/ASLTS: Updated functional control suite to execute with no errors. 5304David Box. Fixed several errors related to the testing of the interpreter 5305slack mode. Lv Zheng. 5306 5307iASL: Added support to detect names that are declared within a control 5308method, but are unused (these are temporary names that are only valid 5309during the time the method is executing). A remark is issued for these 5310cases. ACPICA BZ 1022. 5311 5312iASL: Added full support for the DBG2 table. Adds full disassembler, 5313table compiler, and template generator support for the DBG2 table (Debug 5314Port 2 table). 5315 5316iASL: Added full support for the PCCT table, update the table definition. 5317Updates the PCCT table definition in the actbl3.h header and adds table 5318compiler and template generator support. 5319 5320iASL: Added an option to emit only error messages (no warnings/remarks). 5321The -ve option will enable only error messages, warnings and remarks are 5322suppressed. This can simplify debugging when only the errors are 5323important, such as when an ACPI table is disassembled and there are many 5324warnings and remarks -- but only the actual errors are of real interest. 5325 5326Example ACPICA code (source/tools/examples): Updated the example code so 5327that it builds to an actual working program, not just example code. Added 5328ACPI tables and execution of an example control method in the DSDT. Added 5329makefile support for Unix generation. 5330 5331 5332---------------------------------------- 533315 November 2013. Summary of changes for version 20131115: 5334 5335This release is available at https://acpica.org/downloads 5336 5337 53381) ACPICA kernel-resident subsystem: 5339 5340Resource Manager: Fixed loop termination for the "get AML length" 5341function. The loop previously had an error termination on a NULL resource 5342pointer, which can never happen since the loop simply increments a valid 5343resource pointer. This fix changes the loop to terminate with an error on 5344an invalid end-of-buffer condition. The problem can be seen as an 5345infinite loop by callers to AcpiSetCurrentResources with an invalid or 5346corrupted resource descriptor, or a resource descriptor that is missing 5347an END_TAG descriptor. Reported by Dan Carpenter 5348<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 5349 5350Table unload and ACPICA termination: Delete all attached data objects 5351during namespace node deletion. This fix updates namespace node deletion 5352to delete the entire list of attached objects (attached via 5353AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 53541024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 5355 5356ACPICA termination: Added support to delete all objects attached to the 5357root namespace node. This fix deletes any and all objects that have been 5358attached to the root node via AcpiAttachData. Previously, none of these 5359objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 5360 5361Debug output: Do not emit the function nesting level for the in-kernel 5362build. The nesting level is really only useful during a single-thread 5363execution. Therefore, only enable this output for the AcpiExec utility. 5364Also, only emit the thread ID when executing under AcpiExec (Context 5365switches are still always detected and a message is emitted). ACPICA BZ 5366972. 5367 5368Example Code and Data Size: These are the sizes for the OS-independent 5369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5370debug version of the code includes the debug output trace mechanism and 5371has a much larger code and data size. 5372 5373 Current Release: 5374 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5375 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5376 Previous Release: 5377 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5378 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5379 5380 53812) iASL Compiler/Disassembler and Tools: 5382 5383AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 5384correct portable POSIX header for terminal control functions. 5385 5386Disassembler: Fixed control method invocation issues related to the use 5387of the CondRefOf() operator. The problem is seen in the disassembly where 5388control method invocations may not be disassembled properly if the 5389control method name has been used previously as an argument to CondRefOf. 5390The solution is to not attempt to emit an external declaration for the 5391CondRefOf target (it is not necessary in the first place). This prevents 5392disassembler object type confusion. ACPICA BZ 988. 5393 5394Unix Makefiles: Added an option to disable compiler optimizations and the 5395_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 5396with optimizations (reportedly, gcc 4.4 for example). This change adds a 5397command line option for make (NOOPT) that disables all compiler 5398optimizations and the _FORTIFY_SOURCE compiler flag. The default 5399optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 54001034. Lv Zheng, Bob Moore. 5401 5402Tests/ASLTS: Added options to specify individual test cases and modes. 5403This allows testers running aslts.sh to optionally specify individual 5404test modes and test cases. Also added an option to disable the forced 5405generation of the ACPICA tools from source if desired. Lv Zheng. 5406 5407---------------------------------------- 540827 September 2013. Summary of changes for version 20130927: 5409 5410This release is available at https://acpica.org/downloads 5411 5412 54131) ACPICA kernel-resident subsystem: 5414 5415Fixed a problem with store operations to reference objects. This change 5416fixes a problem where a Store operation to an ArgX object that contained 5417a 5418reference to a field object did not complete the automatic dereference 5419and 5420then write to the actual field object. Instead, the object type of the 5421field object was inadvertently changed to match the type of the source 5422operand. The new behavior will actually write to the field object (buffer 5423field or field unit), thus matching the correct ACPI-defined behavior. 5424 5425Implemented support to allow the host to redefine individual OSL 5426prototypes. This change enables the host to redefine OSL prototypes found 5427in the acpiosxf.h file. This allows the host to implement OSL interfaces 5428with a macro or inlined function. Further, it allows the host to add any 5429additional required modifiers such as __iomem, __init, __exit, etc., as 5430necessary on a per-interface basis. Enables maximum flexibility for the 5431OSL interfaces. Lv Zheng. 5432 5433Hardcoded the access width for the FADT-defined reset register. The ACPI 5434specification requires the reset register width to be 8 bits. ACPICA now 5435hardcodes the width to 8 and ignores the FADT width value. This provides 5436compatibility with other ACPI implementations that have allowed BIOS code 5437with bad register width values to go unnoticed. Matthew Garett, Bob 5438Moore, 5439Lv Zheng. 5440 5441Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 5442used 5443in the OSL header (acpiosxf). The change modifies the position of this 5444macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 5445build issues if the OSL defines the implementation of the interface to be 5446an inline stub function. Lv Zheng. 5447 5448Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 5449initialization interfaces. This change adds a new macro for the main init 5450and terminate external interfaces in order to support hosts that require 5451additional or different processing for these functions. Changed from 5452ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 5453Zheng, Bob Moore. 5454 5455Cleaned up the memory allocation macros for configurability. In the 5456common 5457case, the ACPI_ALLOCATE and related macros now resolve directly to their 5458respective AcpiOs* OSL interfaces. Two options: 54591) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 5460default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 54612) For AcpiExec (and for debugging), the macros can optionally be 5462resolved 5463to the local ACPICA interfaces that track each allocation (local tracking 5464is used to immediately detect memory leaks). 5465Lv Zheng. 5466 5467Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 5468to predefine this macro to either TRUE or FALSE during the system build. 5469 5470Replaced __FUNCTION_ with __func__ in the gcc-specific header. 5471 5472Example Code and Data Size: These are the sizes for the OS-independent 5473acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5474debug version of the code includes the debug output trace mechanism and 5475has a much larger code and data size. 5476 5477 Current Release: 5478 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5479 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5480 Previous Release: 5481 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5482 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5483 5484 54852) iASL Compiler/Disassembler and Tools: 5486 5487iASL: Implemented wildcard support for the -e option. This simplifies use 5488when there are many SSDTs that must be included to resolve external 5489method 5490declarations. ACPICA BZ 1041. Example: 5491 iasl -e ssdt*.dat -d dsdt.dat 5492 5493AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5494adds a portable module that implements full history and limited line 5495editing for Unix and Linux systems. It does not use readline() due to 5496portability issues. Instead it uses the POSIX termio interface to put the 5497terminal in raw input mode so that the various special keys can be 5498trapped 5499(such as up/down-arrow for history support and left/right-arrow for line 5500editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5501 5502AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5503one or more spaces. This provides compatible with early or different 5504versions of the AcpiDump utility. ACPICA BZ 1044. 5505 5506AcpiDump: Do not ignore tables that contain only an ACPI table header. 5507Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5508no other data. This change adds support to dump these tables. Any tables 5509shorter than the length of an ACPI table header remain in error (an error 5510message is emitted). Reported by Yi Li. 5511 5512Debugger: Echo actual command along with the "unknown command" message. 5513 5514---------------------------------------- 551523 August 2013. Summary of changes for version 20130823: 5516 55171) ACPICA kernel-resident subsystem: 5518 5519Implemented support for host-installed System Control Interrupt (SCI) 5520handlers. Certain ACPI functionality requires the host to handle raw 5521SCIs. For example, the "SCI Doorbell" that is defined for memory power 5522state support requires the host device driver to handle SCIs to examine 5523if the doorbell has been activated. Multiple SCI handlers can be 5524installed to allow for future expansion. New external interfaces are 5525AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5526details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5527 5528Operation region support: Never locally free the handler "context" 5529pointer. This change removes some dangerous code that attempts to free 5530the handler context pointer in some (rare) circumstances. The owner of 5531the handler owns this pointer and the ACPICA code should never touch it. 5532Although not seen to be an issue in any kernel, it did show up as a 5533problem (fault) under AcpiExec. Also, set the internal storage field for 5534the context pointer to zero when the region is deactivated, simply for 5535sanity. David Box. ACPICA BZ 1039. 5536 5537AcpiRead: On error, do not modify the return value target location. If an 5538error happens in the middle of a split 32/32 64-bit I/O operation, do not 5539modify the target of the return value pointer. Makes the code consistent 5540with the rest of ACPICA. Bjorn Helgaas. 5541 5542Example Code and Data Size: These are the sizes for the OS-independent 5543acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5544debug version of the code includes the debug output trace mechanism and 5545has a much larger code and data size. 5546 5547 Current Release: 5548 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5549 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5550 Previous Release: 5551 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5552 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5553 5554 55552) iASL Compiler/Disassembler and Tools: 5556 5557AcpiDump: Implemented several new features and fixed some problems: 55581) Added support to dump the RSDP, RSDT, and XSDT tables. 55592) Added support for multiple table instances (SSDT, UEFI). 55603) Added option to dump "customized" (overridden) tables (-c). 55614) Fixed a problem where some table filenames were improperly 5562constructed. 55635) Improved some error messages, removed some unnecessary messages. 5564 5565iASL: Implemented additional support for disassembly of ACPI tables that 5566contain invocations of external control methods. The -fe<file> option 5567allows the import of a file that specifies the external methods along 5568with the required number of arguments for each -- allowing for the 5569correct disassembly of the table. This is a workaround for a limitation 5570of AML code where the disassembler often cannot determine the number of 5571arguments required for an external control method and generates incorrect 5572ASL code. See the iASL reference for details. ACPICA BZ 1030. 5573 5574Debugger: Implemented a new command (paths) that displays the full 5575pathnames (namepaths) and object types of all objects in the namespace. 5576This is an alternative to the namespace command. 5577 5578Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5579mechanism and any installed handlers. 5580 5581iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5582This can occur if there are too many parent prefixes in a namepath (for 5583example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5584 5585Application OSLs: Set the return value for the PCI read functions. These 5586functions simply return AE_OK, but should set the return value to zero 5587also. This change implements this. ACPICA BZ 1038. 5588 5589Debugger: Prevent possible command line buffer overflow. Increase the 5590size of a couple of the debugger line buffers, and ensure that overflow 5591cannot happen. ACPICA BZ 1037. 5592 5593iASL: Changed to abort immediately on serious errors during the parsing 5594phase. Due to the nature of ASL, there is no point in attempting to 5595compile these types of errors, and they typically end up causing a 5596cascade of hundreds of errors which obscure the original problem. 5597 5598---------------------------------------- 559925 July 2013. Summary of changes for version 20130725: 5600 56011) ACPICA kernel-resident subsystem: 5602 5603Fixed a problem with the DerefOf operator where references to FieldUnits 5604and BufferFields incorrectly returned the parent object, not the actual 5605value of the object. After this change, a dereference of a FieldUnit 5606reference results in a read operation on the field to get the value, and 5607likewise, the appropriate BufferField value is extracted from the target 5608buffer. 5609 5610Fixed a problem where the _WAK method could cause a fault under these 5611circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5612method returned no value. The problem is rarely seen because most kernels 5613run ACPICA in slack mode. 5614 5615For the DerefOf operator, a fatal error now results if an attempt is made 5616to dereference a reference (created by the Index operator) to a NULL 5617package element. Provides compatibility with other ACPI implementations, 5618and this behavior will be added to a future version of the ACPI 5619specification. 5620 5621The ACPI Power Management Timer (defined in the FADT) is now optional. 5622This provides compatibility with other ACPI implementations and will 5623appear in the next version of the ACPI specification. If there is no PM 5624Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5625zero in the FADT indicates no PM timer. 5626 5627Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5628allows the host to globally enable/disable all vendor strings, all 5629feature strings, or both. Intended to be primarily used for debugging 5630purposes only. Lv Zheng. 5631 5632Expose the collected _OSI data to the host via a global variable. This 5633data tracks the highest level vendor ID that has been invoked by the BIOS 5634so that the host (and potentially ACPICA itself) can change behaviors 5635based upon the age of the BIOS. 5636 5637Example Code and Data Size: These are the sizes for the OS-independent 5638acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5639debug version of the code includes the debug output trace mechanism and 5640has a much larger code and data size. 5641 5642 Current Release: 5643 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5644 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5645 Previous Release: 5646 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5647 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5648 5649 56502) iASL Compiler/Disassembler and Tools: 5651 5652iASL: Created the following enhancements for the -so option (create 5653offset table): 56541)Add offsets for the last nameseg in each namepath for every supported 5655object type 56562)Add support for Processor, Device, Thermal Zone, and Scope objects 56573)Add the actual AML opcode for the parent object of every supported 5658object type 56594)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5660 5661Disassembler: Emit all unresolved external symbols in a single block. 5662These are external references to control methods that could not be 5663resolved, and thus, the disassembler had to make a guess at the number of 5664arguments to parse. 5665 5666iASL: The argument to the -T option (create table template) is now 5667optional. If not specified, the default table is a DSDT, typically the 5668most common case. 5669 5670---------------------------------------- 567126 June 2013. Summary of changes for version 20130626: 5672 56731) ACPICA kernel-resident subsystem: 5674 5675Fixed an issue with runtime repair of the _CST object. Null or invalid 5676elements were not always removed properly. Lv Zheng. 5677 5678Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5679FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5680the maximum number of GPEs is 1016. Use of multiple GPE block devices 5681makes the system-wide number of GPEs essentially unlimited. 5682 5683Example Code and Data Size: These are the sizes for the OS-independent 5684acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5685debug version of the code includes the debug output trace mechanism and 5686has a much larger code and data size. 5687 5688 Current Release: 5689 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5690 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5691 Previous Release: 5692 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5693 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5694 5695 56962) iASL Compiler/Disassembler and Tools: 5697 5698Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5699hosts. Now supports Linux, FreeBSD, and Windows. 5700 5701Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5702Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5703 5704iASL/Preprocessor: Implemented full support for nested 5705#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5706 5707Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5708max. The original purpose of this constraint was to limit the amount of 5709debug output. However, the string function in question (UtPrintString) is 5710now used for the disassembler also, where 256 bytes is insufficient. 5711Reported by RehabMan@GitHub. 5712 5713iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5714tables. ACPICA BZ 999. Lv Zheng. 5715 5716iASL: Fixed a couple of error exit issues that could result in a "Could 5717not delete <file>" message during ASL compilation. 5718 5719AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5720the actual signatures for these tables are "FACP" and "APIC", 5721respectively. 5722 5723AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5724tables are allowed to have multiple instances. 5725 5726---------------------------------------- 572717 May 2013. Summary of changes for version 20130517: 5728 57291) ACPICA kernel-resident subsystem: 5730 5731Fixed a regression introduced in version 20130328 for _INI methods. This 5732change fixes a problem introduced in 20130328 where _INI methods are no 5733longer executed properly because of a memory block that was not 5734initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5735<tomasz.nowicki@linaro.org>. 5736 5737Fixed a possible problem with the new extended sleep registers in the 5738ACPI 57395.0 FADT. Do not use these registers (even if populated) unless the HW- 5740reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 57411020. Lv Zheng. 5742 5743Implemented return value repair code for _CST predefined objects: Sort 5744the 5745list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5746 5747Implemented a debug-only option to disable loading of SSDTs from the 5748RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5749ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5750acglobal.h - ACPICA BZ 1005. Lv Zheng. 5751 5752Fixed some issues in the ACPICA initialization and termination code: 5753Tomasz Nowicki <tomasz.nowicki@linaro.org> 57541) Clear events initialized flag upon event component termination. ACPICA 5755BZ 1013. 57562) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 57573) Delete global lock pending lock during termination. ACPICA BZ 1012. 57584) Clear debug buffer global on termination to prevent possible multiple 5759delete. ACPICA BZ 1010. 5760 5761Standardized all switch() blocks across the entire source base. After 5762many 5763years, different formatting for switch() had crept in. This change makes 5764the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5765 5766Split some files to enhance ACPICA modularity and configurability: 57671) Split buffer dump routines into utilities/utbuffer.c 57682) Split internal error message routines into utilities/uterror.c 57693) Split table print utilities into tables/tbprint.c 57704) Split iASL command-line option processing into asloptions.c 5771 5772Makefile enhancements: 57731) Support for all new files above. 57742) Abort make on errors from any subcomponent. Chao Guan. 57753) Add build support for Apple Mac OS X. Liang Qi. 5776 5777Example Code and Data Size: These are the sizes for the OS-independent 5778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5779debug version of the code includes the debug output trace mechanism and 5780has a much larger code and data size. 5781 5782 Current Release: 5783 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5784 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5785 Previous Release: 5786 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5787 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5788 5789 57902) iASL Compiler/Disassembler and Tools: 5791 5792New utility: Implemented an easily portable version of the acpidump 5793utility to extract ACPI tables from the system (or a file) in an ASCII 5794hex 5795dump format. The top-level code implements the various command line 5796options, file I/O, and table dump routines. To port to a new host, only 5797three functions need to be implemented to get tables -- since this 5798functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5799the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 58001) The Windows version obtains the ACPI tables from the Registry. 58012) The Linux version is under development. 58023) Other hosts - If an OS-dependent module is submitted, it will be 5803distributed with ACPICA. 5804 5805iASL: Fixed a regression for -D preprocessor option (define symbol). A 5806restructuring/change to the initialization sequence caused this option to 5807no longer work properly. 5808 5809iASL: Implemented a mechanism to disable specific warnings and remarks. 5810Adds a new command line option, "-vw <messageid> as well as "#pragma 5811disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5812 5813iASL: Fix for too-strict package object validation. The package object 5814validation for return values from the predefined names is a bit too 5815strict, it does not allow names references within the package (which will 5816be resolved at runtime.) These types of references cannot be validated at 5817compile time. This change ignores named references within package objects 5818for names that return or define static packages. 5819 5820Debugger: Fixed the 80-character command line limitation for the History 5821command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5822 5823iASL: Added control method and package support for the -so option 5824(generates AML offset table for BIOS support.) 5825 5826iASL: issue a remark if a non-serialized method creates named objects. If 5827a thread blocks within the method for any reason, and another thread 5828enters the method, the method will fail because an attempt will be made 5829to 5830create the same (named) object twice. In this case, issue a remark that 5831the method should be marked serialized. NOTE: may become a warning later. 5832ACPICA BZ 909. 5833 5834---------------------------------------- 583518 April 2013. Summary of changes for version 20130418: 5836 58371) ACPICA kernel-resident subsystem: 5838 5839Fixed a possible buffer overrun during some rare but specific field unit 5840read operations. This overrun can only happen if the DSDT version is 1 -- 5841meaning that all AML integers are 32 bits -- and the field length is 5842between 33 and 55 bits long. During the read, an internal buffer object 5843is 5844created for the field unit because the field is larger than an integer 5845(32 5846bits). However, in this case, the buffer will be incorrectly written 5847beyond the end because the buffer length is less than the internal 5848minimum 5849of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5850long, but a full 8 bytes will be written. 5851 5852Updated the Embedded Controller "orphan" _REG method support. This refers 5853to _REG methods under the EC device that have no corresponding operation 5854region. This is allowed by the ACPI specification. This update removes a 5855dependency on the existence an ECDT table. It will execute an orphan _REG 5856method as long as the operation region handler for the EC is installed at 5857the EC device node and not the namespace root. Rui Zhang (original 5858update), Bob Moore (update/integrate). 5859 5860Implemented run-time argument typechecking for all predefined ACPI names 5861(_STA, _BIF, etc.) This change performs object typechecking on all 5862incoming arguments for all predefined names executed via 5863AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5864passing correct object types as well as the correct number of arguments 5865(therefore identifying any issues immediately). Also, the ASL/namespace 5866definition of the predefined name is checked against the ACPI 5867specification for the proper argument count. Adds one new file, 5868nsarguments.c 5869 5870Changed an exception code for the ASL UnLoad() operator. Changed the 5871exception code for the case where the input DdbHandle is invalid, from 5872AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5873 5874Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5875global makefile. The use of this flag causes compiler errors on earlier 5876versions of GCC, so it has been removed for compatibility. 5877 5878Miscellaneous cleanup: 58791) Removed some unused/obsolete macros 58802) Fixed a possible memory leak in the _OSI support 58813) Removed an unused variable in the predefined name support 58824) Windows OSL: remove obsolete reference to a memory list field 5883 5884Example Code and Data Size: These are the sizes for the OS-independent 5885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5886debug version of the code includes the debug output trace mechanism and 5887has a much larger code and data size. 5888 5889 Current Release: 5890 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5891 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5892 Previous Release: 5893 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5894 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5895 5896 58972) iASL Compiler/Disassembler and Tools: 5898 5899AcpiExec: Added installation of a handler for the SystemCMOS address 5900space. This prevents control method abort if a method accesses this 5901space. 5902 5903AcpiExec: Added support for multiple EC devices, and now install EC 5904operation region handler(s) at the actual EC device instead of the 5905namespace root. This reflects the typical behavior of host operating 5906systems. 5907 5908AcpiExec: Updated to ensure that all operation region handlers are 5909installed before the _REG methods are executed. This prevents a _REG 5910method from aborting if it accesses an address space has no handler. 5911AcpiExec installs a handler for every possible address space. 5912 5913Debugger: Enhanced the "handlers" command to display non-root handlers. 5914This change enhances the handlers command to display handlers associated 5915with individual devices throughout the namespace, in addition to the 5916currently supported display of handlers associated with the root 5917namespace 5918node. 5919 5920ASL Test Suite: Several test suite errors have been identified and 5921resolved, reducing the total error count during execution. Chao Guan. 5922 5923---------------------------------------- 592428 March 2013. Summary of changes for version 20130328: 5925 59261) ACPICA kernel-resident subsystem: 5927 5928Fixed several possible race conditions with the internal object reference 5929counting mechanism. Some of the external ACPICA interfaces update object 5930reference counts without holding the interpreter or namespace lock. This 5931change adds a spinlock to protect reference count updates on the internal 5932ACPICA objects. Reported by and with assistance from Andriy Gapon 5933(avg@FreeBSD.org). 5934 5935FADT support: Removed an extraneous warning for very large GPE register 5936sets. This change removes a size mismatch warning if the legacy length 5937field for a GPE register set is larger than the 64-bit GAS structure can 5938accommodate. GPE register sets can be larger than the 255-bit width 5939limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5940 5941_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5942return from this interface. Handles a possible timeout case if 5943ACPI_WAIT_FOREVER is modified by the host to be a value less than 5944"forever". Jung-uk Kim. 5945 5946Predefined name support: Add allowed/required argument type information 5947to 5948the master predefined info table. This change adds the infrastructure to 5949enable typechecking on incoming arguments for all predefined 5950methods/objects. It does not actually contain the code that will fully 5951utilize this information, this is still under development. Also condenses 5952some duplicate code for the predefined names into a new module, 5953utilities/utpredef.c 5954 5955Example Code and Data Size: These are the sizes for the OS-independent 5956acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5957debug version of the code includes the debug output trace mechanism and 5958has a much larger code and data size. 5959 5960 Previous Release: 5961 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5962 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5963 Current Release: 5964 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5965 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5966 5967 59682) iASL Compiler/Disassembler and Tools: 5969 5970iASL: Implemented a new option to simplify the development of ACPI- 5971related 5972BIOS code. Adds support for a new "offset table" output file. The -so 5973option will create a C table containing the AML table offsets of various 5974named objects in the namespace so that BIOS code can modify them easily 5975at 5976boot time. This can simplify BIOS runtime code by eliminating expensive 5977searches for "magic values", enhancing boot times and adding greater 5978reliability. With assistance from Lee Hamel. 5979 5980iASL: Allow additional predefined names to return zero-length packages. 5981Now, all predefined names that are defined by the ACPI specification to 5982return a "variable-length package of packages" are allowed to return a 5983zero length top-level package. This allows the BIOS to tell the host that 5984the requested feature is not supported, and supports existing BIOS/ASL 5985code and practices. 5986 5987iASL: Changed the "result not used" warning to an error. This is the case 5988where an ASL operator is effectively a NOOP because the result of the 5989operation is not stored anywhere. For example: 5990 Add (4, Local0) 5991There is no target (missing 3rd argument), nor is the function return 5992value used. This is potentially a very serious problem -- since the code 5993was probably intended to do something, but for whatever reason, the value 5994was not stored. Therefore, this issue has been upgraded from a warning to 5995an error. 5996 5997AcpiHelp: Added allowable/required argument types to the predefined names 5998info display. This feature utilizes the recent update to the predefined 5999names table (above). 6000 6001---------------------------------------- 600214 February 2013. Summary of changes for version 20130214: 6003 60041) ACPICA Kernel-resident Subsystem: 6005 6006Fixed a possible regression on some hosts: Reinstated the safe return 6007macros (return_ACPI_STATUS, etc.) that ensure that the argument is 6008evaluated only once. Although these macros are not needed for the ACPICA 6009code itself, they are often used by ACPI-related host device drivers 6010where 6011the safe feature may be necessary. 6012 6013Fixed several issues related to the ACPI 5.0 reduced hardware support 6014(SOC): Now ensure that if the platform declares itself as hardware- 6015reduced 6016via the FADT, the following functions become NOOPs (and always return 6017AE_OK) because ACPI is always enabled by definition on these machines: 6018 AcpiEnable 6019 AcpiDisable 6020 AcpiHwGetMode 6021 AcpiHwSetMode 6022 6023Dynamic Object Repair: Implemented additional runtime repairs for 6024predefined name return values. Both of these repairs can simplify code in 6025the related device drivers that invoke these methods: 60261) For the _STR and _MLS names, automatically repair/convert an ASCII 6027string to a Unicode buffer. 60282) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 6029a 6030lone end tag descriptor in the following cases: A Return(0) was executed, 6031a null buffer was returned, or no object at all was returned (non-slack 6032mode only). Adds a new file, nsconvert.c 6033ACPICA BZ 998. Bob Moore, Lv Zheng. 6034 6035Resource Manager: Added additional code to prevent possible infinite 6036loops 6037while traversing corrupted or ill-formed resource template buffers. Check 6038for zero-length resource descriptors in all code that loops through 6039resource templates (the length field is used to index through the 6040template). This change also hardens the external AcpiWalkResources and 6041AcpiWalkResourceBuffer interfaces. 6042 6043Local Cache Manager: Enhanced the main data structure to eliminate an 6044unnecessary mechanism to access the next object in the list. Actually 6045provides a small performance enhancement for hosts that use the local 6046ACPICA cache manager. Jung-uk Kim. 6047 6048Example Code and Data Size: These are the sizes for the OS-independent 6049acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6050debug version of the code includes the debug output trace mechanism and 6051has a much larger code and data size. 6052 6053 Previous Release: 6054 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6055 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6056 Current Release: 6057 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 6058 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 6059 6060 60612) iASL Compiler/Disassembler and Tools: 6062 6063iASL/Disassembler: Fixed several issues with the definition of the ACPI 60645.0 RASF table (RAS Feature Table). This change incorporates late changes 6065that were made to the ACPI 5.0 specification. 6066 6067iASL/Disassembler: Added full support for the following new ACPI tables: 6068 1) The MTMR table (MID Timer Table) 6069 2) The VRTC table (Virtual Real Time Clock Table). 6070Includes header file, disassembler, table compiler, and template support 6071for both tables. 6072 6073iASL: Implemented compile-time validation of package objects returned by 6074predefined names. This new feature validates static package objects 6075returned by the various predefined names defined to return packages. Both 6076object types and package lengths are validated, for both parent packages 6077and sub-packages, if any. The code is similar in structure and behavior 6078to 6079the runtime repair mechanism within the AML interpreter and uses the 6080existing predefined name information table. Adds a new file, aslprepkg.c. 6081ACPICA BZ 938. 6082 6083iASL: Implemented auto-detection of binary ACPI tables for disassembly. 6084This feature detects a binary file with a valid ACPI table header and 6085invokes the disassembler automatically. Eliminates the need to 6086specifically invoke the disassembler with the -d option. ACPICA BZ 862. 6087 6088iASL/Disassembler: Added several warnings for the case where there are 6089unresolved control methods during the disassembly. This can potentially 6090cause errors when the output file is compiled, because the disassembler 6091assumes zero method arguments in these cases (it cannot determine the 6092actual number of arguments without resolution/definition of the method). 6093 6094Debugger: Added support to display all resources with a single command. 6095Invocation of the resources command with no arguments will now display 6096all 6097resources within the current namespace. 6098 6099AcpiHelp: Added descriptive text for each ACPICA exception code displayed 6100via the -e option. 6101 6102---------------------------------------- 610317 January 2013. Summary of changes for version 20130117: 6104 61051) ACPICA Kernel-resident Subsystem: 6106 6107Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 6108return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 6109objects to return a package containing one integer, most BIOS code 6110returns 6111two integers and the previous code reflects that. However, we also need 6112to 6113support BIOS code that actually implements to the ACPI spec, and this 6114change reflects this. 6115 6116Fixed two issues with the ACPI_DEBUG_PRINT macros: 61171) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 6118C compilers that require this support. 61192) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 6120ACPI_DEBUG is already used by many of the various hosts. 6121 6122Updated all ACPICA copyrights and signons to 2013. Added the 2013 6123copyright to all module headers and signons, including the standard Linux 6124header. This affects virtually every file in the ACPICA core subsystem, 6125iASL compiler, all ACPICA utilities, and the test suites. 6126 6127Example Code and Data Size: These are the sizes for the OS-independent 6128acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6129debug version of the code includes the debug output trace mechanism and 6130has a much larger code and data size. 6131 6132 Previous Release: 6133 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6134 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6135 Current Release: 6136 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6137 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6138 6139 61402) iASL Compiler/Disassembler and Tools: 6141 6142Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 6143prevent a possible fault on some hosts. Some C libraries modify the arg 6144pointer parameter to vfprintf making it difficult to call it twice in the 6145AcpiOsVprintf function. Use a local buffer to workaround this issue. This 6146does not affect the Windows OSL since the Win C library does not modify 6147the arg pointer. Chao Guan, Bob Moore. 6148 6149iASL: Fixed a possible infinite loop when the maximum error count is 6150reached. If an output file other than the .AML file is specified (such as 6151a listing file), and the maximum number of errors is reached, do not 6152attempt to flush data to the output file(s) as the compiler is aborting. 6153This can cause an infinite loop as the max error count code essentially 6154keeps calling itself. 6155 6156iASL/Disassembler: Added an option (-in) to ignore NOOP 6157opcodes/operators. 6158Implemented for both the compiler and the disassembler. Often, the NOOP 6159opcode is used as padding for packages that are changed dynamically by 6160the 6161BIOS. When disassembled and recompiled, these NOOPs will cause syntax 6162errors. This option causes the disassembler to ignore all NOOP opcodes 6163(0xA3), and it also causes the compiler to ignore all ASL source code 6164NOOP 6165statements as well. 6166 6167Debugger: Enhanced the Sleep command to execute all sleep states. This 6168change allows Sleep to be invoked with no arguments and causes the 6169debugger to execute all of the sleep states, 0-5, automatically. 6170 6171---------------------------------------- 617220 December 2012. Summary of changes for version 20121220: 6173 61741) ACPICA Kernel-resident Subsystem: 6175 6176Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 6177alternate entry point for AcpiWalkResources and improves the usability of 6178the resource manager by accepting as input a buffer containing the output 6179of either a _CRS, _PRS, or _AEI method. The key functionality is that the 6180input buffer is not deleted by this interface so that it can be used by 6181the host later. See the ACPICA reference for details. 6182 6183Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 6184(DSDT version < 2). The constant will be truncated and this warning 6185reflects that behavior. 6186 6187Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 6188ExtendedInterrupt, and GpioInt descriptors. This change adds support to 6189both get and set the new wake bit in these descriptors, separately from 6190the existing share bit. Reported by Aaron Lu. 6191 6192Interpreter: Fix Store() when an implicit conversion is not possible. For 6193example, in the cases such as a store of a string to an existing package 6194object, implement the store as a CopyObject(). This is a small departure 6195from the ACPI specification which states that the control method should 6196be 6197aborted in this case. However, the ASLTS suite depends on this behavior. 6198 6199Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 6200macros: check if debug output is currently enabled as soon as possible to 6201minimize performance impact if debug is in fact not enabled. 6202 6203Source code restructuring: Cleanup to improve modularity. The following 6204new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 6205psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 6206Associated makefiles and project files have been updated. 6207 6208Changed an exception code for LoadTable operator. For the case where one 6209of the input strings is too long, change the returned exception code from 6210AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 6211 6212Fixed a possible memory leak in dispatcher error path. On error, delete 6213the mutex object created during method mutex creation. Reported by 6214tim.gardner@canonical.com. 6215 6216Example Code and Data Size: These are the sizes for the OS-independent 6217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6218debug version of the code includes the debug output trace mechanism and 6219has a much larger code and data size. 6220 6221 Previous Release: 6222 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6223 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6224 Current 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 6228 62292) iASL Compiler/Disassembler and Tools: 6230 6231iASL: Disallow a method call as argument to the ObjectType ASL operator. 6232This change tracks an errata to the ACPI 5.0 document. The AML grammar 6233will not allow the interpreter to differentiate between a method and a 6234method invocation when these are used as an argument to the ObjectType 6235operator. The ACPI specification change is to disallow a method 6236invocation 6237(UserTerm) for the ObjectType operator. 6238 6239Finish support for the TPM2 and CSRT tables in the headers, table 6240compiler, and disassembler. 6241 6242Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 6243always expires immediately if the semaphore is not available. The 6244original 6245code was using a relative-time timeout, but sem_timedwait requires the 6246use 6247of an absolute time. 6248 6249iASL: Added a remark if the Timer() operator is used within a 32-bit 6250table. This operator returns a 64-bit time value that will be truncated 6251within a 32-bit table. 6252 6253iASL Source code restructuring: Cleanup to improve modularity. The 6254following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 6255aslmethod.c, and aslfileio.c. Associated makefiles and project files have 6256been updated. 6257 6258 6259---------------------------------------- 626014 November 2012. Summary of changes for version 20121114: 6261 62621) ACPICA Kernel-resident Subsystem: 6263 6264Implemented a performance enhancement for ACPI/AML Package objects. This 6265change greatly increases the performance of Package objects within the 6266interpreter. It changes the processing of reference counts for packages 6267by 6268optimizing for the most common case where the package sub-objects are 6269either Integers, Strings, or Buffers. Increases the overall performance 6270of 6271the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 62722X.) 6273Chao Guan. ACPICA BZ 943. 6274 6275Implemented and deployed common macros to extract flag bits from resource 6276descriptors. Improves readability and maintainability of the code. Fixes 6277a 6278problem with the UART serial bus descriptor for the number of data bits 6279flags (was incorrectly 2 bits, should be 3). 6280 6281Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 6282of the macros and changed the SETx macros to the style of (destination, 6283source). Also added ACPI_CASTx companion macros. Lv Zheng. 6284 6285Example Code and Data Size: These are the sizes for the OS-independent 6286acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6287debug version of the code includes the debug output trace mechanism and 6288has a much larger code and data size. 6289 6290 Previous Release: 6291 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6292 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6293 Current Release: 6294 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6295 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6296 6297 62982) iASL Compiler/Disassembler and Tools: 6299 6300Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 6301adds the ShareAndWake and ExclusiveAndWake flags which were added to the 6302Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 6303 6304Disassembler: Fixed a problem with external declaration generation. Fixes 6305a problem where an incorrect pathname could be generated for an external 6306declaration if the original reference to the object includes leading 6307carats (^). ACPICA BZ 984. 6308 6309Debugger: Completed a major update for the Disassemble<method> command. 6310This command was out-of-date and did not properly disassemble control 6311methods that had any reasonable complexity. This fix brings the command 6312up 6313to the same level as the rest of the disassembler. Adds one new file, 6314dmdeferred.c, which is existing code that is now common with the main 6315disassembler and the debugger disassemble command. ACPICA MZ 978. 6316 6317iASL: Moved the parser entry prototype to avoid a duplicate declaration. 6318Newer versions of Bison emit this prototype, so moved the prototype out 6319of 6320the iASL header to where it is actually used in order to avoid a 6321duplicate 6322declaration. 6323 6324iASL/Tools: Standardized use of the stream I/O functions: 6325 1) Ensure check for I/O error after every fopen/fread/fwrite 6326 2) Ensure proper order of size/count arguments for fread/fwrite 6327 3) Use test of (Actual != Requested) after all fwrite, and most fread 6328 4) Standardize I/O error messages 6329Improves reliability and maintainability of the code. Bob Moore, Lv 6330Zheng. 6331ACPICA BZ 981. 6332 6333Disassembler: Prevent duplicate External() statements. During generation 6334of external statements, detect similar pathnames that are actually 6335duplicates such as these: 6336 External (\ABCD) 6337 External (ABCD) 6338Remove all leading '\' characters from pathnames during the external 6339statement generation so that duplicates will be detected and tossed. 6340ACPICA BZ 985. 6341 6342Tools: Replace low-level I/O with stream I/O functions. Replace 6343open/read/write/close with the stream I/O equivalents 6344fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 6345Moore. 6346 6347AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 6348name header so that AcpiXtract recognizes the output file/table. 6349 6350iASL: Remove obsolete -2 option flag. Originally intended to force the 6351compiler/disassembler into an ACPI 2.0 mode, this was never implemented 6352and the entire concept is now obsolete. 6353 6354---------------------------------------- 635518 October 2012. Summary of changes for version 20121018: 6356 6357 63581) ACPICA Kernel-resident Subsystem: 6359 6360Updated support for the ACPI 5.0 MPST table. Fixes some problems 6361introduced by late changes to the table as it was added to the ACPI 5.0 6362specification. Includes header, disassembler, and data table compiler 6363support as well as a new version of the MPST template. 6364 6365AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 63665.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 6367methods: _HID, _CID, and _UID. 6368 6369Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 6370ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 6371name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 6372names for their various drivers. Affects the AcpiGetObjectInfo external 6373interface, and other internal interfaces as well. 6374 6375Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 6376This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 6377on machines that support non-aligned transfers. Optimizes for this case 6378rather than using a strncpy. With assistance from Zheng Lv. 6379 6380Resource Manager: Small fix for buffer size calculation. Fixed a one byte 6381error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 6382 6383Added a new debug print message for AML mutex objects that are force- 6384released. At control method termination, any currently acquired mutex 6385objects are force-released. Adds a new debug-only message for each one 6386that is released. 6387 6388Audited/updated all ACPICA return macros and the function debug depth 6389counter: 1) Ensure that all functions that use the various TRACE macros 6390also use the appropriate ACPICA return macros. 2) Ensure that all normal 6391return statements surround the return expression (value) with parens to 6392ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 6393Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 6394 6395Global source code changes/maintenance: All extra lines at the start and 6396end of each source file have been removed for consistency. Also, within 6397comments, all new sentences start with a single space instead of a double 6398space, again for consistency across the code base. 6399 6400Example Code and Data Size: These are the sizes for the OS-independent 6401acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6402debug version of the code includes the debug output trace mechanism and 6403has a much larger code and data size. 6404 6405 Previous Release: 6406 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6407 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6408 Current Release: 6409 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6410 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6411 6412 64132) iASL Compiler/Disassembler and Tools: 6414 6415AcpiExec: Improved the algorithm used for memory leak/corruption 6416detection. Added some intelligence to the code that maintains the global 6417list of allocated memory. The list is now ordered by allocated memory 6418address, significantly improving performance. When running AcpiExec on 6419the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 6420on the platform and/or the environment. Note, this performance 6421enhancement affects the AcpiExec utility only, not the kernel-resident 6422ACPICA code. 6423 6424Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 6425the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 6426incorrect table offset reported for invalid opcodes. Report the original 642732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 6428 6429Disassembler: Enhanced the -vt option to emit the binary table data in 6430hex format to assist with debugging. 6431 6432Fixed a potential filename buffer overflow in osunixdir.c. Increased the 6433size of file structure. Colin Ian King. 6434 6435---------------------------------------- 643613 September 2012. Summary of changes for version 20120913: 6437 6438 64391) ACPICA Kernel-resident Subsystem: 6440 6441ACPI 5.0: Added two new notify types for the Hardware Error Notification 6442Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 6443and 6444MCE(6). 6445 6446Table Manager: Merged/removed duplicate code in the root table resize 6447functions. One function is external, the other is internal. Lv Zheng, 6448ACPICA 6449BZ 846. 6450 6451Makefiles: Completely removed the obsolete "Linux" makefiles under 6452acpica/generate/linux. These makefiles are obsolete and have been 6453replaced 6454by 6455the generic unix makefiles under acpica/generate/unix. 6456 6457Makefiles: Ensure that binary files always copied properly. Minor rule 6458change 6459to ensure that the final binary output files are always copied up to the 6460appropriate binary directory (bin32 or bin64.) 6461 6462Example Code and Data Size: These are the sizes for the OS-independent 6463acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6464debug 6465version of the code includes the debug output trace mechanism and has a 6466much 6467larger code and data size. 6468 6469 Previous Release: 6470 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6471 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6472 Current Release: 6473 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6474 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6475 6476 64772) iASL Compiler/Disassembler and Tools: 6478 6479Disassembler: Fixed a possible fault during the disassembly of resource 6480descriptors when a second parse is required because of the invocation of 6481external control methods within the table. With assistance from 6482adq@lidskialf.net. ACPICA BZ 976. 6483 6484iASL: Fixed a namepath optimization problem. An error can occur if the 6485parse 6486node that contains the namepath to be optimized does not have a parent 6487node 6488that is a named object. This change fixes the problem. 6489 6490iASL: Fixed a regression where the AML file is not deleted on errors. The 6491AML 6492output file should be deleted if there are any errors during the 6493compiler. 6494The 6495only exception is if the -f (force output) option is used. ACPICA BZ 974. 6496 6497iASL: Added a feature to automatically increase internal line buffer 6498sizes. 6499Via realloc(), automatically increase the internal line buffer sizes as 6500necessary to support very long source code lines. The current version of 6501the 6502preprocessor requires a buffer long enough to contain full source code 6503lines. 6504This change increases the line buffer(s) if the input lines go beyond the 6505current buffer size. This eliminates errors that occurred when a source 6506code 6507line was longer than the buffer. 6508 6509iASL: Fixed a problem with constant folding in method declarations. The 6510SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6511if a 6512Type3 opcode was used. 6513 6514Debugger: Improved command help support. For incorrect argument count, 6515display 6516full help for the command. For help command itself, allow an argument to 6517specify a command. 6518 6519Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6520errors during execution of the suite. Guan Chao. 6521 6522---------------------------------------- 652316 August 2012. Summary of changes for version 20120816: 6524 6525 65261) ACPICA Kernel-resident Subsystem: 6527 6528Removed all use of the deprecated _GTS and _BFS predefined methods. The 6529_GTS 6530(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6531deprecated and will probably be removed from the ACPI specification. 6532Windows 6533does not invoke them, and reportedly never will. The final nail in the 6534coffin 6535is that the ACPI specification states that these methods must be run with 6536interrupts off, which is not going to happen in a kernel interpreter. 6537Note: 6538Linux has removed all use of the methods also. It was discovered that 6539invoking these functions caused failures on some machines, probably 6540because 6541they were never tested since Windows does not call them. Affects two 6542external 6543interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6544ACPICA BZ 969. 6545 6546Implemented support for complex bit-packed buffers returned from the _PLD 6547(Physical Location of Device) predefined method. Adds a new external 6548interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6549C 6550structure. Note: C Bitfields cannot be used for this type of predefined 6551structure since the memory layout of individual bitfields is not defined 6552by 6553the C language. In addition, there are endian concerns where a compiler 6554will 6555change the bitfield ordering based on the machine type. The new ACPICA 6556interface eliminates these issues, and should be called after _PLD is 6557executed. ACPICA BZ 954. 6558 6559Implemented a change to allow a scope change to root (via "Scope (\)") 6560during 6561execution of module-level ASL code (code that is executed at table load 6562time.) Lin Ming. 6563 6564Added the Windows8/Server2012 string for the _OSI method. This change 6565adds 6566a 6567new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 65682012. 6569 6570Added header support for the new ACPI tables DBG2 (Debug Port Table Type 65712) 6572and CSRT (Core System Resource Table). 6573 6574Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6575names. This simplifies access to the buffers returned by these predefined 6576names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6577 6578GPE support: Removed an extraneous parameter from the various low-level 6579internal GPE functions. Tang Feng. 6580 6581Removed the linux makefiles from the unix packages. The generate/linux 6582makefiles are obsolete and have been removed from the unix tarball 6583release 6584packages. The replacement makefiles are under generate/unix, and there is 6585a 6586top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6587 6588Updates for Unix makefiles: 65891) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 65902) Update linker flags (move to end of command line) for AcpiExec 6591utility. 6592Guan Chao. 6593 6594Split ACPICA initialization functions to new file, utxfinit.c. Split from 6595utxface.c to improve modularity and reduce file size. 6596 6597Example Code and Data Size: These are the sizes for the OS-independent 6598acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6599debug version of the code includes the debug output trace mechanism and 6600has a 6601much larger code and data size. 6602 6603 Previous Release: 6604 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6605 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6606 Current Release: 6607 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6608 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6609 6610 66112) iASL Compiler/Disassembler and Tools: 6612 6613iASL: Fixed a problem with constant folding for fixed-length constant 6614expressions. The constant-folding code was not being invoked for constant 6615expressions that allow the use of type 3/4/5 opcodes to generate 6616constants 6617for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6618result 6619in the generation of invalid AML bytecode. ACPICA BZ 970. 6620 6621iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6622apparently automatically emit some of the necessary externals. This 6623change 6624handles these versions in order to eliminate generation warnings. 6625 6626Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6627 6628Disassembler: Add support to decode _PLD buffers. The decoded buffer 6629appears 6630within comments in the output file. 6631 6632Debugger: Fixed a regression with the "Threads" command where 6633AE_BAD_PARAMETER was always returned. 6634 6635---------------------------------------- 663611 July 2012. Summary of changes for version 20120711: 6637 66381) ACPICA Kernel-resident Subsystem: 6639 6640Fixed a possible fault in the return package object repair code. Fixes a 6641problem that can occur when a lone package object is wrapped with an 6642outer 6643package object in order to force conformance to the ACPI specification. 6644Can 6645affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6646_DLM, 6647_CSD, _PSD, _TSD. 6648 6649Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6650PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6651ARB_DIS bit must be implemented in the host-dependent C3 processor power 6652state 6653support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6654both 6655Intel and other vendors. (for Intel: ICH4-M and earlier) 6656 6657This change removes the code to disable/enable bus master arbitration 6658during 6659suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6660causes 6661resume problems on some machines. The change has been in use for over 6662seven 6663years within Linux. 6664 6665Implemented two new external interfaces to support host-directed dynamic 6666ACPI 6667table load and unload. They are intended to simplify the host 6668implementation 6669of hot-plug support: 6670 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6671 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6672table. 6673See the ACPICA reference for additional details. Adds one new file, 6674components/tables/tbxfload.c 6675 6676Implemented and deployed two new interfaces for errors and warnings that 6677are 6678known to be caused by BIOS/firmware issues: 6679 AcpiBiosError: Prints "ACPI Firmware Error" message. 6680 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6681Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6682table 6683and FADT errors. Additional deployment to be completed as appropriate in 6684the 6685future. The associated conditional macros are ACPI_BIOS_ERROR and 6686ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6687ACPICA 6688BZ 6689843. 6690 6691Implicit notify support: ensure that no memory allocation occurs within a 6692critical region. This fix moves a memory allocation outside of the time 6693that a 6694spinlock is held. Fixes issues on systems that do not allow this 6695behavior. 6696Jung-uk Kim. 6697 6698Split exception code utilities and tables into a new file, 6699utilities/utexcep.c 6700 6701Example Code and Data Size: These are the sizes for the OS-independent 6702acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6703debug 6704version of the code includes the debug output trace mechanism and has a 6705much 6706larger code and data size. 6707 6708 Previous Release: 6709 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6710 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6711 Current Release: 6712 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6713 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6714 6715 67162) iASL Compiler/Disassembler and Tools: 6717 6718iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6719of 67200. Jung-uk Kim. 6721 6722Debugger: Enhanced the "tables" command to emit additional information 6723about 6724the current set of ACPI tables, including the owner ID and flags decode. 6725 6726Debugger: Reimplemented the "unload" command to use the new 6727AcpiUnloadParentTable external interface. This command was disable 6728previously 6729due to need for an unload interface. 6730 6731AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6732option 6733will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6734 6735---------------------------------------- 673620 June 2012. Summary of changes for version 20120620: 6737 6738 67391) ACPICA Kernel-resident Subsystem: 6740 6741Implemented support to expand the "implicit notify" feature to allow 6742multiple 6743devices to be notified by a single GPE. This feature automatically 6744generates a 6745runtime device notification in the absence of a BIOS-provided GPE control 6746method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6747notify is 6748provided by ACPICA for Windows compatibility, and is a workaround for 6749BIOS 6750AML 6751code errors. See the description of the AcpiSetupGpeForWake interface in 6752the 6753APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6754 6755Changed some comments and internal function names to simplify and ensure 6756correctness of the Linux code translation. No functional changes. 6757 6758Example Code and Data Size: These are the sizes for the OS-independent 6759acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6760debug 6761version of the code includes the debug output trace mechanism and has a 6762much 6763larger code and data size. 6764 6765 Previous Release: 6766 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6767 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6768 Current Release: 6769 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6770 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6771 6772 67732) iASL Compiler/Disassembler and Tools: 6774 6775Disassembler: Added support to emit short, commented descriptions for the 6776ACPI 6777predefined names in order to improve the readability of the disassembled 6778output. ACPICA BZ 959. Changes include: 6779 1) Emit descriptions for all standard predefined names (_INI, _STA, 6780_PRW, 6781etc.) 6782 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6783 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6784etc.) 6785 6786AcpiSrc: Fixed several long-standing Linux code translation issues. 6787Argument 6788descriptions in function headers are now translated properly to lower 6789case 6790and 6791underscores. ACPICA BZ 961. Also fixes translation problems such as 6792these: 6793(old -> new) 6794 i_aSL -> iASL 6795 00-7_f -> 00-7F 6796 16_k -> 16K 6797 local_fADT -> local_FADT 6798 execute_oSI -> execute_OSI 6799 6800iASL: Fixed a problem where null bytes were inadvertently emitted into 6801some 6802listing files. 6803 6804iASL: Added the existing debug options to the standard help screen. There 6805are 6806no longer two different help screens. ACPICA BZ 957. 6807 6808AcpiHelp: Fixed some typos in the various predefined name descriptions. 6809Also 6810expand some of the descriptions where appropriate. 6811 6812iASL: Fixed the -ot option (display compile times/statistics). Was not 6813working 6814properly for standard output; only worked for the debug file case. 6815 6816---------------------------------------- 681718 May 2012. Summary of changes for version 20120518: 6818 6819 68201) ACPICA Core Subsystem: 6821 6822Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6823defined 6824to block until asynchronous events such as notifies and GPEs have 6825completed. 6826Within ACPICA, it is only called before a notify or GPE handler is 6827removed/uninstalled. It also may be useful for the host OS within related 6828drivers such as the Embedded Controller driver. See the ACPICA reference 6829for 6830additional information. ACPICA BZ 868. 6831 6832ACPI Tables: Added a new error message for a possible overflow failure 6833during 6834the conversion of FADT 32-bit legacy register addresses to internal 6835common 683664- 6837bit GAS structure representation. The GAS has a one-byte "bit length" 6838field, 6839thus limiting the register length to 255 bits. ACPICA BZ 953. 6840 6841Example Code and Data Size: These are the sizes for the OS-independent 6842acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6843debug 6844version of the code includes the debug output trace mechanism and has a 6845much 6846larger code and data size. 6847 6848 Previous Release: 6849 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6850 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6851 Current Release: 6852 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6853 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6854 6855 68562) iASL Compiler/Disassembler and Tools: 6857 6858iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6859macro. 6860This keyword was added late in the ACPI 5.0 release cycle and was not 6861implemented until now. 6862 6863Disassembler: Added support for Operation Region externals. Adds missing 6864support for operation regions that are defined in another table, and 6865referenced locally via a Field or BankField ASL operator. Now generates 6866the 6867correct External statement. 6868 6869Disassembler: Several additional fixes for the External() statement 6870generation 6871related to some ASL operators. Also, order the External() statements 6872alphabetically in the disassembler output. Fixes the External() 6873generation 6874for 6875the Create* field, Alias, and Scope operators: 6876 1) Create* buffer field operators - fix type mismatch warning on 6877disassembly 6878 2) Alias - implement missing External support 6879 3) Scope - fix to make sure all necessary externals are emitted. 6880 6881iASL: Improved pathname support. For include files, merge the prefix 6882pathname 6883with the file pathname and eliminate unnecessary components. Convert 6884backslashes in all pathnames to forward slashes, for readability. Include 6885file 6886pathname changes affect both #include and Include() type operators. 6887 6888iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6889end 6890of a valid line by inserting a newline and then returning the EOF during 6891the 6892next call to GetNextLine. Prevents the line from being ignored due to EOF 6893condition. 6894 6895iASL: Implemented some changes to enhance the IDE support (-vi option.) 6896Error 6897and Warning messages are now correctly recognized for both the source 6898code 6899browser and the global error and warning counts. 6900 6901---------------------------------------- 690220 April 2012. Summary of changes for version 20120420: 6903 6904 69051) ACPICA Core Subsystem: 6906 6907Implemented support for multiple notify handlers. This change adds 6908support 6909to 6910allow multiple system and device notify handlers on Device, Thermal Zone, 6911and 6912Processor objects. This can simplify the host OS notification 6913implementation. 6914Also re-worked and restructured the entire notify support code to 6915simplify 6916handler installation, handler removal, notify event queuing, and notify 6917dispatch to handler(s). Note: there can still only be two global notify 6918handlers - one for system notifies and one for device notifies. There are 6919no 6920changes to the existing handler install/remove interfaces. Lin Ming, Bob 6921Moore, Rafael Wysocki. 6922 6923Fixed a regression in the package repair code where the object reference 6924count was calculated incorrectly. Regression was introduced in the commit 6925"Support to add Package wrappers". 6926 6927Fixed a couple possible memory leaks in the AML parser, in the error 6928recovery 6929path. Jesper Juhl, Lin Ming. 6930 6931Example Code and Data Size: These are the sizes for the OS-independent 6932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6933debug version of the code includes the debug output trace mechanism and 6934has a 6935much larger code and data size. 6936 6937 Previous Release: 6938 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6939 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6940 Current 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 6944 69452) iASL Compiler/Disassembler and Tools: 6946 6947iASL: Fixed a problem with the resource descriptor support where the 6948length 6949of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6950included in cumulative descriptor offset, resulting in incorrect values 6951for 6952resource tags within resource descriptors appearing after a 6953StartDependent* 6954descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6955 6956iASL and Preprocessor: Implemented full support for the #line directive 6957to 6958correctly track original source file line numbers through the .i 6959preprocessor 6960output file - for error and warning messages. 6961 6962iASL: Expand the allowable byte constants for address space IDs. 6963Previously, 6964the allowable range was 0x80-0xFF (user-defined spaces), now the range is 69650x0A-0xFF to allow for custom and new IDs without changing the compiler. 6966 6967iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6968 6969iASL: Add option to completely disable the preprocessor (-Pn). 6970 6971iASL: Now emit all error/warning messages to standard error (stderr) by 6972default (instead of the previous stdout). 6973 6974ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6975Update 6976for resource descriptor offset fix above. Update/cleanup error output 6977routines. Enable and send iASL errors/warnings to an error logfile 6978(error.txt). Send all other iASL output to a logfile (compiler.txt). 6979Fixed 6980several extraneous "unrecognized operator" messages. 6981 6982---------------------------------------- 698320 March 2012. Summary of changes for version 20120320: 6984 6985 69861) ACPICA Core Subsystem: 6987 6988Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6989(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6990apparently 6991does not execute these methods, and therefore these methods are often 6992untested. It has been seen on some systems where the execution of these 6993methods causes errors and also prevents the machine from entering S5. It 6994is 6995therefore suggested that host operating systems do not execute these 6996methods 6997by default. In the future, perhaps these methods can be optionally 6998executed 6999based on the age of the system and/or what is the newest version of 7000Windows 7001that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 7002and 7003AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 7004Ming. 7005 7006Fixed a problem where the length of the local/common FADT was set too 7007early. 7008The local FADT table length cannot be set to the common length until the 7009original length has been examined. There is code that checks the table 7010length 7011and sets various fields appropriately. This can affect older machines 7012with 7013early FADT versions. For example, this can cause inadvertent writes to 7014the 7015CST_CNT register. Julian Anastasov. 7016 7017Fixed a mapping issue related to a physical table override. Use the 7018deferred 7019mapping mechanism for tables loaded via the physical override OSL 7020interface. 7021This allows for early mapping before the virtual memory manager is 7022available. 7023Thomas Renninger, Bob Moore. 7024 7025Enhanced the automatic return-object repair code: Repair a common problem 7026with 7027predefined methods that are defined to return a variable-length Package 7028of 7029sub-objects. If there is only one sub-object, some BIOS ASL code 7030mistakenly 7031simply returns the single object instead of a Package with one sub- 7032object. 7033This new support will repair this error by wrapping a Package object 7034around 7035the original object, creating the correct and expected Package with one 7036sub- 7037object. Names that can be repaired in this manner include: _ALR, _CSD, 7038_HPX, 7039_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 7040939. 7041 7042Changed the exception code returned for invalid ACPI paths passed as 7043parameters to external interfaces such as AcpiEvaluateObject. Was 7044AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 7045 7046Example Code and Data Size: These are the sizes for the OS-independent 7047acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7048debug 7049version of the code includes the debug output trace mechanism and has a 7050much 7051larger code and data size. 7052 7053 Previous Release: 7054 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7055 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7056 Current Release: 7057 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7058 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7059 7060 70612) iASL Compiler/Disassembler and Tools: 7062 7063iASL: Added the infrastructure and initial implementation of a integrated 7064C- 7065like preprocessor. This will simplify BIOS development process by 7066eliminating 7067the need for a separate preprocessing step during builds. On Windows, it 7068also 7069eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 7070features including full #define() macro support are still under 7071development. 7072These preprocessor directives are supported: 7073 #define 7074 #elif 7075 #else 7076 #endif 7077 #error 7078 #if 7079 #ifdef 7080 #ifndef 7081 #include 7082 #pragma message 7083 #undef 7084 #warning 7085In addition, these new command line options are supported: 7086 -D <symbol> Define symbol for preprocessor use 7087 -li Create preprocessed output file (*.i) 7088 -P Preprocess only and create preprocessor output file (*.i) 7089 7090Table Compiler: Fixed a problem where the equals operator within an 7091expression 7092did not work properly. 7093 7094Updated iASL to use the current versions of Bison/Flex. Updated the 7095Windows 7096project file to invoke these tools from the standard location. ACPICA BZ 7097904. 7098Versions supported: 7099 Flex for Windows: V2.5.4 7100 Bison for Windows: V2.4.1 7101 7102---------------------------------------- 710315 February 2012. Summary of changes for version 20120215: 7104 7105 71061) ACPICA Core Subsystem: 7107 7108There have been some major changes to the sleep/wake support code, as 7109described below (a - e). 7110 7111a) The AcpiLeaveSleepState has been split into two interfaces, similar to 7112AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 7113AcpiLeaveSleepStatePrep. This allows the host to perform actions between 7114the 7115time the _BFS method is called and the _WAK method is called. NOTE: all 7116hosts 7117must update their wake/resume code or else sleep/wake will not work 7118properly. 7119Rafael Wysocki. 7120 7121b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 7122_WAK 7123method. Some machines require that the GPEs are enabled before the _WAK 7124method 7125is executed. Thomas Renninger. 7126 7127c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 7128bit. 7129Some BIOS code assumes that WAK_STS will be cleared on resume and use it 7130to 7131determine whether the system is rebooting or resuming. Matthew Garrett. 7132 7133d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 7134Sleep) to 7135match the ACPI specification requirement. Rafael Wysocki. 7136 7137e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 7138registers within the V5 FADT. This support adds two new files: 7139hardware/hwesleep.c implements the support for the new registers. Moved 7140all 7141sleep/wake external interfaces to hardware/hwxfsleep.c. 7142 7143 7144Added a new OSL interface for ACPI table overrides, 7145AcpiOsPhysicalTableOverride. This interface allows the host to override a 7146table via a physical address, instead of the logical address required by 7147AcpiOsTableOverride. This simplifies the host implementation. Initial 7148implementation by Thomas Renninger. The ACPICA implementation creates a 7149single 7150shared function for table overrides that attempts both a logical and a 7151physical override. 7152 7153Expanded the OSL memory read/write interfaces to 64-bit data 7154(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 7155transfer support for GAS register structures passed to AcpiRead and 7156AcpiWrite. 7157 7158Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 7159custom 7160build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 7161model. 7162See the ACPICA reference for details. ACPICA BZ 942. This option removes 7163about 716410% of the code and 5% of the static data, and the following hardware 7165ACPI 7166features become unavailable: 7167 PM Event and Control registers 7168 SCI interrupt (and handler) 7169 Fixed Events 7170 General Purpose Events (GPEs) 7171 Global Lock 7172 ACPI PM timer 7173 7174Updated the unix tarball directory structure to match the ACPICA git 7175source 7176tree. This ensures that the generic unix makefiles work properly (in 7177generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 7178867. 7179 7180Updated the return value of the _REV predefined method to integer value 5 7181to 7182reflect ACPI 5.0 support. 7183 7184Moved the external ACPI PM timer interface prototypes to the public 7185acpixf.h 7186file where they belong. 7187 7188Example Code and Data Size: These are the sizes for the OS-independent 7189acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7190debug 7191version of the code includes the debug output trace mechanism and has a 7192much 7193larger code and data size. 7194 7195 Previous Release: 7196 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7197 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7198 Current Release: 7199 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7200 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7201 7202 72032) iASL Compiler/Disassembler and Tools: 7204 7205Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 7206descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 7207incorrectly displayed. 7208 7209AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 7210specification. 7211 7212---------------------------------------- 721311 January 2012. Summary of changes for version 20120111: 7214 7215 72161) ACPICA Core Subsystem: 7217 7218Implemented a new mechanism to allow host device drivers to check for 7219address 7220range conflicts with ACPI Operation Regions. Both SystemMemory and 7221SystemIO 7222address spaces are supported. A new external interface, 7223AcpiCheckAddressRange, 7224allows drivers to check an address range against the ACPI namespace. See 7225the 7226ACPICA reference for additional details. Adds one new file, 7227utilities/utaddress.c. Lin Ming, Bob Moore. 7228 7229Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 7230Control 7231and 7232Status registers, update the ACPI 5.0 flags, and update internal data 7233structures to handle an FADT larger than 256 bytes. The size of the ACPI 72345.0 7235FADT is 268 bytes. 7236 7237Updated all ACPICA copyrights and signons to 2012. Added the 2012 7238copyright to 7239all module headers and signons, including the standard Linux header. This 7240affects virtually every file in the ACPICA core subsystem, iASL compiler, 7241and 7242all ACPICA utilities. 7243 7244Example Code and Data Size: These are the sizes for the OS-independent 7245acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7246debug 7247version of the code includes the debug output trace mechanism and has a 7248much 7249larger code and data size. 7250 7251 Previous Release: 7252 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7253 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7254 Current Release: 7255 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7256 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7257 7258 72592) iASL Compiler/Disassembler and Tools: 7260 7261Disassembler: fixed a problem with the automatic resource tag generation 7262support. Fixes a problem where the resource tags are inadvertently not 7263constructed if the table being disassembled contains external references 7264to 7265control methods. Moved the actual construction of the tags to after the 7266final 7267namespace is constructed (after 2nd parse is invoked due to external 7268control 7269method references.) ACPICA BZ 941. 7270 7271Table Compiler: Make all "generic" operators caseless. These are the 7272operators 7273like UINT8, String, etc. Making these caseless improves ease-of-use. 7274ACPICA BZ 7275934. 7276 7277---------------------------------------- 727823 November 2011. Summary of changes for version 20111123: 7279 72800) ACPI 5.0 Support: 7281 7282This release contains full support for the ACPI 5.0 specification, as 7283summarized below. 7284 7285Reduced Hardware Support: 7286------------------------- 7287 7288This support allows for ACPI systems without the usual ACPI hardware. 7289This 7290support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 7291will 7292not attempt to initialize or use any of the usual ACPI hardware. Note, 7293when 7294this flag is set, all of the following ACPI hardware is assumed to be not 7295present and is not initialized or accessed: 7296 7297 General Purpose Events (GPEs) 7298 Fixed Events (PM1a/PM1b and PM Control) 7299 Power Management Timer and Console Buttons (power/sleep) 7300 Real-time Clock Alarm 7301 Global Lock 7302 System Control Interrupt (SCI) 7303 The FACS is assumed to be non-existent 7304 7305ACPI Tables: 7306------------ 7307 7308All new tables and updates to existing tables are fully supported in the 7309ACPICA headers (for use by device drivers), the disassembler, and the 7310iASL 7311Data Table Compiler. ACPI 5.0 defines these new tables: 7312 7313 BGRT /* Boot Graphics Resource Table */ 7314 DRTM /* Dynamic Root of Trust for Measurement table */ 7315 FPDT /* Firmware Performance Data Table */ 7316 GTDT /* Generic Timer Description Table */ 7317 MPST /* Memory Power State Table */ 7318 PCCT /* Platform Communications Channel Table */ 7319 PMTT /* Platform Memory Topology Table */ 7320 RASF /* RAS Feature table */ 7321 7322Operation Regions/SpaceIDs: 7323--------------------------- 7324 7325All new operation regions are fully supported by the iASL compiler, the 7326disassembler, and the ACPICA runtime code (for dispatch to region 7327handlers.) 7328The new operation region Space IDs are: 7329 7330 GeneralPurposeIo 7331 GenericSerialBus 7332 7333Resource Descriptors: 7334--------------------- 7335 7336All new ASL resource descriptors are fully supported by the iASL 7337compiler, 7338the 7339ASL/AML disassembler, and the ACPICA runtime Resource Manager code 7340(including 7341all new predefined resource tags). New descriptors are: 7342 7343 FixedDma 7344 GpioIo 7345 GpioInt 7346 I2cSerialBus 7347 SpiSerialBus 7348 UartSerialBus 7349 7350ASL/AML Operators, New and Modified: 7351------------------------------------ 7352 7353One new operator is added, the Connection operator, which is used to 7354associate 7355a GeneralPurposeIo or GenericSerialBus resource descriptor with 7356individual 7357field objects within an operation region. Several new protocols are 7358associated 7359with the AccessAs operator. All are fully supported by the iASL compiler, 7360disassembler, and runtime ACPICA AML interpreter: 7361 7362 Connection // Declare Field Connection 7363attributes 7364 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 7365 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 7366Protocol 7367 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 7368 RawDataBuffer // Data type for Vendor Data 7369fields 7370 7371Predefined ASL/AML Objects: 7372--------------------------- 7373 7374All new predefined objects/control-methods are supported by the iASL 7375compiler 7376and the ACPICA runtime validation/repair (arguments and return values.) 7377New 7378predefined names include the following: 7379 7380Standard Predefined Names (Objects or Control Methods): 7381 _AEI, _CLS, _CPC, _CWS, _DEP, 7382 _DLM, _EVT, _GCP, _CRT, _GWS, 7383 _HRV, _PRE, _PSE, _SRT, _SUB. 7384 7385Resource Tags (Names used to access individual fields within resource 7386descriptors): 7387 _DBT, _DPL, _DRS, _END, _FLC, 7388 _IOR, _LIN, _MOD, _PAR, _PHA, 7389 _PIN, _PPI, _POL, _RXL, _SLV, 7390 _SPE, _STB, _TXL, _VEN. 7391 7392ACPICA External Interfaces: 7393--------------------------- 7394 7395Several new interfaces have been defined for use by ACPI-related device 7396drivers and other host OS services: 7397 7398AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 7399to 7400acquire and release AML mutexes that are defined in the DSDT/SSDT tables 7401provided by the BIOS. They are intended to be used in conjunction with 7402the 7403ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 7404mutual exclusion with the AML code/interpreter. 7405 7406AcpiGetEventResources: Returns the (formatted) resource descriptors as 7407defined 7408by the ACPI 5.0 _AEI object (ACPI Event Information). This object 7409provides 7410resource descriptors associated with hardware-reduced platform events, 7411similar 7412to the AcpiGetCurrentResources interface. 7413 7414Operation Region Handlers: For General Purpose IO and Generic Serial Bus 7415operation regions, information about the Connection() object and any 7416optional 7417length information is passed to the region handler within the Context 7418parameter. 7419 7420AcpiBufferToResource: This interface converts a raw AML buffer containing 7421a 7422resource template or resource descriptor to the ACPI_RESOURCE internal 7423format 7424suitable for use by device drivers. Can be used by an operation region 7425handler 7426to convert the Connection() buffer object into a ACPI_RESOURCE. 7427 7428Miscellaneous/Tools/TestSuites: 7429------------------------------- 7430 7431Support for extended _HID names (Four alpha characters instead of three). 7432Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 7433Support for ACPI 5.0 features in the ASLTS test suite. 7434Fully updated documentation (ACPICA and iASL reference documents.) 7435 7436ACPI Table Definition Language: 7437------------------------------- 7438 7439Support for this language was implemented and released as a subsystem of 7440the 7441iASL compiler in 2010. (See the iASL compiler User Guide.) 7442 7443 7444Non-ACPI 5.0 changes for this release: 7445-------------------------------------- 7446 74471) ACPICA Core Subsystem: 7448 7449Fix a problem with operation region declarations where a failure can 7450occur 7451if 7452the region name and an argument that evaluates to an object (such as the 7453region address) are in different namespace scopes. Lin Ming, ACPICA BZ 7454937. 7455 7456Do not abort an ACPI table load if an invalid space ID is found within. 7457This 7458will be caught later if the offending method is executed. ACPICA BZ 925. 7459 7460Fixed an issue with the FFixedHW space ID where the ID was not always 7461recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 7462 7463Fixed a problem with the 32-bit generation of the unix-specific OSL 7464(osunixxf.c). Lin Ming, ACPICA BZ 936. 7465 7466Several changes made to enable generation with the GCC 4.6 compiler. 7467ACPICA BZ 7468935. 7469 7470New error messages: Unsupported I/O requests (not 8/16/32 bit), and 7471Index/Bank 7472field registers out-of-range. 7473 74742) iASL Compiler/Disassembler and Tools: 7475 7476iASL: Implemented the __PATH__ operator, which returns the full pathname 7477of 7478the current source file. 7479 7480AcpiHelp: Automatically display expanded keyword information for all ASL 7481operators. 7482 7483Debugger: Add "Template" command to disassemble/dump resource template 7484buffers. 7485 7486Added a new master script to generate and execute the ASLTS test suite. 7487Automatically handles 32- and 64-bit generation. See tests/aslts.sh 7488 7489iASL: Fix problem with listing generation during processing of the 7490Switch() 7491operator where AML listing was disabled until the entire Switch block was 7492completed. 7493 7494iASL: Improve support for semicolon statement terminators. Fix "invalid 7495character" message for some cases when the semicolon is used. Semicolons 7496are 7497now allowed after every <Term> grammar element. ACPICA BZ 927. 7498 7499iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7500923. 7501 7502Disassembler: Fix problem with disassembly of the DataTableRegion 7503operator 7504where an inadvertent "Unhandled deferred opcode" message could be 7505generated. 7506 75073) Example Code and Data Size 7508 7509These are the sizes for the OS-independent acpica.lib produced by the 7510Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7511includes the debug output trace mechanism and has a much larger code and 7512data 7513size. 7514 7515 Previous Release: 7516 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7517 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7518 Current Release: 7519 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7520 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7521 7522---------------------------------------- 752322 September 2011. Summary of changes for version 20110922: 7524 75250) ACPI 5.0 News: 7526 7527Support for ACPI 5.0 in ACPICA has been underway for several months and 7528will 7529be released at the same time that ACPI 5.0 is officially released. 7530 7531The ACPI 5.0 specification is on track for release in the next few 7532months. 7533 75341) ACPICA Core Subsystem: 7535 7536Fixed a problem where the maximum sleep time for the Sleep() operator was 7537intended to be limited to two seconds, but was inadvertently limited to 753820 7539seconds instead. 7540 7541Linux and Unix makefiles: Added header file dependencies to ensure 7542correct 7543generation of ACPICA core code and utilities. Also simplified the 7544makefiles 7545considerably through the use of the vpath variable to specify search 7546paths. 7547ACPICA BZ 924. 7548 75492) iASL Compiler/Disassembler and Tools: 7550 7551iASL: Implemented support to check the access length for all fields 7552created to 7553access named Resource Descriptor fields. For example, if a resource field 7554is 7555defined to be two bits, a warning is issued if a CreateXxxxField() is 7556used 7557with an incorrect bit length. This is implemented for all current 7558resource 7559descriptor names. ACPICA BZ 930. 7560 7561Disassembler: Fixed a byte ordering problem with the output of 24-bit and 756256- 7563bit integers. 7564 7565iASL: Fixed a couple of issues associated with variable-length package 7566objects. 1) properly handle constants like One, Ones, Zero -- do not make 7567a 7568VAR_PACKAGE when these are used as a package length. 2) Allow the 7569VAR_PACKAGE 7570opcode (in addition to PACKAGE) when validating object types for 7571predefined 7572names. 7573 7574iASL: Emit statistics for all output files (instead of just the ASL input 7575and 7576AML output). Includes listings, hex files, etc. 7577 7578iASL: Added -G option to the table compiler to allow the compilation of 7579custom 7580ACPI tables. The only part of a table that is required is the standard 758136- 7582byte 7583ACPI header. 7584 7585AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7586headers), 7587which also adds correct 64-bit support. Also, now all output filenames 7588are 7589completely lower case. 7590 7591AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7592loading table files. A warning is issued for any such tables. The only 7593exception is an FADT. This also fixes a possible fault when attempting to 7594load 7595non-AML tables. ACPICA BZ 932. 7596 7597AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7598a 7599missing table terminator could cause a fault when using the -p option. 7600 7601AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7602statistics. 7603 76043) Example Code and Data Size 7605 7606These are the sizes for the OS-independent acpica.lib produced by the 7607Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7608includes the debug output trace mechanism and has a much larger code and 7609data 7610size. 7611 7612 Previous Release (VC 9.0): 7613 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7614 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7615 Current Release (VC 9.0): 7616 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7617 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7618 7619 7620---------------------------------------- 762123 June 2011. Summary of changes for version 20110623: 7622 76231) ACPI CA Core Subsystem: 7624 7625Updated the predefined name repair mechanism to not attempt repair of a 7626_TSS 7627return object if a _PSS object is present. We can only sort the _TSS 7628return 7629package if there is no _PSS within the same scope. This is because if 7630_PSS 7631is 7632present, the ACPI specification dictates that the _TSS Power Dissipation 7633field 7634is to be ignored, and therefore some BIOSs leave garbage values in the 7635_TSS 7636Power field(s). In this case, it is best to just return the _TSS package 7637as- 7638is. Reported by, and fixed with assistance from Fenghua Yu. 7639 7640Added an option to globally disable the control method return value 7641validation 7642and repair. This runtime option can be used to disable return value 7643repair 7644if 7645this is causing a problem on a particular machine. Also added an option 7646to 7647AcpiExec (-dr) to set this disable flag. 7648 7649All makefiles and project files: Major changes to improve generation of 7650ACPICA 7651tools. ACPICA BZ 912: 7652 Reduce default optimization levels to improve compatibility 7653 For Linux, add strict-aliasing=0 for gcc 4 7654 Cleanup and simplify use of command line defines 7655 Cleanup multithread library support 7656 Improve usage messages 7657 7658Linux-specific header: update handling of THREAD_ID and pthread. For the 765932- 7660bit case, improve casting to eliminate possible warnings, especially with 7661the 7662acpica tools. 7663 7664Example Code and Data Size: These are the sizes for the OS-independent 7665acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7666debug 7667version of the code includes the debug output trace mechanism and has a 7668much 7669larger code and data size. 7670 7671 Previous Release (VC 9.0): 7672 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7673 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7674 Current Release (VC 9.0): 7675 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7676 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7677 76782) iASL Compiler/Disassembler and Tools: 7679 7680With this release, a new utility named "acpihelp" has been added to the 7681ACPICA 7682package. This utility summarizes the ACPI specification chapters for the 7683ASL 7684and AML languages. It generates under Linux/Unix as well as Windows, and 7685provides the following functionality: 7686 Find/display ASL operator(s) -- with description and syntax. 7687 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7688 Find/display ACPI predefined name(s) -- with description, number 7689 of arguments, and the return value data type. 7690 Find/display AML opcode name(s) -- with opcode, arguments, and 7691grammar. 7692 Decode/display AML opcode -- with opcode name, arguments, and 7693grammar. 7694 7695Service Layers: Make multi-thread support configurable. Conditionally 7696compile 7697the multi-thread support so that threading libraries will not be linked 7698if 7699not 7700necessary. The only tool that requires multi-thread support is AcpiExec. 7701 7702iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7703of 7704Bison appear to want the interface to yyerror to be a const char * (or at 7705least this is a problem when generating iASL on some systems.) ACPICA BZ 7706923 7707Pierre Lejeune. 7708 7709Tools: Fix for systems where O_BINARY is not defined. Only used for 7710Windows 7711versions of the tools. 7712 7713---------------------------------------- 771427 May 2011. Summary of changes for version 20110527: 7715 77161) ACPI CA Core Subsystem: 7717 7718ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7719table 7720signature. Now, only allow SSDT, OEMx, and a null signature. History: 7721 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7722 (PSDT is now obsolete.) 7723 2) We added support for OEMx tables, signature "OEM" plus a fourth 7724 "don't care" character. 7725 3) Valid tables were encountered with a null signature, so we just 7726 gave up on validating the signature, (05/2008). 7727 4) We encountered non-AML tables such as the MADT, which caused 7728 interpreter errors and kernel faults. So now, we once again allow 7729 only SSDT, OEMx, and now, also a null signature. (05/2011). 7730 7731Added the missing _TDL predefined name to the global name list in order 7732to 7733enable validation. Affects both the core ACPICA code and the iASL 7734compiler. 7735 7736Example Code and Data Size: These are the sizes for the OS-independent 7737acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7738debug 7739version of the code includes the debug output trace mechanism and has a 7740much 7741larger code and data size. 7742 7743 Previous Release (VC 9.0): 7744 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7745 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7746 Current Release (VC 9.0): 7747 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7748 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7749 77502) iASL Compiler/Disassembler and Tools: 7751 7752Debugger/AcpiExec: Implemented support for "complex" method arguments on 7753the 7754debugger command line. This adds support beyond simple integers -- 7755including 7756Strings, Buffers, and Packages. Includes support for nested packages. 7757Increased the default command line buffer size to accommodate these 7758arguments. 7759See the ACPICA reference for details and syntax. ACPICA BZ 917. 7760 7761Debugger/AcpiExec: Implemented support for "default" method arguments for 7762the 7763Execute/Debug command. Now, the debugger will always invoke a control 7764method 7765with the required number of arguments -- even if the command line 7766specifies 7767none or insufficient arguments. It uses default integer values for any 7768missing 7769arguments. Also fixes a bug where only six method arguments maximum were 7770supported instead of the required seven. 7771 7772Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7773and 7774also return status in order to prevent buffer overruns. See the ACPICA 7775reference for details and syntax. ACPICA BZ 921 7776 7777iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7778makefiles to simplify support for the two different but similar parser 7779generators, bison and yacc. 7780 7781Updated the generic unix makefile for gcc 4. The default gcc version is 7782now 7783expected to be 4 or greater, since options specific to gcc 4 are used. 7784 7785---------------------------------------- 778613 April 2011. Summary of changes for version 20110413: 7787 77881) ACPI CA Core Subsystem: 7789 7790Implemented support to execute a so-called "orphan" _REG method under the 7791EC 7792device. This change will force the execution of a _REG method underneath 7793the 7794EC 7795device even if there is no corresponding operation region of type 7796EmbeddedControl. Fixes a problem seen on some machines and apparently is 7797compatible with Windows behavior. ACPICA BZ 875. 7798 7799Added more predefined methods that are eligible for automatic NULL 7800package 7801element removal. This change adds another group of predefined names to 7802the 7803list 7804of names that can be repaired by having NULL package elements dynamically 7805removed. This group are those methods that return a single variable- 7806length 7807package containing simple data types such as integers, buffers, strings. 7808This 7809includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7810_PSL, 7811_Sx, 7812and _TZD. ACPICA BZ 914. 7813 7814Split and segregated all internal global lock functions to a new file, 7815evglock.c. 7816 7817Updated internal address SpaceID for DataTable regions. Moved this 7818internal 7819space 7820id in preparation for ACPI 5.0 changes that will include some new space 7821IDs. 7822This 7823change should not affect user/host code. 7824 7825Example Code and Data Size: These are the sizes for the OS-independent 7826acpica.lib 7827produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7828version of 7829the code includes the debug output trace mechanism and has a much larger 7830code 7831and 7832data size. 7833 7834 Previous Release (VC 9.0): 7835 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7836 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7837 Current Release (VC 9.0): 7838 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7839 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7840 78412) iASL Compiler/Disassembler and Tools: 7842 7843iASL/DTC: Major update for new grammar features. Allow generic data types 7844in 7845custom ACPI tables. Field names are now optional. Any line can be split 7846to 7847multiple lines using the continuation char (\). Large buffers now use 7848line- 7849continuation character(s) and no colon on the continuation lines. See the 7850grammar 7851update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7852Moore. 7853 7854iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7855statements. 7856Since the parser stuffs a "zero" as the return value for these statements 7857(due 7858to 7859the underlying AML grammar), they were seen as "return with value" by the 7860iASL 7861semantic checking. They are now seen correctly as "null" return 7862statements. 7863 7864iASL: Check if a_REG declaration has a corresponding Operation Region. 7865Adds a 7866check for each _REG to ensure that there is in fact a corresponding 7867operation 7868region declaration in the same scope. If not, the _REG method is not very 7869useful 7870since it probably won't be executed. ACPICA BZ 915. 7871 7872iASL/DTC: Finish support for expression evaluation. Added a new 7873expression 7874parser 7875that implements c-style operator precedence and parenthesization. ACPICA 7876bugzilla 7877908. 7878 7879Disassembler/DTC: Remove support for () and <> style comments in data 7880tables. 7881Now 7882that DTC has full expression support, we don't want to have comment 7883strings 7884that 7885start with a parentheses or a less-than symbol. Now, only the standard /* 7886and 7887// 7888comments are supported, as well as the bracket [] comments. 7889 7890AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7891"unusual" 7892headers in the acpidump file. Update the header validation to support 7893these 7894tables. Problem introduced in previous AcpiXtract version in the change 7895to 7896support "wrong checksum" error messages emitted by acpidump utility. 7897 7898iASL: Add a * option to generate all template files (as a synonym for 7899ALL) 7900as 7901in 7902"iasl -T *" or "iasl -T ALL". 7903 7904iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7905completely 7906abort the compiler on "fatal" errors, simply should abort the current 7907compile. 7908This allows multiple compiles with a single (possibly wildcard) compiler 7909invocation. 7910 7911---------------------------------------- 791216 March 2011. Summary of changes for version 20110316: 7913 79141) ACPI CA Core Subsystem: 7915 7916Fixed a problem caused by a _PRW method appearing at the namespace root 7917scope 7918during the setup of wake GPEs. A fault could occur if a _PRW directly 7919under 7920the 7921root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7922 7923Implemented support for "spurious" Global Lock interrupts. On some 7924systems, a 7925global lock interrupt can occur without the pending flag being set. Upon 7926a 7927GL 7928interrupt, we now ensure that a thread is actually waiting for the lock 7929before 7930signaling GL availability. Rafael Wysocki, Bob Moore. 7931 7932Example Code and Data Size: These are the sizes for the OS-independent 7933acpica.lib 7934produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7935version of 7936the code includes the debug output trace mechanism and has a much larger 7937code 7938and 7939data size. 7940 7941 Previous Release (VC 9.0): 7942 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7943 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7944 Current Release (VC 9.0): 7945 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7946 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7947 79482) iASL Compiler/Disassembler and Tools: 7949 7950Implemented full support for the "SLIC" ACPI table. Includes support in 7951the 7952header files, disassembler, table compiler, and template generator. Bob 7953Moore, 7954Lin Ming. 7955 7956AcpiXtract: Correctly handle embedded comments and messages from 7957AcpiDump. 7958Apparently some or all versions of acpidump will occasionally emit a 7959comment 7960like 7961"Wrong checksum", etc., into the dump file. This was causing problems for 7962AcpiXtract. ACPICA BZ 905. 7963 7964iASL: Fix the Linux makefile by removing an inadvertent double file 7965inclusion. 7966ACPICA BZ 913. 7967 7968AcpiExec: Update installation of operation region handlers. Install one 7969handler 7970for a user-defined address space. This is used by the ASL test suite 7971(ASLTS). 7972 7973---------------------------------------- 797411 February 2011. Summary of changes for version 20110211: 7975 79761) ACPI CA Core Subsystem: 7977 7978Added a mechanism to defer _REG methods for some early-installed 7979handlers. 7980Most user handlers should be installed before call to 7981AcpiEnableSubsystem. 7982However, Event handlers and region handlers should be installed after 7983AcpiInitializeObjects. Override handlers for the "default" regions should 7984be 7985installed early, however. This change executes all _REG methods for the 7986default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7987chicken/egg issues between them. ACPICA BZ 848. 7988 7989Implemented an optimization for GPE detection. This optimization will 7990simply 7991ignore GPE registers that contain no enabled GPEs -- there is no need to 7992read the register since this information is available internally. This 7993becomes more important on machines with a large GPE space. ACPICA 7994bugzilla 7995884. Lin Ming. Suggestion from Joe Liu. 7996 7997Removed all use of the highly unreliable FADT revision field. The 7998revision 7999number in the FADT has been found to be completely unreliable and cannot 8000be 8001trusted. Only the actual table length can be used to infer the version. 8002This 8003change updates the ACPICA core and the disassembler so that both no 8004longer 8005even look at the FADT version and instead depend solely upon the FADT 8006length. 8007 8008Fix an unresolved name issue for the no-debug and no-error-message source 8009generation cases. The _AcpiModuleName was left undefined in these cases, 8010but 8011it is actually needed as a parameter to some interfaces. Define 8012_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 8013 8014Split several large files (makefiles and project files updated) 8015 utglobal.c -> utdecode.c 8016 dbcomds.c -> dbmethod.c dbnames.c 8017 dsopcode.c -> dsargs.c dscontrol.c 8018 dsload.c -> dsload2.c 8019 aslanalyze.c -> aslbtypes.c aslwalks.c 8020 8021Example Code and Data Size: These are the sizes for the OS-independent 8022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8023debug version of the code includes the debug output trace mechanism and 8024has 8025a much larger code and data size. 8026 8027 Previous Release (VC 9.0): 8028 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8029 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8030 Current Release (VC 9.0): 8031 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8032 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8033 80342) iASL Compiler/Disassembler and Tools: 8035 8036iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 8037These are useful C-style macros with the standard definitions. ACPICA 8038bugzilla 898. 8039 8040iASL/DTC: Added support for integer expressions and labels. Support for 8041full 8042expressions for all integer fields in all ACPI tables. Support for labels 8043in 8044"generic" portions of tables such as UEFI. See the iASL reference manual. 8045 8046Debugger: Added a command to display the status of global handlers. The 8047"handlers" command will display op region, fixed event, and miscellaneous 8048global handlers. installation status -- and for op regions, whether 8049default 8050or user-installed handler will be used. 8051 8052iASL: Warn if reserved method incorrectly returns a value. Many 8053predefined 8054names are defined such that they do not return a value. If implemented as 8055a 8056method, issue a warning if such a name explicitly returns a value. ACPICA 8057Bugzilla 855. 8058 8059iASL: Added detection of GPE method name conflicts. Detects a conflict 8060where 8061there are two GPE methods of the form _Lxy and _Exy in the same scope. 8062(For 8063example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 8064 8065iASL/DTC: Fixed a couple input scanner issues with comments and line 8066numbers. Comment remover could get confused and miss a comment ending. 8067Fixed 8068a problem with line counter maintenance. 8069 8070iASL/DTC: Reduced the severity of some errors from fatal to error. There 8071is 8072no need to abort on simple errors within a field definition. 8073 8074Debugger: Simplified the output of the help command. All help output now 8075in 8076a single screen, instead of help subcommands. ACPICA Bugzilla 897. 8077 8078---------------------------------------- 807912 January 2011. Summary of changes for version 20110112: 8080 80811) ACPI CA Core Subsystem: 8082 8083Fixed a race condition between method execution and namespace walks that 8084can 8085possibly cause a fault. The problem was apparently introduced in version 808620100528 as a result of a performance optimization that reduces the 8087number 8088of 8089namespace walks upon method exit by using the delete_namespace_subtree 8090function instead of the delete_namespace_by_owner function used 8091previously. 8092Bug is a missing namespace lock in the delete_namespace_subtree function. 8093dana.myers@oracle.com 8094 8095Fixed several issues and a possible fault with the automatic "serialized" 8096method support. History: This support changes a method to "serialized" on 8097the 8098fly if the method generates an AE_ALREADY_EXISTS error, indicating the 8099possibility that it cannot handle reentrancy. This fix repairs a couple 8100of 8101issues seen in the field, especially on machines with many cores: 8102 8103 1) Delete method children only upon the exit of the last thread, 8104 so as to not delete objects out from under other running threads 8105 (and possibly causing a fault.) 8106 2) Set the "serialized" bit for the method only upon the exit of the 8107 Last thread, so as to not cause deadlock when running threads 8108 attempt to exit. 8109 3) Cleanup the use of the AML "MethodFlags" and internal method flags 8110 so that there is no longer any confusion between the two. 8111 8112 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 8113 8114Debugger: Now lock the namespace for duration of a namespace dump. 8115Prevents 8116issues if the namespace is changing dynamically underneath the debugger. 8117Especially affects temporary namespace nodes, since the debugger displays 8118these also. 8119 8120Updated the ordering of include files. The ACPICA headers should appear 8121before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 8122set 8123any necessary compiler-specific defines, etc. Affects the ACPI-related 8124tools 8125and utilities. 8126 8127Updated all ACPICA copyrights and signons to 2011. Added the 2011 8128copyright 8129to all module headers and signons, including the Linux header. This 8130affects 8131virtually every file in the ACPICA core subsystem, iASL compiler, and all 8132utilities. 8133 8134Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 8135project files for VC++ 6.0 are now obsolete. New project files can be 8136found 8137under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 8138details. 8139 8140Example Code and Data Size: These are the sizes for the OS-independent 8141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8142debug version of the code includes the debug output trace mechanism and 8143has a 8144much larger code and data size. 8145 8146 Previous Release (VC 6.0): 8147 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8148 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8149 Current Release (VC 9.0): 8150 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8151 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8152 81532) iASL Compiler/Disassembler and Tools: 8154 8155iASL: Added generic data types to the Data Table compiler. Add "generic" 8156data 8157types such as UINT32, String, Unicode, etc., to simplify the generation 8158of 8159platform-defined tables such as UEFI. Lin Ming. 8160 8161iASL: Added listing support for the Data Table Compiler. Adds listing 8162support 8163(-l) to display actual binary output for each line of input code. 8164 8165---------------------------------------- 816609 December 2010. Summary of changes for version 20101209: 8167 81681) ACPI CA Core Subsystem: 8169 8170Completed the major overhaul of the GPE support code that was begun in 8171July 81722010. Major features include: removal of _PRW execution in ACPICA (host 8173executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 8174changes to existing interfaces, simplification of GPE handler operation, 8175and 8176a handful of new interfaces: 8177 8178 AcpiUpdateAllGpes 8179 AcpiFinishGpe 8180 AcpiSetupGpeForWake 8181 AcpiSetGpeWakeMask 8182 One new file, evxfgpe.c to consolidate all external GPE interfaces. 8183 8184See the ACPICA Programmer Reference for full details and programming 8185information. See the new section 4.4 "General Purpose Event (GPE) 8186Support" 8187for a full overview, and section 8.7 "ACPI General Purpose Event 8188Management" 8189for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 8190Ming, 8191Bob Moore, Rafael Wysocki. 8192 8193Implemented a new GPE feature for Windows compatibility, the "Implicit 8194Wake 8195GPE Notify". This feature will automatically issue a Notify(2) on a 8196device 8197when a Wake GPE is received if there is no corresponding GPE method or 8198handler. ACPICA BZ 870. 8199 8200Fixed a problem with the Scope() operator during table parse and load 8201phase. 8202During load phase (table load or method execution), the scope operator 8203should 8204not enter the target into the namespace. Instead, it should open a new 8205scope 8206at the target location. Linux BZ 19462, ACPICA BZ 882. 8207 8208Example Code and Data Size: These are the sizes for the OS-independent 8209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8210debug version of the code includes the debug output trace mechanism and 8211has a 8212much larger code and data size. 8213 8214 Previous Release: 8215 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8216 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8217 Current Release: 8218 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8219 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8220 82212) iASL Compiler/Disassembler and Tools: 8222 8223iASL: Relax the alphanumeric restriction on _CID strings. These strings 8224are 8225"bus-specific" per the ACPI specification, and therefore any characters 8226are 8227acceptable. The only checks that can be performed are for a null string 8228and 8229perhaps for a leading asterisk. ACPICA BZ 886. 8230 8231iASL: Fixed a problem where a syntax error that caused a premature EOF 8232condition on the source file emitted a very confusing error message. The 8233premature EOF is now detected correctly. ACPICA BZ 891. 8234 8235Disassembler: Decode the AccessSize within a Generic Address Structure 8236(byte 8237access, word access, etc.) Note, this field does not allow arbitrary bit 8238access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 8239 8240New: AcpiNames utility - Example namespace dump utility. Shows an example 8241of 8242ACPICA configuration for a minimal namespace dump utility. Uses table and 8243namespace managers, but no AML interpreter. Does not add any 8244functionality 8245over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 8246partition and configure ACPICA. ACPICA BZ 883. 8247 8248AML Debugger: Increased the debugger buffer size for method return 8249objects. 8250Was 4K, increased to 16K. Also enhanced error messages for debugger 8251method 8252execution, including the buffer overflow case. 8253 8254---------------------------------------- 825513 October 2010. Summary of changes for version 20101013: 8256 82571) ACPI CA Core Subsystem: 8258 8259Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 8260now 8261clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 8262HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 8263 8264Changed the type of the predefined namespace object _TZ from ThermalZone 8265to 8266Device. This was found to be confusing to the host software that 8267processes 8268the various thermal zones, since _TZ is not really a ThermalZone. 8269However, 8270a 8271Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 8272Zhang. 8273 8274Added Windows Vista SP2 to the list of supported _OSI strings. The actual 8275string is "Windows 2006 SP2". 8276 8277Eliminated duplicate code in AcpiUtExecute* functions. Now that the 8278nsrepair 8279code automatically repairs _HID-related strings, this type of code is no 8280longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 8281878. 8282 8283Example Code and Data Size: These are the sizes for the OS-independent 8284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8285debug version of the code includes the debug output trace mechanism and 8286has a 8287much larger code and data size. 8288 8289 Previous Release: 8290 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8291 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8292 Current Release: 8293 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8294 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8295 82962) iASL Compiler/Disassembler and Tools: 8297 8298iASL: Implemented additional compile-time validation for _HID strings. 8299The 8300non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 8301length 8302of 8303the string must be exactly seven or eight characters. For both _HID and 8304_CID 8305strings, all characters must be alphanumeric. ACPICA BZ 874. 8306 8307iASL: Allow certain "null" resource descriptors. Some BIOS code creates 8308descriptors that are mostly or all zeros, with the expectation that they 8309will 8310be filled in at runtime. iASL now allows this as long as there is a 8311"resource 8312tag" (name) associated with the descriptor, which gives the ASL a handle 8313needed to modify the descriptor. ACPICA BZ 873. 8314 8315Added single-thread support to the generic Unix application OSL. 8316Primarily 8317for iASL support, this change removes the use of semaphores in the 8318single- 8319threaded ACPICA tools/applications - increasing performance. The 8320_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 8321option. ACPICA BZ 879. 8322 8323AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 8324support 8325for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 8326 8327iASL: Moved all compiler messages to a new file, aslmessages.h. 8328 8329---------------------------------------- 833015 September 2010. Summary of changes for version 20100915: 8331 83321) ACPI CA Core Subsystem: 8333 8334Removed the AcpiOsDerivePciId OSL interface. The various host 8335implementations 8336of this function were not OS-dependent and are now obsolete and can be 8337removed from all host OSLs. This function has been replaced by 8338AcpiHwDerivePciId, which is now part of the ACPICA core code. 8339AcpiHwDerivePciId has been implemented without recursion. Adds one new 8340module, hwpci.c. ACPICA BZ 857. 8341 8342Implemented a dynamic repair for _HID and _CID strings. The following 8343problems are now repaired at runtime: 1) Remove a leading asterisk in the 8344string, and 2) the entire string is uppercased. Both repairs are in 8345accordance with the ACPI specification and will simplify host driver 8346code. 8347ACPICA BZ 871. 8348 8349The ACPI_THREAD_ID type is no longer configurable, internally it is now 8350always UINT64. This simplifies the ACPICA code, especially any printf 8351output. 8352UINT64 is the only common data type for all thread_id types across all 8353operating systems. It is now up to the host OSL to cast the native 8354thread_id 8355type to UINT64 before returning the value to ACPICA (via 8356AcpiOsGetThreadId). 8357Lin Ming, Bob Moore. 8358 8359Added the ACPI_INLINE type to enhance the ACPICA configuration. The 8360"inline" 8361keyword is not standard across compilers, and this type allows inline to 8362be 8363configured on a per-compiler basis. Lin Ming. 8364 8365Made the system global AcpiGbl_SystemAwakeAndRunning publicly 8366available. 8367Added an extern for this boolean in acpixf.h. Some hosts utilize this 8368value 8369during suspend/restore operations. ACPICA BZ 869. 8370 8371All code that implements error/warning messages with the "ACPI:" prefix 8372has 8373been moved to a new module, utxferror.c. 8374 8375The UINT64_OVERLAY was moved to utmath.c, which is the only module where 8376it 8377is used. ACPICA BZ 829. Lin Ming, Bob Moore. 8378 8379Example Code and Data Size: These are the sizes for the OS-independent 8380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8381debug version of the code includes the debug output trace mechanism and 8382has a 8383much larger code and data size. 8384 8385 Previous Release: 8386 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8387 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8388 Current Release: 8389 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8390 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8391 83922) iASL Compiler/Disassembler and Tools: 8393 8394iASL/Disassembler: Write ACPI errors to stderr instead of the output 8395file. 8396This keeps the output files free of random error messages that may 8397originate 8398from within the namespace/interpreter code. Used this opportunity to 8399merge 8400all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 8401866. Lin Ming, Bob Moore. 8402 8403Tools: update some printfs for ansi warnings on size_t. Handle width 8404change 8405of size_t on 32-bit versus 64-bit generations. Lin Ming. 8406 8407---------------------------------------- 840806 August 2010. Summary of changes for version 20100806: 8409 84101) ACPI CA Core Subsystem: 8411 8412Designed and implemented a new host interface to the _OSI support code. 8413This 8414will allow the host to dynamically add or remove multiple _OSI strings, 8415as 8416well as install an optional handler that is called for each _OSI 8417invocation. 8418Also added a new AML debugger command, 'osi' to display and modify the 8419global 8420_OSI string table, and test support in the AcpiExec utility. See the 8421ACPICA 8422reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 8423New Functions: 8424 AcpiInstallInterface - Add an _OSI string. 8425 AcpiRemoveInterface - Delete an _OSI string. 8426 AcpiInstallInterfaceHandler - Install optional _OSI handler. 8427Obsolete Functions: 8428 AcpiOsValidateInterface - no longer used. 8429New Files: 8430 source/components/utilities/utosi.c 8431 8432Re-introduced the support to enable multi-byte transfers for Embedded 8433Controller (EC) operation regions. A reported problem was found to be a 8434bug 8435in the host OS, not in the multi-byte support. Previously, the maximum 8436data 8437size passed to the EC operation region handler was a single byte. There 8438are 8439often EC Fields larger than one byte that need to be transferred, and it 8440is 8441useful for the EC driver to lock these as a single transaction. This 8442change 8443enables single transfers larger than 8 bits. This effectively changes the 8444access to the EC space from ByteAcc to AnyAcc, and will probably require 8445changes to the host OS Embedded Controller driver to enable 16/32/64/256- 8446bit 8447transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 8448 8449Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 8450prototype in acpiosxf.h had the output value pointer as a (void *). 8451It should be a (UINT64 *). This may affect some host OSL code. 8452 8453Fixed a couple problems with the recently modified Linux makefiles for 8454iASL 8455and AcpiExec. These new makefiles place the generated object files in the 8456local directory so that there can be no collisions between the files that 8457are 8458shared between them that are compiled with different options. 8459 8460Example Code and Data Size: These are the sizes for the OS-independent 8461acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8462debug version of the code includes the debug output trace mechanism and 8463has a 8464much larger code and data size. 8465 8466 Previous Release: 8467 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8468 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8469 Current Release: 8470 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8471 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8472 84732) iASL Compiler/Disassembler and Tools: 8474 8475iASL/Disassembler: Added a new option (-da, "disassemble all") to load 8476the 8477namespace from and disassemble an entire group of AML files. Useful for 8478loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 8479and 8480disassembling with one simple command. ACPICA BZ 865. Lin Ming. 8481 8482iASL: Allow multiple invocations of -e option. This change allows 8483multiple 8484uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 8485834. 8486Lin Ming. 8487 8488---------------------------------------- 848902 July 2010. Summary of changes for version 20100702: 8490 84911) ACPI CA Core Subsystem: 8492 8493Implemented several updates to the recently added GPE reference count 8494support. The model for "wake" GPEs is changing to give the host OS 8495complete 8496control of these GPEs. Eventually, the ACPICA core will not execute any 8497_PRW 8498methods, since the host already must execute them. Also, additional 8499changes 8500were made to help ensure that the reference counts are kept in proper 8501synchronization with reality. Rafael J. Wysocki. 8502 85031) Ensure that GPEs are not enabled twice during initialization. 85042) Ensure that GPE enable masks stay in sync with the reference count. 85053) Do not inadvertently enable GPEs when writing GPE registers. 85064) Remove the internal wake reference counter and add new AcpiGpeWakeup 8507interface. This interface will set or clear individual GPEs for wakeup. 85085) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8509interfaces 8510are now used for "runtime" GPEs only. 8511 8512Changed the behavior of the GPE install/remove handler interfaces. The 8513GPE 8514is 8515no longer disabled during this process, as it was found to cause problems 8516on 8517some machines. Rafael J. Wysocki. 8518 8519Reverted a change introduced in version 20100528 to enable Embedded 8520Controller multi-byte transfers. This change was found to cause problems 8521with 8522Index Fields and possibly Bank Fields. It will be reintroduced when these 8523problems have been resolved. 8524 8525Fixed a problem with references to Alias objects within Package Objects. 8526A 8527reference to an Alias within the definition of a Package was not always 8528resolved properly. Aliases to objects like Processors, Thermal zones, 8529etc. 8530were resolved to the actual object instead of a reference to the object 8531as 8532it 8533should be. Package objects are only allowed to contain integer, string, 8534buffer, package, and reference objects. Redhat bugzilla 608648. 8535 8536Example Code and Data Size: These are the sizes for the OS-independent 8537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8538debug version of the code includes the debug output trace mechanism and 8539has a 8540much larger code and data size. 8541 8542 Previous Release: 8543 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8544 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8545 Current Release: 8546 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8547 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8548 85492) iASL Compiler/Disassembler and Tools: 8550 8551iASL: Implemented a new compiler subsystem to allow definition and 8552compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8553These 8554are called "ACPI Data Tables", and the new compiler is the "Data Table 8555Compiler". This compiler is intended to simplify the existing error-prone 8556process of creating these tables for the BIOS, as well as allowing the 8557disassembly, modification, recompilation, and override of existing ACPI 8558data 8559tables. See the iASL User Guide for detailed information. 8560 8561iASL: Implemented a new Template Generator option in support of the new 8562Data 8563Table Compiler. This option will create examples of all known ACPI tables 8564that can be used as the basis for table development. See the iASL 8565documentation and the -T option. 8566 8567Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8568Descriptor Table). 8569 8570Updated the Linux makefiles for iASL and AcpiExec to place the generated 8571object files in the local directory so that there can be no collisions 8572between the shared files between them that are generated with different 8573options. 8574 8575Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8576Use 8577the #define __APPLE__ to enable this support. 8578 8579---------------------------------------- 858028 May 2010. Summary of changes for version 20100528: 8581 8582Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8583available at www.acpi.info. This is primarily an errata release. 8584 85851) ACPI CA Core Subsystem: 8586 8587Undefined ACPI tables: We are looking for the definitions for the 8588following 8589ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8590 8591Implemented support to enable multi-byte transfers for Embedded 8592Controller 8593(EC) operation regions. Previously, the maximum data size passed to the 8594EC 8595operation region handler was a single byte. There are often EC Fields 8596larger 8597than one byte that need to be transferred, and it is useful for the EC 8598driver 8599to lock these as a single transaction. This change enables single 8600transfers 8601larger than 8 bits. This effectively changes the access to the EC space 8602from 8603ByteAcc to AnyAcc, and will probably require changes to the host OS 8604Embedded 8605Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8606bit 8607transfers. Alexey Starikovskiy, Lin Ming 8608 8609Implemented a performance enhancement for namespace search and access. 8610This 8611change enhances the performance of namespace searches and walks by adding 8612a 8613backpointer to the parent in each namespace node. On large namespaces, 8614this 8615change can improve overall ACPI performance by up to 9X. Adding a pointer 8616to 8617each namespace node increases the overall size of the internal namespace 8618by 8619about 5%, since each namespace entry usually consists of both a namespace 8620node and an ACPI operand object. However, this is the first growth of the 8621namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8622 8623Implemented a performance optimization that reduces the number of 8624namespace 8625walks. On control method exit, only walk the namespace if the method is 8626known 8627to have created namespace objects outside of its local scope. Previously, 8628the 8629entire namespace was traversed on each control method exit. This change 8630can 8631improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8632Moore. 8633 8634Added support to truncate I/O addresses to 16 bits for Windows 8635compatibility. 8636Some ASL code has been seen in the field that inadvertently has bits set 8637above bit 15. This feature is optional and is enabled if the BIOS 8638requests 8639any Windows OSI strings. It can also be enabled by the host OS. Matthew 8640Garrett, Bob Moore. 8641 8642Added support to limit the maximum time for the ASL Sleep() operator. To 8643prevent accidental deep sleeps, limit the maximum time that Sleep() will 8644actually sleep. Configurable, the default maximum is two seconds. ACPICA 8645bugzilla 854. 8646 8647Added run-time validation support for the _WDG and_WED Microsoft 8648predefined 8649methods. These objects are defined by "Windows Instrumentation", and are 8650not 8651part of the ACPI spec. ACPICA BZ 860. 8652 8653Expanded all statistic counters used during namespace and device 8654initialization from 16 to 32 bits in order to support very large 8655namespaces. 8656 8657Replaced all instances of %d in printf format specifiers with %u since 8658nearly 8659all integers in ACPICA are unsigned. 8660 8661Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8662returned 8663as AE_NO_HANDLER. 8664 8665Example Code and Data Size: These are the sizes for the OS-independent 8666acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8667debug version of the code includes the debug output trace mechanism and 8668has a 8669much larger code and data size. 8670 8671 Previous Release: 8672 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8673 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8674 Current Release: 8675 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8676 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8677 86782) iASL Compiler/Disassembler and Tools: 8679 8680iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8681methods. These objects are defined by "Windows Instrumentation", and are 8682not 8683part of the ACPI spec. ACPICA BZ 860. 8684 8685AcpiExec: added option to disable the memory tracking mechanism. The -dt 8686option will disable the tracking mechanism, which improves performance 8687considerably. 8688 8689AcpiExec: Restructured the command line options into -d (disable) and -e 8690(enable) options. 8691 8692---------------------------------------- 869328 April 2010. Summary of changes for version 20100428: 8694 86951) ACPI CA Core Subsystem: 8696 8697Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8698including FADT-based and GPE Block Devices, execute any _PRW methods in 8699the 8700new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8701runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8702immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8703Devices. Provides compatibility with other ACPI implementations. Two new 8704files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8705Moore. 8706 8707Fixed a regression introduced in version 20100331 within the table 8708manager 8709where initial table loading could fail. This was introduced in the fix 8710for 8711AcpiReallocateRootTable. Also, renamed some of fields in the table 8712manager 8713data structures to clarify their meaning and use. 8714 8715Fixed a possible allocation overrun during internal object copy in 8716AcpiUtCopySimpleObject. The original code did not correctly handle the 8717case 8718where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8719847. 8720 8721Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8722possible access beyond end-of-allocation. Also, now fully validate 8723descriptor 8724(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8725 8726Example Code and Data Size: These are the sizes for the OS-independent 8727acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8728debug version of the code includes the debug output trace mechanism and 8729has a 8730much larger code and data size. 8731 8732 Previous Release: 8733 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8734 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8735 Current Release: 8736 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8737 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8738 87392) iASL Compiler/Disassembler and Tools: 8740 8741iASL: Implemented Min/Max/Len/Gran validation for address resource 8742descriptors. This change implements validation for the address fields 8743that 8744are common to all address-type resource descriptors. These checks are 8745implemented: Checks for valid Min/Max, length within the Min/Max window, 8746valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8747per 8748table 6-40 in the ACPI 4.0a specification. Also split the large 8749aslrestype1.c 8750and aslrestype2.c files into five new files. ACPICA BZ 840. 8751 8752iASL: Added support for the _Wxx predefined names. This support was 8753missing 8754and these names were not recognized by the compiler as valid predefined 8755names. ACPICA BZ 851. 8756 8757iASL: Added an error for all predefined names that are defined to return 8758no 8759value and thus must be implemented as Control Methods. These include all 8760of 8761the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8762names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8763 8764iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8765an 8766ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8767be 8768dynamically loaded via the Load() operator. Also cleaned up output for 8769the 8770- 8771ta and -tc options. ACPICA BZ 853. 8772 8773Tests: Added a new file with examples of extended iASL error checking. 8774Demonstrates the advanced error checking ability of the iASL compiler. 8775Available at tests/misc/badcode.asl. 8776 8777---------------------------------------- 877831 March 2010. Summary of changes for version 20100331: 8779 87801) ACPI CA Core Subsystem: 8781 8782Completed a major update for the GPE support in order to improve support 8783for 8784shared GPEs and to simplify both host OS and ACPICA code. Added a 8785reference 8786count mechanism to support shared GPEs that require multiple device 8787drivers. 8788Several external interfaces have changed. One external interface has been 8789removed. One new external interface was added. Most of the GPE external 8790interfaces now use the GPE spinlock instead of the events mutex (and the 8791Flags parameter for many GPE interfaces has been removed.) See the 8792updated 8793ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8794Rafael 8795Wysocki. ACPICA BZ 831. 8796 8797Changed: 8798 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8799Removed: 8800 AcpiSetGpeType 8801New: 8802 AcpiSetGpe 8803 8804Implemented write support for DataTable operation regions. These regions 8805are 8806defined via the DataTableRegion() operator. Previously, only read support 8807was 8808implemented. The ACPI specification allows DataTableRegions to be 8809read/write, 8810however. 8811 8812Implemented a new subsystem option to force a copy of the DSDT to local 8813memory. Optionally copy the entire DSDT to local memory (instead of 8814simply 8815mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8816replace 8817the original DSDT, creating the need for this option. Default is FALSE, 8818do 8819not copy the DSDT. 8820 8821Implemented detection of a corrupted or replaced DSDT. This change adds 8822support to detect a DSDT that has been corrupted and/or replaced from 8823outside 8824the OS (by firmware). This is typically catastrophic for the system, but 8825has 8826been seen on some machines. Once this problem has been detected, the DSDT 8827copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8828 8829Fixed two problems with AcpiReallocateRootTable during the root table 8830copy. 8831When copying the root table to the new allocation, the length used was 8832incorrect. The new size was used instead of the current table size, 8833meaning 8834too much data was copied. Also, the count of available slots for ACPI 8835tables 8836was not set correctly. Alexey Starikovskiy, Bob Moore. 8837 8838Example Code and Data Size: These are the sizes for the OS-independent 8839acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8840debug version of the code includes the debug output trace mechanism and 8841has a 8842much larger code and data size. 8843 8844 Previous Release: 8845 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8846 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8847 Current Release: 8848 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8849 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8850 88512) iASL Compiler/Disassembler and Tools: 8852 8853iASL: Implement limited typechecking for values returned from predefined 8854control methods. The type of any returned static (unnamed) object is now 8855validated. For example, Return(1). ACPICA BZ 786. 8856 8857iASL: Fixed a predefined name object verification regression. Fixes a 8858problem 8859introduced in version 20100304. An error is incorrectly generated if a 8860predefined name is declared as a static named object with a value defined 8861using the keywords "Zero", "One", or "Ones". Lin Ming. 8862 8863iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8864by 8865reducing the requested registry access rights. ACPICA BZ 842. 8866 8867Disassembler: fixed a possible fault when generating External() 8868statements. 8869Introduced in commit ae7d6fd: Properly handle externals with parent- 8870prefix 8871(carat). Fixes a string length allocation calculation. Lin Ming. 8872 8873---------------------------------------- 887404 March 2010. Summary of changes for version 20100304: 8875 88761) ACPI CA Core Subsystem: 8877 8878Fixed a possible problem with the AML Mutex handling function 8879AcpiExReleaseMutex where the function could fault under the very rare 8880condition when the interpreter has blocked, the interpreter lock is 8881released, 8882the interpreter is then reentered via the same thread, and attempts to 8883acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8884Lin 8885Ming. 8886 8887Implemented additional configuration support for the AML "Debug Object". 8888Output from the debug object can now be enabled via a global variable, 8889AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8890debugging. 8891This debug output is now available in the release version of ACPICA 8892instead 8893of just the debug version. Also, the entire debug output module can now 8894be 8895configured out of the ACPICA build if desired. One new file added, 8896executer/exdebug.c. Lin Ming, Bob Moore. 8897 8898Added header support for the ACPI MCHI table (Management Controller Host 8899Interface Table). This table was added in ACPI 4.0, but the defining 8900document 8901has only recently become available. 8902 8903Standardized output of integer values for ACPICA warnings/errors. Always 8904use 89050x prefix for hex output, always use %u for unsigned integer decimal 8906output. 8907Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8908400 8909invocations.) These invocations were converted from the original 8910ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8911 8912Example Code and Data Size: These are the sizes for the OS-independent 8913acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8914debug version of the code includes the debug output trace mechanism and 8915has a 8916much larger code and data size. 8917 8918 Previous Release: 8919 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8920 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8921 Current Release: 8922 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8923 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8924 89252) iASL Compiler/Disassembler and Tools: 8926 8927iASL: Implemented typechecking support for static (non-control method) 8928predefined named objects that are declared with the Name() operator. For 8929example, the type of this object is now validated to be of type Integer: 8930Name(_BBN, 1). This change migrates the compiler to using the core 8931predefined 8932name table instead of maintaining a local version. Added a new file, 8933aslpredef.c. ACPICA BZ 832. 8934 8935Disassembler: Added support for the ACPI 4.0 MCHI table. 8936 8937---------------------------------------- 893821 January 2010. Summary of changes for version 20100121: 8939 89401) ACPI CA Core Subsystem: 8941 8942Added the 2010 copyright to all module headers and signons. This affects 8943virtually every file in the ACPICA core subsystem, the iASL compiler, the 8944tools/utilities, and the test suites. 8945 8946Implemented a change to the AcpiGetDevices interface to eliminate 8947unnecessary 8948invocations of the _STA method. In the case where a specific _HID is 8949requested, do not run _STA until a _HID match is found. This eliminates 8950potentially dozens of _STA calls during a search for a particular 8951device/HID, 8952which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8953 8954Implemented an additional repair for predefined method return values. 8955Attempt 8956to repair unexpected NULL elements within returned Package objects. 8957Create 8958an 8959Integer of value zero, a NULL String, or a zero-length Buffer as 8960appropriate. 8961ACPICA BZ 818. Lin Ming, Bob Moore. 8962 8963Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8964the 8965code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8966(with 896764-bit AML integers). It is now obsolete and this change removes it from 8968the 8969ACPICA code base, replaced by UINT64. The original typedef has been 8970retained 8971for now for compatibility with existing device driver code. ACPICA BZ 8972824. 8973 8974Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8975in 8976the parse tree object. 8977 8978Added additional warning options for the gcc-4 generation. Updated the 8979source 8980accordingly. This includes some code restructuring to eliminate 8981unreachable 8982code, elimination of some gotos, elimination of unused return values, 8983some 8984additional casting, and removal of redundant declarations. 8985 8986Example Code and Data Size: These are the sizes for the OS-independent 8987acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8988debug version of the code includes the debug output trace mechanism and 8989has a 8990much larger code and data size. 8991 8992 Previous Release: 8993 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8994 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8995 Current Release: 8996 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8997 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8998 89992) iASL Compiler/Disassembler and Tools: 9000 9001No functional changes for this release. 9002 9003---------------------------------------- 900414 December 2009. Summary of changes for version 20091214: 9005 90061) ACPI CA Core Subsystem: 9007 9008Enhanced automatic data type conversions for predefined name repairs. 9009This 9010change expands the automatic repairs/conversions for predefined name 9011return 9012values to make Integers, Strings, and Buffers fully interchangeable. 9013Also, 9014a 9015Buffer can be converted to a Package of Integers if necessary. The 9016nsrepair.c 9017module was completely restructured. Lin Ming, Bob Moore. 9018 9019Implemented automatic removal of null package elements during predefined 9020name 9021repairs. This change will automatically remove embedded and trailing NULL 9022package elements from returned package objects that are defined to 9023contain 9024a 9025variable number of sub-packages. The driver is then presented with a 9026package 9027with no null elements to deal with. ACPICA BZ 819. 9028 9029Implemented a repair for the predefined _FDE and _GTM names. The expected 9030return value for both names is a Buffer of 5 DWORDs. This repair fixes 9031two 9032possible problems (both seen in the field), where a package of integers 9033is 9034returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 9035Kim. 9036 9037Implemented additional module-level code support. This change will 9038properly 9039execute module-level code that is not at the root of the namespace (under 9040a 9041Device object, etc.). Now executes the code within the current scope 9042instead 9043of the root. ACPICA BZ 762. Lin Ming. 9044 9045Fixed possible mutex acquisition errors when running _REG methods. Fixes 9046a 9047problem where mutex errors can occur when running a _REG method that is 9048in 9049the same scope as a method-defined operation region or an operation 9050region 9051under a module-level IF block. This type of code is rare, so the problem 9052has 9053not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 9054 9055Fixed a possible memory leak during module-level code execution. An 9056object 9057could be leaked for each block of executed module-level code if the 9058interpreter slack mode is enabled This change deletes any implicitly 9059returned 9060object from the module-level code block. Lin Ming. 9061 9062Removed messages for successful predefined repair(s). The repair 9063mechanism 9064was considered too wordy. Now, messages are only unconditionally emitted 9065if 9066the return object cannot be repaired. Existing messages for successful 9067repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 9068827. 9069 9070Example Code and Data Size: These are the sizes for the OS-independent 9071acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9072debug version of the code includes the debug output trace mechanism and 9073has a 9074much larger code and data size. 9075 9076 Previous Release: 9077 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9078 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9079 Current Release: 9080 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9081 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9082 90832) iASL Compiler/Disassembler and Tools: 9084 9085iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 9086files 9087were no longer automatically removed at the termination of the compile. 9088 9089acpiexec: Implemented the -f option to specify default region fill value. 9090This option specifies the value used to initialize buffers that simulate 9091operation regions. Default value is zero. Useful for debugging problems 9092that 9093depend on a specific initial value for a region or field. 9094 9095---------------------------------------- 909612 November 2009. Summary of changes for version 20091112: 9097 90981) ACPI CA Core Subsystem: 9099 9100Implemented a post-order callback to AcpiWalkNamespace. The existing 9101interface only has a pre-order callback. This change adds an additional 9102parameter for a post-order callback which will be more useful for bus 9103scans. 9104ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 9105 9106Modified the behavior of the operation region memory mapping cache for 9107SystemMemory. Ensure that the memory mappings created for operation 9108regions 9109do not cross 4K page boundaries. Crossing a page boundary while mapping 9110regions can cause kernel warnings on some hosts if the pages have 9111different 9112attributes. Such regions are probably BIOS bugs, and this is the 9113workaround. 9114Linux BZ 14445. Lin Ming. 9115 9116Implemented an automatic repair for predefined methods that must return 9117sorted lists. This change will repair (by sorting) packages returned by 9118_ALR, 9119_PSS, and _TSS. Drivers can now assume that the packages are correctly 9120sorted 9121and do not contain NULL package elements. Adds one new file, 9122namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 9123 9124Fixed a possible fault during predefined name validation if a return 9125Package 9126object contains NULL elements. Also adds a warning if a NULL element is 9127followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 9128may 9129include repair or removal of all such NULL elements where possible. 9130 9131Implemented additional module-level executable AML code support. This 9132change 9133will execute module-level code that is not at the root of the namespace 9134(under a Device object, etc.) at table load time. Module-level executable 9135AML 9136code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 9137 9138Implemented a new internal function to create Integer objects. This 9139function 9140simplifies miscellaneous object creation code. ACPICA BZ 823. 9141 9142Reduced the severity of predefined repair messages, Warning to Info. 9143Since 9144the object was successfully repaired, a warning is too severe. Reduced to 9145an 9146info message for now. These messages may eventually be changed to debug- 9147only. 9148ACPICA BZ 812. 9149 9150Example Code and Data Size: These are the sizes for the OS-independent 9151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9152debug version of the code includes the debug output trace mechanism and 9153has a 9154much larger code and data size. 9155 9156 Previous Release: 9157 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9158 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9159 Current Release: 9160 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9161 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9162 91632) iASL Compiler/Disassembler and Tools: 9164 9165iASL: Implemented Switch() with While(1) so that Break works correctly. 9166This 9167change correctly implements the Switch operator with a surrounding 9168While(1) 9169so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 9170 9171iASL: Added a message if a package initializer list is shorter than 9172package 9173length. Adds a new remark for a Package() declaration if an initializer 9174list 9175exists, but is shorter than the declared length of the package. Although 9176technically legal, this is probably a coding error and it is seen in the 9177field. ACPICA BZ 815. Lin Ming, Bob Moore. 9178 9179iASL: Fixed a problem where the compiler could fault after the maximum 9180number 9181of errors was reached (200). 9182 9183acpixtract: Fixed a possible warning for pointer cast if the compiler 9184warning 9185level set very high. 9186 9187---------------------------------------- 918813 October 2009. Summary of changes for version 20091013: 9189 91901) ACPI CA Core Subsystem: 9191 9192Fixed a problem where an Operation Region _REG method could be executed 9193more 9194than once. If a custom address space handler is installed by the host 9195before 9196the "initialize operation regions" phase of the ACPICA initialization, 9197any 9198_REG methods for that address space could be executed twice. This change 9199fixes the problem. ACPICA BZ 427. Lin Ming. 9200 9201Fixed a possible memory leak for the Scope() ASL operator. When the exact 9202invocation of "Scope(\)" is executed (change scope to root), one internal 9203operand object was leaked. Lin Ming. 9204 9205Implemented a run-time repair for the _MAT predefined method. If the _MAT 9206return value is defined as a Field object in the AML, and the field 9207size is less than or equal to the default width of an integer (32 or 920864),_MAT 9209can incorrectly return an Integer instead of a Buffer. ACPICA now 9210automatically repairs this problem. ACPICA BZ 810. 9211 9212Implemented a run-time repair for the _BIF and _BIX predefined methods. 9213The 9214"OEM Information" field is often incorrectly returned as an Integer with 9215value zero if the field is not supported by the platform. This is due to 9216an 9217ambiguity in the ACPI specification. The field should always be a string. 9218ACPICA now automatically repairs this problem by returning a NULL string 9219within the returned Package. ACPICA BZ 807. 9220 9221Example Code and Data Size: These are the sizes for the OS-independent 9222acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9223debug version of the code includes the debug output trace mechanism and 9224has a 9225much larger code and data size. 9226 9227 Previous Release: 9228 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9229 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9230 Current Release: 9231 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9232 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9233 92342) iASL Compiler/Disassembler and Tools: 9235 9236Disassembler: Fixed a problem where references to external symbols that 9237contained one or more parent-prefixes (carats) were not handled 9238correctly, 9239possibly causing a fault. ACPICA BZ 806. Lin Ming. 9240 9241Disassembler: Restructured the code so that all functions that handle 9242external symbols are in a single module. One new file is added, 9243common/dmextern.c. 9244 9245AML Debugger: Added a max count argument for the Batch command (which 9246executes multiple predefined methods within the namespace.) 9247 9248iASL: Updated the compiler documentation (User Reference.) Available at 9249http://www.acpica.org/documentation/. ACPICA BZ 750. 9250 9251AcpiXtract: Updated for Lint and other formatting changes. Close all open 9252files. 9253 9254---------------------------------------- 925503 September 2009. Summary of changes for version 20090903: 9256 92571) ACPI CA Core Subsystem: 9258 9259For Windows Vista compatibility, added the automatic execution of an _INI 9260method located at the namespace root (\_INI). This method is executed at 9261table load time. This support is in addition to the automatic execution 9262of 9263\_SB._INI. Lin Ming. 9264 9265Fixed a possible memory leak in the interpreter for AML package objects 9266if 9267the package initializer list is longer than the defined size of the 9268package. 9269This apparently can only happen if the BIOS changes the package size on 9270the 9271fly (seen in a _PSS object), as ASL compilers do not allow this. The 9272interpreter will truncate the package to the defined size (and issue an 9273error 9274message), but previously could leave the extra objects undeleted if they 9275were 9276pre-created during the argument processing (such is the case if the 9277package 9278consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 9279 9280Fixed a problem seen when a Buffer or String is stored to itself via ASL. 9281This has been reported in the field. Previously, ACPICA would zero out 9282the 9283buffer/string. Now, the operation is treated as a noop. Provides Windows 9284compatibility. ACPICA BZ 803. Lin Ming. 9285 9286Removed an extraneous error message for ASL constructs of the form 9287Store(LocalX,LocalX) when LocalX is uninitialized. These curious 9288statements 9289are seen in many BIOSs and are once again treated as NOOPs and no error 9290is 9291emitted when they are encountered. ACPICA BZ 785. 9292 9293Fixed an extraneous warning message if a _DSM reserved method returns a 9294Package object. _DSM can return any type of object, so validation on the 9295return type cannot be performed. ACPICA BZ 802. 9296 9297Example Code and Data Size: These are the sizes for the OS-independent 9298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9299debug version of the code includes the debug output trace mechanism and 9300has a 9301much larger code and data size. 9302 9303 Previous Release: 9304 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9305 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9306 Current Release: 9307 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9308 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9309 93102) iASL Compiler/Disassembler and Tools: 9311 9312iASL: Fixed a problem with the use of the Alias operator and Resource 9313Templates. The correct alias is now constructed and no error is emitted. 9314ACPICA BZ 738. 9315 9316iASL: Implemented the -I option to specify additional search directories 9317for 9318include files. Allows multiple additional search paths for include files. 9319Directories are searched in the order specified on the command line 9320(after 9321the local directory is searched.) ACPICA BZ 800. 9322 9323iASL: Fixed a problem where the full pathname for include files was not 9324emitted for warnings/errors. This caused the IDE support to not work 9325properly. ACPICA BZ 765. 9326 9327iASL: Implemented the -@ option to specify a Windows-style response file 9328containing additional command line options. ACPICA BZ 801. 9329 9330AcpiExec: Added support to load multiple AML files simultaneously (such 9331as 9332a 9333DSDT and multiple SSDTs). Also added support for wildcards within the AML 9334pathname. These features allow all machine tables to be easily loaded and 9335debugged together. ACPICA BZ 804. 9336 9337Disassembler: Added missing support for disassembly of HEST table Error 9338Bank 9339subtables. 9340 9341---------------------------------------- 934230 July 2009. Summary of changes for version 20090730: 9343 9344The ACPI 4.0 implementation for ACPICA is complete with this release. 9345 93461) ACPI CA Core Subsystem: 9347 9348ACPI 4.0: Added header file support for all new and changed ACPI tables. 9349Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 9350new 9351for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 9352BERT, 9353EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 9354There 9355have been some ACPI 4.0 changes to other existing tables. Split the large 9356actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 9357 9358ACPI 4.0: Implemented predefined name validation for all new names. There 9359are 936031 new names in ACPI 4.0. The predefined validation module was split into 9361two 9362files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 9363 9364Implemented support for so-called "module-level executable code". This is 9365executable AML code that exists outside of any control method and is 9366intended 9367to be executed at table load time. Although illegal since ACPI 2.0, this 9368type 9369of code still exists and is apparently still being created. Blocks of 9370this 9371code are now detected and executed as intended. Currently, the code 9372blocks 9373must exist under either an If, Else, or While construct; these are the 9374typical cases seen in the field. ACPICA BZ 762. Lin Ming. 9375 9376Implemented an automatic dynamic repair for predefined names that return 9377nested Package objects. This applies to predefined names that are defined 9378to 9379return a variable-length Package of sub-packages. If the number of sub- 9380packages is one, BIOS code is occasionally seen that creates a simple 9381single 9382package with no sub-packages. This code attempts to fix the problem by 9383wrapping a new package object around the existing package. These methods 9384can 9385be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 9386BZ 9387790. 9388 9389Fixed a regression introduced in 20090625 for the AcpiGetDevices 9390interface. 9391The _HID/_CID matching was broken and no longer matched IDs correctly. 9392ACPICA 9393BZ 793. 9394 9395Fixed a problem with AcpiReset where the reset would silently fail if the 9396register was one of the protected I/O ports. AcpiReset now bypasses the 9397port 9398validation mechanism. This may eventually be driven into the 9399AcpiRead/Write 9400interfaces. 9401 9402Fixed a regression related to the recent update of the AcpiRead/Write 9403interfaces. A sleep/suspend could fail if the optional PM2 Control 9404register 9405does not exist during an attempt to write the Bus Master Arbitration bit. 9406(However, some hosts already delete the code that writes this bit, and 9407the 9408code may in fact be obsolete at this date.) ACPICA BZ 799. 9409 9410Fixed a problem where AcpiTerminate could fault if inadvertently called 9411twice 9412in succession. ACPICA BZ 795. 9413 9414Example Code and Data Size: These are the sizes for the OS-independent 9415acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9416debug version of the code includes the debug output trace mechanism and 9417has a 9418much larger code and data size. 9419 9420 Previous Release: 9421 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9422 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9423 Current Release: 9424 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9425 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9426 94272) iASL Compiler/Disassembler and Tools: 9428 9429ACPI 4.0: Implemented disassembler support for all new ACPI tables and 9430changes to existing tables. ACPICA BZ 775. 9431 9432---------------------------------------- 943325 June 2009. Summary of changes for version 20090625: 9434 9435The ACPI 4.0 Specification was released on June 16 and is available at 9436www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 9437continue for the next few releases. 9438 94391) ACPI CA Core Subsystem: 9440 9441ACPI 4.0: Implemented interpreter support for the IPMI operation region 9442address space. Includes support for bi-directional data buffers and an 9443IPMI 9444address space handler (to be installed by an IPMI device driver.) ACPICA 9445BZ 9446773. Lin Ming. 9447 9448ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 9449Includes 9450support in both the header files and the disassembler. 9451 9452Completed a major update for the AcpiGetObjectInfo external interface. 9453Changes include: 9454 - Support for variable, unlimited length HID, UID, and CID strings. 9455 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 9456etc.) 9457 - Call the _SxW power methods on behalf of a device object. 9458 - Determine if a device is a PCI root bridge. 9459 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 9460These changes will require an update to all callers of this interface. 9461See 9462the updated ACPICA Programmer Reference for details. One new source file 9463has 9464been added - utilities/utids.c. ACPICA BZ 368, 780. 9465 9466Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 9467transfers. The Value parameter has been extended from 32 bits to 64 bits 9468in 9469order to support new ACPI 4.0 tables. These changes will require an 9470update 9471to 9472all callers of these interfaces. See the ACPICA Programmer Reference for 9473details. ACPICA BZ 768. 9474 9475Fixed several problems with AcpiAttachData. The handler was not invoked 9476when 9477the host node was deleted. The data sub-object was not automatically 9478deleted 9479when the host node was deleted. The interface to the handler had an 9480unused 9481parameter, this was removed. ACPICA BZ 778. 9482 9483Enhanced the function that dumps ACPI table headers. All non-printable 9484characters in the string fields are now replaced with '?' (Signature, 9485OemId, 9486OemTableId, and CompilerId.) ACPI tables with non-printable characters in 9487these fields are occasionally seen in the field. ACPICA BZ 788. 9488 9489Fixed a problem with predefined method repair code where the code that 9490attempts to repair/convert an object of incorrect type is only executed 9491on 9492the first time the predefined method is called. The mechanism that 9493disables 9494warnings on subsequent calls was interfering with the repair mechanism. 9495ACPICA BZ 781. 9496 9497Fixed a possible memory leak in the predefined validation/repair code 9498when 9499a 9500buffer is automatically converted to an expected string object. 9501 9502Removed obsolete 16-bit files from the distribution and from the current 9503git 9504tree head. ACPICA BZ 776. 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: 83.4K Code, 17.5K Data, 100.9K Total 9514 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9515 Current Release: 9516 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9517 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9518 95192) iASL Compiler/Disassembler and Tools: 9520 9521ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9522operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9523 9524ACPI 4.0: iASL - implemented compile-time validation support for all new 9525predefined names and control methods (31 total). ACPICA BZ 769. 9526 9527---------------------------------------- 952821 May 2009. Summary of changes for version 20090521: 9529 95301) ACPI CA Core Subsystem: 9531 9532Disabled the preservation of the SCI enable bit in the PM1 control 9533register. 9534The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9535to 9536be 9537a "preserved" bit - "OSPM always preserves this bit position", section 95384.7.3.2.1. However, some machines fail if this bit is in fact preserved 9539because the bit needs to be explicitly set by the OS as a workaround. No 9540machines fail if the bit is not preserved. Therefore, ACPICA no longer 9541attempts to preserve this bit. 9542 9543Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9544incorrectly formed _PRT package could cause a fault. Added validation to 9545ensure that each package element is actually a sub-package. 9546 9547Implemented a new interface to install or override a single control 9548method, 9549AcpiInstallMethod. This interface is useful when debugging in order to 9550repair 9551an existing method or to install a missing method without having to 9552override 9553the entire ACPI table. See the ACPICA Programmer Reference for use and 9554examples. Lin Ming, Bob Moore. 9555 9556Fixed several reference count issues with the DdbHandle object that is 9557created from a Load or LoadTable operator. Prevent premature deletion of 9558the 9559object. Also, mark the object as invalid once the table has been 9560unloaded. 9561This is needed because the handle itself may not be deleted after the 9562table 9563unload, depending on whether it has been stored in a named object by the 9564caller. Lin Ming. 9565 9566Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9567mutexes of the same sync level are acquired but then not released in 9568strict 9569opposite order, the internally maintained Current Sync Level becomes 9570confused 9571and can cause subsequent execution errors. ACPICA BZ 471. 9572 9573Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9574specification has been changed to make the SyncLevel for mutex objects 9575more 9576useful. When releasing a mutex, the SyncLevel of the mutex must now be 9577the 9578same as the current sync level. This makes more sense than the previous 9579rule 9580(SyncLevel less than or equal). This change updates the code to match the 9581specification. 9582 9583Fixed a problem with the local version of the AcpiOsPurgeCache function. 9584The 9585(local) cache must be locked during all cache object deletions. Andrew 9586Baumann. 9587 9588Updated the Load operator to use operation region interfaces. This 9589replaces 9590direct memory mapping with region access calls. Now, all region accesses 9591go 9592through the installed region handler as they should. 9593 9594Simplified and optimized the NsGetNextNode function. Reduced parameter 9595count 9596and reduced code for this frequently used function. 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: 82.8K Code, 17.5K Data, 100.3K Total 9606 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9607 Current Release: 9608 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9609 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9610 96112) iASL Compiler/Disassembler and Tools: 9612 9613Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9614problems 9615with sub-table disassembly and handling invalid sub-tables. Attempt 9616recovery 9617after an invalid sub-table ID. 9618 9619---------------------------------------- 962022 April 2009. Summary of changes for version 20090422: 9621 96221) ACPI CA Core Subsystem: 9623 9624Fixed a compatibility issue with the recently released I/O port 9625protection 9626mechanism. For windows compatibility, 1) On a port protection violation, 9627simply ignore the request and do not return an exception (allow the 9628control 9629method to continue execution.) 2) If only part of the request overlaps a 9630protected port, read/write the individual ports that are not protected. 9631Linux 9632BZ 13036. Lin Ming 9633 9634Enhanced the execution of the ASL/AML BreakPoint operator so that it 9635actually 9636breaks into the AML debugger if the debugger is present. This matches the 9637ACPI-defined behavior. 9638 9639Fixed several possible warnings related to the use of the configurable 9640ACPI_THREAD_ID. This type can now be configured as either an integer or a 9641pointer with no warnings. Also fixes several warnings in printf-like 9642statements for the 64-bit build when the type is configured as a pointer. 9643ACPICA BZ 766, 767. 9644 9645Fixed a number of possible warnings when compiling with gcc 4+ (depending 9646on 9647warning options.) Examples include printf formats, aliasing, unused 9648globals, 9649missing prototypes, missing switch default statements, use of non-ANSI 9650library functions, use of non-ANSI constructs. See generate/unix/Makefile 9651for 9652a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9653 9654Example Code and Data Size: These are the sizes for the OS-independent 9655acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9656debug version of the code includes the debug output trace mechanism and 9657has a 9658much larger code and data size. 9659 9660 Previous Release: 9661 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9662 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9663 Current Release: 9664 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9665 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9666 96672) iASL Compiler/Disassembler and Tools: 9668 9669iASL: Fixed a generation warning from Bison 2.3 and fixed several 9670warnings 9671on 9672the 64-bit build. 9673 9674iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9675not 9676correctly digest Windows/DOS formatted files (with CR/LF). 9677 9678iASL: Added a new option for "quiet mode" (-va) that produces only the 9679compilation summary, not individual errors and warnings. Useful for large 9680batch compilations. 9681 9682AcpiExec: Implemented a new option (-z) to enable a forced 9683semaphore/mutex 9684timeout that can be used to detect hang conditions during execution of 9685AML 9686code (includes both internal semaphores and AML-defined mutexes and 9687events.) 9688 9689Added new makefiles for the generation of acpica in a generic unix-like 9690environment. These makefiles are intended to generate the acpica tools 9691and 9692utilities from the original acpica git source tree structure. 9693 9694Test Suites: Updated and cleaned up the documentation files. Updated the 9695copyrights to 2009, affecting all source files. Use the new version of 9696iASL 9697with quiet mode. Increased the number of available semaphores in the 9698Windows 9699OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9700added 9701an alternate implementation of the semaphore timeout to allow aslts to 9702execute fully on Cygwin. 9703 9704---------------------------------------- 970520 March 2009. Summary of changes for version 20090320: 9706 97071) ACPI CA Core Subsystem: 9708 9709Fixed a possible race condition between AcpiWalkNamespace and dynamic 9710table 9711unloads. Added a reader/writer locking mechanism to allow multiple 9712concurrent 9713namespace walks (readers), but block a dynamic table unload until it can 9714gain 9715exclusive write access to the namespace. This fixes a problem where a 9716table 9717unload could (possibly catastrophically) delete the portion of the 9718namespace 9719that is currently being examined by a walk. Adds a new file, utlock.c, 9720that 9721implements the reader/writer lock mechanism. ACPICA BZ 749. 9722 9723Fixed a regression introduced in version 20090220 where a change to the 9724FADT 9725handling could cause the ACPICA subsystem to access non-existent I/O 9726ports. 9727 9728Modified the handling of FADT register and table (FACS/DSDT) addresses. 9729The 9730FADT can contain both 32-bit and 64-bit versions of these addresses. 9731Previously, the 64-bit versions were favored, meaning that if both 32 and 973264 9733versions were valid, but not equal, the 64-bit version was used. This was 9734found to cause some machines to fail. Now, in this case, the 32-bit 9735version 9736is used instead. This now matches the Windows behavior. 9737 9738Implemented a new mechanism to protect certain I/O ports. Provides 9739Microsoft 9740compatibility and protects the standard PC I/O ports from access via AML 9741code. Adds a new file, hwvalid.c 9742 9743Fixed a possible extraneous warning message from the FADT support. The 9744message warns of a 32/64 length mismatch between the legacy and GAS 9745definitions for a register. 9746 9747Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9748is 9749made obsolete by the port protection mechanism above. It was previously 9750used 9751to validate the entire address range of an operation region, which could 9752be 9753incorrect if the range included illegal ports, but fields within the 9754operation region did not actually access those ports. Validation is now 9755performed on a per-field basis instead of the entire region. 9756 9757Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9758Ignored bits must be "preserved" according to the ACPI spec. Usually, 9759this 9760means a read/modify/write when writing to the register. However, for 9761status 9762registers, writing a one means clear the event. Writing a zero means 9763preserve 9764the event (do not clear.) This behavior is clarified in the ACPI 4.0 9765spec, 9766and the ACPICA code now simply always writes a zero to the ignored bit. 9767 9768Modified the handling of ignored bits for the PM1 A/B Control Registers. 9769As 9770per the ACPI specification, for the control registers, preserve 9771(read/modify/write) all bits that are defined as either reserved or 9772ignored. 9773 9774Updated the handling of write-only bits in the PM1 A/B Control Registers. 9775When reading the register, zero the write-only bits as per the ACPI spec. 9776ACPICA BZ 443. Lin Ming. 9777 9778Removed "Linux" from the list of supported _OSI strings. Linux no longer 9779wants to reply true to this request. The Windows strings are the only 9780paths 9781through the AML that are tested and known to work properly. 9782 9783 Previous Release: 9784 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9785 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9786 Current Release: 9787 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9788 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9789 97902) iASL Compiler/Disassembler and Tools: 9791 9792Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9793and 9794aetables.c 9795 9796---------------------------------------- 979720 February 2009. Summary of changes for version 20090220: 9798 97991) ACPI CA Core Subsystem: 9800 9801Optimized the ACPI register locking. Removed locking for reads from the 9802ACPI 9803bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9804is 9805not required when reading the single-bit registers. The 9806AcpiGetRegisterUnlocked function is no longer needed and has been 9807removed. 9808This will improve performance for reads on these registers. ACPICA BZ 9809760. 9810 9811Fixed the parameter validation for AcpiRead/Write. Now return 9812AE_BAD_PARAMETER if the input register pointer is null, and 9813AE_BAD_ADDRESS 9814if 9815the register has an address of zero. Previously, these cases simply 9816returned 9817AE_OK. For optional registers such as PM1B status/enable/control, the 9818caller 9819should check for a valid register address before calling. ACPICA BZ 748. 9820 9821Renamed the external ACPI bit register access functions. Renamed 9822AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9823functions. The new names are AcpiReadBitRegister and 9824AcpiWriteBitRegister. 9825Also, restructured the code for these functions by simplifying the code 9826path 9827and condensing duplicate code to reduce code size. 9828 9829Added new functions to transparently handle the possibly split PM1 A/B 9830registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9831functions 9832now handle the split registers for PM1 Status, Enable, and Control. 9833ACPICA 9834BZ 9835746. 9836 9837Added a function to handle the PM1 control registers, 9838AcpiHwWritePm1Control. 9839This function writes both of the PM1 control registers (A/B). These 9840registers 9841are different than the PM1 A/B status and enable registers in that 9842different 9843values can be written to the A/B registers. Most notably, the SLP_TYP 9844bits 9845can be different, as per the values returned from the _Sx predefined 9846methods. 9847 9848Removed an extra register write within AcpiHwClearAcpiStatus. This 9849function 9850was writing an optional PM1B status register twice. The existing call to 9851the 9852low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9853A/B 9854register. ACPICA BZ 751. 9855 9856Split out the PM1 Status registers from the FADT. Added new globals for 9857these 9858registers (A/B), similar to the way the PM1 Enable registers are handled. 9859Instead of overloading the FADT Event Register blocks. This makes the 9860code 9861clearer and less prone to error. 9862 9863Fixed the warning message for when the platform contains too many ACPI 9864tables 9865for the default size of the global root table data structure. The 9866calculation 9867for the truncation value was incorrect. 9868 9869Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9870obsolete macro, since it is now a simple reference to ->common.type. 9871There 9872were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9873 9874Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9875TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9876simply SLEEP_TYPE. ACPICA BZ 754. 9877 9878Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9879function is only needed on 64-bit host operating systems and is thus not 9880included for 32-bit hosts. 9881 9882Debug output: print the input and result for invocations of the _OSI 9883reserved 9884control method via the ACPI_LV_INFO debug level. Also, reduced some of 9885the 9886verbosity of this debug level. Len Brown. 9887 9888Example Code and Data Size: These are the sizes for the OS-independent 9889acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9890debug version of the code includes the debug output trace mechanism and 9891has a 9892much larger code and data size. 9893 9894 Previous Release: 9895 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9896 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9897 Current Release: 9898 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9899 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9900 99012) iASL Compiler/Disassembler and Tools: 9902 9903Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9904various legal performance profiles. 9905 9906---------------------------------------- 990723 January 2009. Summary of changes for version 20090123: 9908 99091) ACPI CA Core Subsystem: 9910 9911Added the 2009 copyright to all module headers and signons. This affects 9912virtually every file in the ACPICA core subsystem, the iASL compiler, and 9913the tools/utilities. 9914 9915Implemented a change to allow the host to override any ACPI table, 9916including 9917dynamically loaded tables. Previously, only the DSDT could be replaced by 9918the 9919host. With this change, the AcpiOsTableOverride interface is called for 9920each 9921table found in the RSDT/XSDT during ACPICA initialization, and also 9922whenever 9923a table is dynamically loaded via the AML Load operator. 9924 9925Updated FADT flag definitions, especially the Boot Architecture flags. 9926 9927Debugger: For the Find command, automatically pad the input ACPI name 9928with 9929underscores if the name is shorter than 4 characters. This enables a 9930match 9931with the actual namespace entry which is itself padded with underscores. 9932 9933Example Code and Data Size: These are the sizes for the OS-independent 9934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9935debug version of the code includes the debug output trace mechanism and 9936has a 9937much larger code and data size. 9938 9939 Previous Release: 9940 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9941 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9942 Current Release: 9943 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9944 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9945 99462) iASL Compiler/Disassembler and Tools: 9947 9948Fix build error under Bison-2.4. 9949 9950Disassembler: Enhanced FADT support. Added decoding of the Boot 9951Architecture 9952flags. Now decode all flags, regardless of the FADT version. Flag output 9953includes the FADT version which first defined each flag. 9954 9955The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9956and 9957DSDT). Windows only. 9958 9959---------------------------------------- 996004 December 2008. Summary of changes for version 20081204: 9961 99621) ACPI CA Core Subsystem: 9963 9964The ACPICA Programmer Reference has been completely updated and revamped 9965for 9966this release. This includes updates to the external interfaces, OSL 9967interfaces, the overview sections, and the debugger reference. 9968 9969Several new ACPICA interfaces have been implemented and documented in the 9970programmer reference: 9971AcpiReset - Writes the reset value to the FADT-defined reset register. 9972AcpiDisableAllGpes - Disable all available GPEs. 9973AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9974AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9975AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9976AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9977AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9978 9979Most of the public ACPI hardware-related interfaces have been moved to a 9980new 9981file, components/hardware/hwxface.c 9982 9983Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9984register lengths within the FADT are now used, and the low level ACPI 9985register access no longer hardcodes the ACPI register lengths. Given that 9986there may be some risk in actually trusting the FADT register lengths, a 9987run- 9988time option was added to fall back to the default hardcoded lengths if 9989the 9990FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9991option is set to true for now, and a warning is issued if a suspicious 9992FADT 9993register length is overridden with the default value. 9994 9995Fixed a reference count issue in NsRepairObject. This problem was 9996introduced 9997in version 20081031 as part of a fix to repair Buffer objects within 9998Packages. Lin Ming. 9999 10000Added semaphore support to the Linux/Unix application OS-services layer 10001(OSL). ACPICA BZ 448. Lin Ming. 10002 10003Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 10004will 10005be implemented in the OSL, or will binary semaphores be used instead. 10006 10007Example Code and Data Size: These are the sizes for the OS-independent 10008acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10009debug version of the code includes the debug output trace mechanism and 10010has a 10011much larger code and data size. 10012 10013 Previous Release: 10014 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10015 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10016 Current Release: 10017 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 10018 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 10019 100202) iASL Compiler/Disassembler and Tools: 10021 10022iASL: Completed the '-e' option to include additional ACPI tables in 10023order 10024to 10025aid with disassembly and External statement generation. ACPICA BZ 742. 10026Lin 10027Ming. 10028 10029iASL: Removed the "named object in while loop" error. The compiler cannot 10030determine how many times a loop will execute. ACPICA BZ 730. 10031 10032Disassembler: Implemented support for FADT revision 2 (MS extension). 10033ACPICA 10034BZ 743. 10035 10036Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 10037MCFG). 10038 10039---------------------------------------- 1004031 October 2008. Summary of changes for version 20081031: 10041 100421) ACPI CA Core Subsystem: 10043 10044Restructured the ACPICA header files into public/private. acpi.h now 10045includes 10046only the "public" acpica headers. All other acpica headers are "private" 10047and 10048should not be included by acpica users. One new file, accommon.h is used 10049to 10050include the commonly used private headers for acpica code generation. 10051Future 10052plans include moving all private headers to a new subdirectory. 10053 10054Implemented an automatic Buffer->String return value conversion for 10055predefined ACPI methods. For these methods (such as _BIF), added 10056automatic 10057conversion for return objects that are required to be a String, but a 10058Buffer 10059was found instead. This can happen when reading string battery data from 10060an 10061operation region, because it used to be difficult to convert the data 10062from 10063buffer to string from within the ASL. Ensures that the host OS is 10064provided 10065with a valid null-terminated string. Linux BZ 11822. 10066 10067Updated the FACS waking vector interfaces. Split 10068AcpiSetFirmwareWakingVector 10069into two: one for the 32-bit vector, another for the 64-bit vector. This 10070is 10071required because the host OS must setup the wake much differently for 10072each 10073vector (real vs. protected mode, etc.) and the interface itself should 10074not 10075be 10076deciding which vector to use. Also, eliminated the 10077GetFirmwareWakingVector 10078interface, as it served no purpose (only the firmware reads the vector, 10079OS 10080only writes the vector.) ACPICA BZ 731. 10081 10082Implemented a mechanism to escape infinite AML While() loops. Added a 10083loop 10084counter to force exit from AML While loops if the count becomes too 10085large. 10086This can occur in poorly written AML when the hardware does not respond 10087within a while loop and the loop does not implement a timeout. The 10088maximum 10089loop count is configurable. A new exception code is returned when a loop 10090is 10091broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 10092 10093Optimized the execution of AML While loops. Previously, a control state 10094object was allocated and freed for each execution of the loop. The 10095optimization is to simply reuse the control state for each iteration. 10096This 10097speeds up the raw loop execution time by about 5%. 10098 10099Enhanced the implicit return mechanism. For Windows compatibility, return 10100an 10101implicit integer of value zero for methods that contain no executable 10102code. 10103Such methods are seen in the field as stubs (presumably), and can cause 10104drivers to fail if they expect a return value. Lin Ming. 10105 10106Allow multiple backslashes as root prefixes in namepaths. In a fully 10107qualified namepath, allow multiple backslash prefixes. This can happen 10108(and 10109is seen in the field) because of the use of a double-backslash in strings 10110(since backslash is the escape character) causing confusion. ACPICA BZ 10111739 10112Lin Ming. 10113 10114Emit a warning if two different FACS or DSDT tables are discovered in the 10115FADT. Checks if there are two valid but different addresses for the FACS 10116and 10117DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 10118 10119Consolidated the method argument count validation code. Merged the code 10120that 10121validates control method argument counts into the predefined validation 10122module. Eliminates possible multiple warnings for incorrect argument 10123counts. 10124 10125Implemented ACPICA example code. Includes code for ACPICA initialization, 10126handler installation, and calling a control method. Available at 10127source/tools/examples. 10128 10129Added a global pointer for FACS table to simplify internal FACS access. 10130Use 10131the global pointer instead of using AcpiGetTableByIndex for each FACS 10132access. 10133This simplifies the code for the Global Lock and the Firmware Waking 10134Vector(s). 10135 10136Example Code and Data Size: These are the sizes for the OS-independent 10137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10138debug version of the code includes the debug output trace mechanism and 10139has a 10140much larger code and data size. 10141 10142 Previous Release: 10143 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10144 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10145 Current Release: 10146 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10147 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10148 101492) iASL Compiler/Disassembler and Tools: 10150 10151iASL: Improved disassembly of external method calls. Added the -e option 10152to 10153allow the inclusion of additional ACPI tables to help with the 10154disassembly 10155of 10156method invocations and the generation of external declarations during the 10157disassembly. Certain external method invocations cannot be disassembled 10158properly without the actual declaration of the method. Use the -e option 10159to 10160include the table where the external method(s) are actually declared. 10161Most 10162useful for disassembling SSDTs that make method calls back to the master 10163DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 10164-d 10165-e dsdt.aml ssdt1.aml 10166 10167iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 10168problem where the use of an alias within a namepath would result in a not 10169found error or cause the compiler to fault. Also now allows forward 10170references from the Alias operator itself. ACPICA BZ 738. 10171 10172---------------------------------------- 1017326 September 2008. Summary of changes for version 20080926: 10174 101751) ACPI CA Core Subsystem: 10176 10177Designed and implemented a mechanism to validate predefined ACPI methods 10178and 10179objects. This code validates the predefined ACPI objects (objects whose 10180names 10181start with underscore) that appear in the namespace, at the time they are 10182evaluated. The argument count and the type of the returned object are 10183validated against the ACPI specification. The purpose of this validation 10184is 10185to detect problems with the BIOS-implemented predefined ACPI objects 10186before 10187the results are returned to the ACPI-related drivers. Future enhancements 10188may 10189include actual repair of incorrect return objects where possible. Two new 10190files are nspredef.c and acpredef.h. 10191 10192Fixed a fault in the AML parser if a memory allocation fails during the 10193Op 10194completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 10195 10196Fixed an issue with implicit return compatibility. This change improves 10197the 10198implicit return mechanism to be more compatible with the MS interpreter. 10199Lin 10200Ming, ACPICA BZ 349. 10201 10202Implemented support for zero-length buffer-to-string conversions. Allow 10203zero 10204length strings during interpreter buffer-to-string conversions. For 10205example, 10206during the ToDecimalString and ToHexString operators, as well as implicit 10207conversions. Fiodor Suietov, ACPICA BZ 585. 10208 10209Fixed two possible memory leaks in the error exit paths of 10210AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 10211are 10212similar in that they use a stack of state objects in order to eliminate 10213recursion. The stack must be fully unwound and deallocated if an error 10214occurs. Lin Ming. ACPICA BZ 383. 10215 10216Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 10217global 10218ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 10219Moore ACPICA BZ 442. 10220 10221Removed the obsolete version number in module headers. Removed the 10222"$Revision" number that appeared in each module header. This version 10223number 10224was useful under SourceSafe and CVS, but has no meaning under git. It is 10225not 10226only incorrect, it could also be misleading. 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: 79.7K Code, 16.4K Data, 96.1K Total 10236 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10237 Current Release: 10238 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10239 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10240 10241---------------------------------------- 1024229 August 2008. Summary of changes for version 20080829: 10243 102441) ACPI CA Core Subsystem: 10245 10246Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 10247Reference. Changes include the elimination of cheating on the Object 10248field 10249for the DdbHandle subtype, addition of a reference class field to 10250differentiate the various reference types (instead of an AML opcode), and 10251the 10252cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 10253 10254Reduce an error to a warning for an incorrect method argument count. 10255Previously aborted with an error if too few arguments were passed to a 10256control method via the external ACPICA interface. Now issue a warning 10257instead 10258and continue. Handles the case where the method inadvertently declares 10259too 10260many arguments, but does not actually use the extra ones. Applies mainly 10261to 10262the predefined methods. Lin Ming. Linux BZ 11032. 10263 10264Disallow the evaluation of named object types with no intrinsic value. 10265Return 10266AE_TYPE for objects that have no value and therefore evaluation is 10267undefined: 10268Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 10269of 10270these types were allowed, but an exception would be generated at some 10271point 10272during the evaluation. Now, the error is generated up front. 10273 10274Fixed a possible memory leak in the AcpiNsGetExternalPathname function 10275(nsnames.c). Fixes a leak in the error exit path. 10276 10277Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 10278debug 10279levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 10280ACPI_EXCEPTION 10281interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 10282ACPI_LV_EVENTS. 10283 10284Removed obsolete and/or unused exception codes from the acexcep.h header. 10285There is the possibility that certain device drivers may be affected if 10286they 10287use any of these exceptions. 10288 10289The ACPICA documentation has been added to the public git source tree, 10290under 10291acpica/documents. Included are the ACPICA programmer reference, the iASL 10292compiler reference, and the changes.txt release logfile. 10293 10294Example Code and Data Size: These are the sizes for the OS-independent 10295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10296debug version of the code includes the debug output trace mechanism and 10297has a 10298much larger code and data size. 10299 10300 Previous Release: 10301 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10302 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10303 Current Release: 10304 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10305 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10306 103072) iASL Compiler/Disassembler and Tools: 10308 10309Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 10310defines _SCP with 3 arguments. Previous versions defined it with only 1 10311argument. iASL now allows both definitions. 10312 10313iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 10314zero- 10315length subtables when disassembling ACPI tables. Also fixed a couple of 10316errors where a full 16-bit table type field was not extracted from the 10317input 10318properly. 10319 10320acpisrc: Improve comment counting mechanism for generating source code 10321statistics. Count first and last lines of multi-line comments as 10322whitespace, 10323not comment lines. Handle Linux legal header in addition to standard 10324acpica 10325header. 10326 10327---------------------------------------- 10328 1032929 July 2008. Summary of changes for version 20080729: 10330 103311) ACPI CA Core Subsystem: 10332 10333Fix a possible deadlock in the GPE dispatch. Remove call to 10334AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 10335attempt 10336to acquire the GPE lock but can deadlock since the GPE lock is already 10337held 10338at dispatch time. This code was introduced in version 20060831 as a 10339response 10340to Linux BZ 6881 and has since been removed from Linux. 10341 10342Add a function to dereference returned reference objects. Examines the 10343return 10344object from a call to AcpiEvaluateObject. Any Index or RefOf references 10345are 10346automatically dereferenced in an attempt to return something useful 10347(these 10348reference types cannot be converted into an external ACPI_OBJECT.) 10349Provides 10350MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 10351 10352x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 10353subtables for the MADT and one new subtable for the SRAT. Includes 10354disassembler and AcpiSrc support. Data from the Intel 64 Architecture 10355x2APIC 10356Specification, June 2008. 10357 10358Additional error checking for pathname utilities. Add error check after 10359all 10360calls to AcpiNsGetPathnameLength. Add status return from 10361AcpiNsBuildExternalPath and check after all calls. Add parameter 10362validation 10363to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 10364 10365Return status from the global init function AcpiUtGlobalInitialize. This 10366is 10367used by both the kernel subsystem and the utilities such as iASL 10368compiler. 10369The function could possibly fail when the caches are initialized. Yang 10370Yi. 10371 10372Add a function to decode reference object types to strings. Created for 10373improved error messages. 10374 10375Improve object conversion error messages. Better error messages during 10376object 10377conversion from internal to the external ACPI_OBJECT. Used for external 10378calls 10379to AcpiEvaluateObject. 10380 10381Example Code and Data Size: These are the sizes for the OS-independent 10382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10383debug version of the code includes the debug output trace mechanism and 10384has a 10385much larger code and data size. 10386 10387 Previous Release: 10388 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10389 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10390 Current Release: 10391 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10392 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10393 103942) iASL Compiler/Disassembler and Tools: 10395 10396Debugger: fix a possible hang when evaluating non-methods. Fixes a 10397problem 10398introduced in version 20080701. If the object being evaluated (via 10399execute 10400command) is not a method, the debugger can hang while trying to obtain 10401non- 10402existent parameters. 10403 10404iASL: relax error for using reserved "_T_x" identifiers. These names can 10405appear in a disassembled ASL file if they were emitted by the original 10406compiler. Instead of issuing an error or warning and forcing the user to 10407manually change these names, issue a remark instead. 10408 10409iASL: error if named object created in while loop. Emit an error if any 10410named 10411object is created within a While loop. If allowed, this code will 10412generate 10413a 10414run-time error on the second iteration of the loop when an attempt is 10415made 10416to 10417create the same named object twice. ACPICA bugzilla 730. 10418 10419iASL: Support absolute pathnames for include files. Add support for 10420absolute 10421pathnames within the Include operator. previously, only relative 10422pathnames 10423were supported. 10424 10425iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 10426Descriptor. 10427The ACPI spec requires one interrupt minimum. BZ 423 10428 10429iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 10430Handles the case for the Interrupt Resource Descriptor where 10431the ResourceSource argument is omitted but ResourceSourceIndex 10432is present. Now leave room for the Index. BZ 426 10433 10434iASL: Prevent error message if CondRefOf target does not exist. Fixes 10435cases 10436where an error message is emitted if the target does not exist. BZ 516 10437 10438iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 10439(get ACPI tables on Windows). This was apparently broken in version 1044020070919. 10441 10442AcpiXtract: Handle EOF while extracting data. Correctly handle the case 10443where 10444the EOF happens immediately after the last table in the input file. Print 10445completion message. Previously, no message was displayed in this case. 10446 10447---------------------------------------- 1044801 July 2008. Summary of changes for version 20080701: 10449 104500) Git source tree / acpica.org 10451 10452Fixed a problem where a git-clone from http would not transfer the entire 10453source tree. 10454 104551) ACPI CA Core Subsystem: 10456 10457Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 10458enable bit. Now performs a read-change-write of the enable register 10459instead 10460of simply writing out the cached enable mask. This will prevent 10461inadvertent 10462enabling of GPEs if a rogue GPE is received during initialization (before 10463GPE 10464handlers are installed.) 10465 10466Implemented a copy for dynamically loaded tables. Previously, dynamically 10467loaded tables were simply mapped - but on some machines this memory is 10468corrupted after suspend. Now copy the table to a local buffer. For the 10469OpRegion case, added checksum verify. Use the table length from the table 10470header, not the region length. For the Buffer case, use the table length 10471also. Dennis Noordsij, Bob Moore. BZ 10734 10472 10473Fixed a problem where the same ACPI table could not be dynamically loaded 10474and 10475unloaded more than once. Without this change, a table cannot be loaded 10476again 10477once it has been loaded/unloaded one time. The current mechanism does not 10478unregister a table upon an unload. During a load, if the same table is 10479found, 10480this no longer returns an exception. BZ 722 10481 10482Fixed a problem where the wrong descriptor length was calculated for the 10483EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 10484EndTag 10485are calculated as 12 bytes long, but the actual length in the internal 10486descriptor is 16 because of the round-up to 8 on the 64-bit build. 10487Reported 10488by Linn Crosetto. BZ 728 10489 10490Fixed a possible memory leak in the Unload operator. The DdbHandle 10491returned 10492by Load() did not have its reference count decremented during unload, 10493leading 10494to a memory leak. Lin Ming. BZ 727 10495 10496Fixed a possible memory leak when deleting thermal/processor objects. Any 10497associated notify handlers (and objects) were not being deleted. Fiodor 10498Suietov. BZ 506 10499 10500Fixed the ordering of the ASCII names in the global mutex table to match 10501the 10502actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10503only. 10504Vegard Nossum. BZ 726 10505 10506Enhanced the AcpiGetObjectInfo interface to return the number of required 10507arguments if the object is a control method. Added this call to the 10508debugger 10509so the proper number of default arguments are passed to a method. This 10510prevents a warning when executing methods from AcpiExec. 10511 10512Added a check for an invalid handle in AcpiGetObjectInfo. Return 10513AE_BAD_PARAMETER if input handle is invalid. BZ 474 10514 10515Fixed an extraneous warning from exconfig.c on the 64-bit build. 10516 10517Example Code and Data Size: These are the sizes for the OS-independent 10518acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10519debug version of the code includes the debug output trace mechanism and 10520has a 10521much larger code and data size. 10522 10523 Previous Release: 10524 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10525 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10526 Current Release: 10527 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10528 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10529 105302) iASL Compiler/Disassembler and Tools: 10531 10532iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10533resource descriptor names. 10534 10535iASL: Detect invalid ASCII characters in input (windows version). Removed 10536the 10537"-CF" flag from the flex compile, enables correct detection of non-ASCII 10538characters in the input. BZ 441 10539 10540iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10541the 10542"result of operation not used" warning when the DDB handle returned from 10543LoadTable is not used. The warning is not needed. BZ 590 10544 10545AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10546method 10547to 10548pass address of table to the AML. Added option to disable OpRegion 10549simulation 10550to allow creation of an OpRegion with a real address that was passed to 10551_CFG. 10552All of this allows testing of the Load and Unload operators from 10553AcpiExec. 10554 10555Debugger: update tables command for unloaded tables. Handle unloaded 10556tables 10557and use the standard table header output routine. 10558 10559---------------------------------------- 1056009 June 2008. Summary of changes for version 20080609: 10561 105621) ACPI CA Core Subsystem: 10563 10564Implemented a workaround for reversed _PRT entries. A significant number 10565of 10566BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10567change dynamically detects and repairs this problem. Provides 10568compatibility 10569with MS ACPI. BZ 6859 10570 10571Simplified the internal ACPI hardware interfaces to eliminate the locking 10572flag parameter from Register Read/Write. Added a new external interface, 10573AcpiGetRegisterUnlocked. 10574 10575Fixed a problem where the invocation of a GPE control method could hang. 10576This 10577was a regression introduced in 20080514. The new method argument count 10578validation mechanism can enter an infinite loop when a GPE method is 10579dispatched. Problem fixed by removing the obsolete code that passed GPE 10580block 10581information to the notify handler via the control method parameter 10582pointer. 10583 10584Fixed a problem where the _SST execution status was incorrectly returned 10585to 10586the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10587in 1058820080514. _SST is optional and a NOT_FOUND exception should never be 10589returned. BZ 716 10590 10591Fixed a problem where a deleted object could be accessed from within the 10592AML 10593parser. This was a regression introduced in version 20080123 as a fix for 10594the 10595Unload operator. Lin Ming. BZ 10669 10596 10597Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10598operands 10599and eliminated the use of a negative index in a loop. Operands are now 10600displayed in the correct order, not backwards. This also fixes a 10601regression 10602introduced in 20080514 on 64-bit systems where the elimination of 10603ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10604715 10605 10606Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10607exit 10608path did not delete a locally allocated structure. 10609 10610Updated definitions for the DMAR and SRAT tables to synchronize with the 10611current specifications. Includes disassembler support. 10612 10613Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10614loop termination value was used. Loop terminated on iteration early, 10615missing 10616one mutex. Linn Crosetto 10617 10618Example Code and Data Size: These are the sizes for the OS-independent 10619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10620debug version of the code includes the debug output trace mechanism and 10621has a 10622much larger code and data size. 10623 10624 Previous Release: 10625 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10626 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10627 Current Release: 10628 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10629 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10630 106312) iASL Compiler/Disassembler and Tools: 10632 10633Disassembler: Implemented support for EisaId() within _CID objects. Now 10634disassemble integer _CID objects back to EisaId invocations, including 10635multiple integers within _CID packages. Includes single-step support for 10636debugger also. 10637 10638Disassembler: Added support for DMAR and SRAT table definition changes. 10639 10640---------------------------------------- 1064114 May 2008. Summary of changes for version 20080514: 10642 106431) ACPI CA Core Subsystem: 10644 10645Fixed a problem where GPEs were enabled too early during the ACPICA 10646initialization. This could lead to "handler not installed" errors on some 10647machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10648This 10649ensures that all operation regions and devices throughout the namespace 10650have 10651been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10652 10653Implemented a change to the enter sleep code. Moved execution of the _GTS 10654method to just before setting sleep enable bit. The execution was moved 10655from 10656AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10657immediately before the SLP_EN bit is set, as per the ACPI specification. 10658Luming Yu, BZ 1653. 10659 10660Implemented a fix to disable unknown GPEs (2nd version). Now always 10661disable 10662the GPE, even if ACPICA thinks that that it is already disabled. It is 10663possible that the AML or some other code has enabled the GPE unbeknownst 10664to 10665the ACPICA code. 10666 10667Fixed a problem with the Field operator where zero-length fields would 10668return 10669an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10670ASL 10671field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10672 10673Implemented a fix for the Load operator, now load the table at the 10674namespace 10675root. This reverts a change introduced in version 20071019. The table is 10676now 10677loaded at the namespace root even though this goes against the ACPI 10678specification. This provides compatibility with other ACPI 10679implementations. 10680The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10681Ming. 10682 10683Fixed a problem where ACPICA would not Load() tables with unusual 10684signatures. 10685Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10686acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10687Therefore, signature validation is worthless. Apparently MS ACPI accepts 10688such 10689signatures, ACPICA must be compatible. BZ 10454. 10690 10691Fixed a possible negative array index in AcpiUtValidateException. Added 10692NULL 10693fields to the exception string arrays to eliminate a -1 subtraction on 10694the 10695SubStatus field. 10696 10697Updated the debug tracking macros to reduce overall code and data size. 10698Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10699instead of pointers to static strings. Jan Beulich and Bob Moore. 10700 10701Implemented argument count checking in control method invocation via 10702AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10703too 10704many. This applies only to extern programmatic control method execution, 10705not 10706method-to-method calls within the AML. Lin Ming. 10707 10708Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10709no 10710longer needed, especially with the removal of 16-bit support. It was 10711replaced 10712mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10713bit 10714on 1071532/64-bit platforms is required. 10716 10717Added the C const qualifier for appropriate string constants -- mostly 10718MODULE_NAME and printf format strings. Jan Beulich. 10719 10720Example Code and Data Size: These are the sizes for the OS-independent 10721acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10722debug version of the code includes the debug output trace mechanism and 10723has a 10724much larger code and data size. 10725 10726 Previous Release: 10727 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10728 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10729 Current Release: 10730 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10731 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10732 107332) iASL Compiler/Disassembler and Tools: 10734 10735Implemented ACPI table revision ID validation in the disassembler. Zero 10736is 10737always invalid. For DSDTs, the ID controls the interpreter integer width. 107381 10739means 32-bit and this is unusual. 2 or greater is 64-bit. 10740 10741---------------------------------------- 1074221 March 2008. Summary of changes for version 20080321: 10743 107441) ACPI CA Core Subsystem: 10745 10746Implemented an additional change to the GPE support in order to suppress 10747spurious or stray GPEs. The AcpiEvDisableGpe function will now 10748permanently 10749disable incoming GPEs that are neither enabled nor disabled -- meaning 10750that 10751the GPE is unknown to the system. This should prevent future interrupt 10752floods 10753from that GPE. BZ 6217 (Zhang Rui) 10754 10755Fixed a problem where NULL package elements were not returned to the 10756AcpiEvaluateObject interface correctly. The element was simply ignored 10757instead of returning a NULL ACPI_OBJECT package element, potentially 10758causing 10759a buffer overflow and/or confusing the caller who expected a fixed number 10760of 10761elements. BZ 10132 (Lin Ming, Bob Moore) 10762 10763Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10764Dword, 10765Qword), Field, BankField, and IndexField operators when invoked from 10766inside 10767an executing control method. In this case, these operators created 10768namespace 10769nodes that were incorrectly left marked as permanent nodes instead of 10770temporary nodes. This could cause a problem if there is race condition 10771between an exiting control method and a running namespace walk. (Reported 10772by 10773Linn Crosetto) 10774 10775Fixed a problem where the CreateField and CreateXXXField operators would 10776incorrectly allow duplicate names (the name of the field) with no 10777exception 10778generated. 10779 10780Implemented several changes for Notify handling. Added support for new 10781Notify 10782values (ACPI 2.0+) and improved the Notify debug output. Notify on 10783PowerResource objects is no longer allowed, as per the ACPI 10784specification. 10785(Bob Moore, Zhang Rui) 10786 10787All Reference Objects returned via the AcpiEvaluateObject interface are 10788now 10789marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10790for 10791NULL objects - either NULL package elements or unresolved named 10792references. 10793 10794Fixed a problem where an extraneous debug message was produced for 10795package 10796objects (when debugging enabled). The message "Package List length larger 10797than NumElements count" is now produced in the correct case, and is now 10798an 10799error message rather than a debug message. Added a debug message for the 10800opposite case, where NumElements is larger than the Package List (the 10801package 10802will be padded out with NULL elements as per the ACPI spec.) 10803 10804Implemented several improvements for the output of the ASL "Debug" object 10805to 10806clarify and keep all data for a given object on one output line. 10807 10808Fixed two size calculation issues with the variable-length Start 10809Dependent 10810resource descriptor. 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 10816a much larger code and data size. 10817 10818 Previous Release: 10819 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10820 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10821 Current Release: 10822 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10823 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10824 108252) iASL Compiler/Disassembler and Tools: 10826 10827Fixed a problem with the use of the Switch operator where execution of 10828the 10829containing method by multiple concurrent threads could cause an 10830AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10831actual Switch opcode, it must be simulated with local named temporary 10832variables and if/else pairs. The solution chosen was to mark any method 10833that 10834uses Switch as Serialized, thus preventing multiple thread entries. BZ 10835469. 10836 10837---------------------------------------- 1083813 February 2008. Summary of changes for version 20080213: 10839 108401) ACPI CA Core Subsystem: 10841 10842Implemented another MS compatibility design change for GPE/Notify 10843handling. 10844GPEs are now cleared/enabled asynchronously to allow all pending notifies 10845to 10846complete first. It is expected that the OSL will queue the enable request 10847behind all pending notify requests (may require changes to the local host 10848OSL 10849in AcpiOsExecute). Alexey Starikovskiy. 10850 10851Fixed a problem where buffer and package objects passed as arguments to a 10852control method via the external AcpiEvaluateObject interface could cause 10853an 10854AE_AML_INTERNAL exception depending on the order and type of operators 10855executed by the target control method. 10856 10857Fixed a problem where resource descriptor size optimization could cause a 10858problem when a _CRS resource template is passed to a _SRS method. The 10859_SRS 10860resource template must use the same descriptors (with the same size) as 10861returned from _CRS. This change affects the following resource 10862descriptors: 10863IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 108649487) 10865 10866Fixed a problem where a CopyObject to RegionField, BankField, and 10867IndexField 10868objects did not perform an implicit conversion as it should. These types 10869must 10870retain their initial type permanently as per the ACPI specification. 10871However, 10872a CopyObject to all other object types should not perform an implicit 10873conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10874 10875Fixed a problem with the AcpiGetDevices interface where the mechanism to 10876match device CIDs did not examine the entire list of available CIDs, but 10877instead aborted on the first non-matching CID. Andrew Patterson. 10878 10879Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10880was 10881inadvertently changed to return a 16-bit value instead of a 32-bit value, 10882truncating the upper dword of a 64-bit value. This macro is only used to 10883display debug output, so no incorrect calculations were made. Also, 10884reimplemented the macro so that a 64-bit shift is not performed by 10885inefficient compilers. 10886 10887Added missing va_end statements that should correspond with each va_start 10888statement. 10889 10890Example Code and Data Size: These are the sizes for the OS-independent 10891acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10892debug version of the code includes the debug output trace mechanism and 10893has 10894a much larger code and data size. 10895 10896 Previous Release: 10897 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10898 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10899 Current Release: 10900 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10901 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10902 109032) iASL Compiler/Disassembler and Tools: 10904 10905Implemented full disassembler support for the following new ACPI tables: 10906BERT, EINJ, and ERST. Implemented partial disassembler support for the 10907complicated HEST table. These tables support the Windows Hardware Error 10908Architecture (WHEA). 10909 10910---------------------------------------- 1091123 January 2008. Summary of changes for version 20080123: 10912 109131) ACPI CA Core Subsystem: 10914 10915Added the 2008 copyright to all module headers and signons. This affects 10916virtually every file in the ACPICA core subsystem, the iASL compiler, and 10917the tools/utilities. 10918 10919Fixed a problem with the SizeOf operator when used with Package and 10920Buffer 10921objects. These objects have deferred execution for some arguments, and 10922the 10923execution is now completed before the SizeOf is executed. This problem 10924caused 10925unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10926BZ 109279558 10928 10929Implemented an enhancement to the interpreter "slack mode". In the 10930absence 10931of 10932an explicit return or an implicitly returned object from the last 10933executed 10934opcode, a control method will now implicitly return an integer of value 0 10935for 10936Microsoft compatibility. (Lin Ming) BZ 392 10937 10938Fixed a problem with the Load operator where an exception was not 10939returned 10940in 10941the case where the table is already loaded. (Lin Ming) BZ 463 10942 10943Implemented support for the use of DDBHandles as an Indexed Reference, as 10944per 10945the ACPI spec. (Lin Ming) BZ 486 10946 10947Implemented support for UserTerm (Method invocation) for the Unload 10948operator 10949as per the ACPI spec. (Lin Ming) BZ 580 10950 10951Fixed a problem with the LoadTable operator where the OemId and 10952OemTableId 10953input strings could cause unexpected failures if they were shorter than 10954the 10955maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10956 10957Implemented support for UserTerm (Method invocation) for the Unload 10958operator 10959as per the ACPI spec. (Lin Ming) BZ 580 10960 10961Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10962HEST, 10963IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10964 10965Example Code and Data Size: These are the sizes for the OS-independent 10966acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10967debug version of the code includes the debug output trace mechanism and 10968has 10969a much larger code and data size. 10970 10971 Previous Release: 10972 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10973 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10974 Current Release: 10975 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10976 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10977 109782) iASL Compiler/Disassembler and Tools: 10979 10980Implemented support in the disassembler for checksum validation on 10981incoming 10982binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10983table 10984header dump at the start of the disassembly. 10985 10986Implemented additional debugging information in the namespace listing 10987file 10988created during compilation. In addition to the namespace hierarchy, the 10989full 10990pathname to each namespace object is displayed. 10991 10992Fixed a problem with the disassembler where invalid ACPI tables could 10993cause 10994faults or infinite loops. 10995 10996Fixed an unexpected parse error when using the optional "parameter types" 10997list in a control method declaration. (Lin Ming) BZ 397 10998 10999Fixed a problem where two External declarations with the same name did 11000not 11001cause an error (Lin Ming) BZ 509 11002 11003Implemented support for full TermArgs (adding Argx, Localx and method 11004invocation) for the ParameterData parameter to the LoadTable operator. 11005(Lin 11006Ming) BZ 583,587 11007 11008---------------------------------------- 1100919 December 2007. Summary of changes for version 20071219: 11010 110111) ACPI CA Core Subsystem: 11012 11013Implemented full support for deferred execution for the TermArg string 11014arguments for DataTableRegion. This enables forward references and full 11015operand resolution for the three string arguments. Similar to 11016OperationRegion 11017deferred argument execution.) Lin Ming. BZ 430 11018 11019Implemented full argument resolution support for the BankValue argument 11020to 11021BankField. Previously, only constants were supported, now any TermArg may 11022be 11023used. Lin Ming BZ 387, 393 11024 11025Fixed a problem with AcpiGetDevices where the search of a branch of the 11026device tree could be terminated prematurely. In accordance with the ACPI 11027specification, the search down the current branch is terminated if a 11028device 11029is both not present and not functional (instead of just not present.) 11030Yakui 11031Zhao. 11032 11033Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 11034if 11035the underlying AML code changed the GPE enable registers. Now, any 11036unknown 11037incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 11038disabled 11039instead of simply ignored. Rui Zhang. 11040 11041Fixed a problem with Index Fields where the Index register was 11042incorrectly 11043limited to a maximum of 32 bits. Now any size may be used. 11044 11045Fixed a couple memory leaks associated with "implicit return" objects 11046when 11047the AML Interpreter slack mode is enabled. Lin Ming BZ 349 11048 11049Example Code and Data Size: These are the sizes for the OS-independent 11050acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11051debug version of the code includes the debug output trace mechanism and 11052has 11053a much larger code and data size. 11054 11055 Previous Release: 11056 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11057 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11058 Current Release: 11059 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 11060 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 11061 11062---------------------------------------- 1106314 November 2007. Summary of changes for version 20071114: 11064 110651) ACPI CA Core Subsystem: 11066 11067Implemented event counters for each of the Fixed Events, the ACPI SCI 11068(interrupt) itself, and control methods executed. Named 11069AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 11070These 11071should be useful for debugging and statistics. 11072 11073Implemented a new external interface, AcpiGetStatistics, to retrieve the 11074contents of the various event counters. Returns the current values for 11075AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 11076AcpiMethodCount. The interface can be expanded in the future if new 11077counters 11078are added. Device drivers should use this interface rather than access 11079the 11080counters directly. 11081 11082Fixed a problem with the FromBCD and ToBCD operators. With some 11083compilers, 11084the ShortDivide function worked incorrectly, causing problems with the 11085BCD 11086functions with large input values. A truncation from 64-bit to 32-bit 11087inadvertently occurred. Internal BZ 435. Lin Ming 11088 11089Fixed a problem with Index references passed as method arguments. 11090References 11091passed as arguments to control methods were dereferenced immediately 11092(before 11093control was passed to the called method). The references are now 11094correctly 11095passed directly to the called method. BZ 5389. Lin Ming 11096 11097Fixed a problem with CopyObject used in conjunction with the Index 11098operator. 11099The reference was incorrectly dereferenced before the copy. The reference 11100is 11101now correctly copied. BZ 5391. Lin Ming 11102 11103Fixed a problem with Control Method references within Package objects. 11104These 11105references are now correctly generated. This completes the package 11106construction overhaul that began in version 20071019. 11107 11108Example Code and Data Size: These are the sizes for the OS-independent 11109acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11110debug version of the code includes the debug output trace mechanism and 11111has 11112a much larger code and data size. 11113 11114 Previous Release: 11115 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11116 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11117 Current Release: 11118 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11119 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11120 11121 111222) iASL Compiler/Disassembler and Tools: 11123 11124The AcpiExec utility now installs handlers for all of the predefined 11125Operation Region types. New types supported are: PCI_Config, CMOS, and 11126PCIBARTarget. 11127 11128Fixed a problem with the 64-bit version of AcpiExec where the extended 11129(64- 11130bit) address fields for the DSDT and FACS within the FADT were not being 11131used, causing truncation of the upper 32-bits of these addresses. Lin 11132Ming 11133and Bob Moore 11134 11135---------------------------------------- 1113619 October 2007. Summary of changes for version 20071019: 11137 111381) ACPI CA Core Subsystem: 11139 11140Fixed a problem with the Alias operator when the target of the alias is a 11141named ASL operator that opens a new scope -- Scope, Device, 11142PowerResource, 11143Processor, and ThermalZone. In these cases, any children of the original 11144operator could not be accessed via the alias, potentially causing 11145unexpected 11146AE_NOT_FOUND exceptions. (BZ 9067) 11147 11148Fixed a problem with the Package operator where all named references were 11149created as object references and left otherwise unresolved. According to 11150the 11151ACPI specification, a Package can only contain Data Objects or references 11152to 11153control methods. The implication is that named references to Data Objects 11154(Integer, Buffer, String, Package, BufferField, Field) should be resolved 11155immediately upon package creation. This is the approach taken with this 11156change. References to all other named objects (Methods, Devices, Scopes, 11157etc.) are all now properly created as reference objects. (BZ 5328) 11158 11159Reverted a change to Notify handling that was introduced in version 1116020070508. This version changed the Notify handling from asynchronous to 11161fully synchronous (Device driver Notify handling with respect to the 11162Notify 11163ASL operator). It was found that this change caused more problems than it 11164solved and was removed by most users. 11165 11166Fixed a problem with the Increment and Decrement operators where the type 11167of 11168the target object could be unexpectedly and incorrectly changed. (BZ 353) 11169Lin Ming. 11170 11171Fixed a problem with the Load and LoadTable operators where the table 11172location within the namespace was ignored. Instead, the table was always 11173loaded into the root or current scope. Lin Ming. 11174 11175Fixed a problem with the Load operator when loading a table from a buffer 11176object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 11177 11178Fixed a problem with the Debug object where a store of a DdbHandle 11179reference 11180object to the Debug object could cause a fault. 11181 11182Added a table checksum verification for the Load operator, in the case 11183where 11184the load is from a buffer. (BZ 578). 11185 11186Implemented additional parameter validation for the LoadTable operator. 11187The 11188length of the input strings SignatureString, OemIdString, and OemTableId 11189are 11190now checked for maximum lengths. (BZ 582) Lin Ming. 11191 11192Example Code and Data Size: These are the sizes for the OS-independent 11193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11194debug version of the code includes the debug output trace mechanism and 11195has 11196a much larger code and data size. 11197 11198 Previous Release: 11199 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11200 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11201 Current Release: 11202 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11203 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11204 11205 112062) iASL Compiler/Disassembler: 11207 11208Fixed a problem where if a single file was specified and the file did not 11209exist, no error message was emitted. (Introduced with wildcard support in 11210version 20070917.) 11211 11212---------------------------------------- 1121319 September 2007. Summary of changes for version 20070919: 11214 112151) ACPI CA Core Subsystem: 11216 11217Designed and implemented new external interfaces to install and remove 11218handlers for ACPI table-related events. Current events that are defined 11219are 11220LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 11221they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 11222AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 11223 11224Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 11225(acpi_serialized option on Linux) could cause some systems to hang during 11226initialization. (Bob Moore) BZ 8171 11227 11228Fixed a problem where objects of certain types (Device, ThermalZone, 11229Processor, PowerResource) can be not found if they are declared and 11230referenced from within the same control method (Lin Ming) BZ 341 11231 11232Example Code and Data Size: These are the sizes for the OS-independent 11233acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11234debug version of the code includes the debug output trace mechanism and 11235has 11236a much larger code and data size. 11237 11238 Previous Release: 11239 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11240 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11241 Current Release: 11242 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11243 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11244 11245 112462) iASL Compiler/Disassembler: 11247 11248Implemented support to allow multiple files to be compiled/disassembled 11249in 11250a 11251single invocation. This includes command line wildcard support for both 11252the 11253Windows and Unix versions of the compiler. This feature simplifies the 11254disassembly and compilation of multiple ACPI tables in a single 11255directory. 11256 11257---------------------------------------- 1125808 May 2007. Summary of changes for version 20070508: 11259 112601) ACPI CA Core Subsystem: 11261 11262Implemented a Microsoft compatibility design change for the handling of 11263the 11264Notify AML operator. Previously, notify handlers were dispatched and 11265executed completely asynchronously in a deferred thread. The new design 11266still executes the notify handlers in a different thread, but the 11267original 11268thread that executed the Notify() now waits at a synchronization point 11269for 11270the notify handler to complete. Some machines depend on a synchronous 11271Notify 11272operator in order to operate correctly. 11273 11274Implemented support to allow Package objects to be passed as method 11275arguments to the external AcpiEvaluateObject interface. Previously, this 11276would return the AE_NOT_IMPLEMENTED exception. This feature had not been 11277implemented since there were no reserved control methods that required it 11278until recently. 11279 11280Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 11281that 11282contained invalid non-zero values in reserved fields could cause later 11283failures because these fields have meaning in later revisions of the 11284FADT. 11285For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 11286fields 11287are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 11288 11289Fixed a problem where the Global Lock handle was not properly updated if 11290a 11291thread that acquired the Global Lock via executing AML code then 11292attempted 11293to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 11294Joe 11295Liu. 11296 11297Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 11298could be corrupted if the interrupt being removed was at the head of the 11299list. Reported by Linn Crosetto. 11300 11301Example Code and Data Size: These are the sizes for the OS-independent 11302acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11303debug version of the code includes the debug output trace mechanism and 11304has 11305a much larger code and data size. 11306 11307 Previous Release: 11308 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11309 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11310 Current Release: 11311 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11312 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11313 11314---------------------------------------- 1131520 March 2007. Summary of changes for version 20070320: 11316 113171) ACPI CA Core Subsystem: 11318 11319Implemented a change to the order of interpretation and evaluation of AML 11320operand objects within the AML interpreter. The interpreter now evaluates 11321operands in the order that they appear in the AML stream (and the 11322corresponding ASL code), instead of in the reverse order (after the 11323entire 11324operand list has been parsed). The previous behavior caused several 11325subtle 11326incompatibilities with the Microsoft AML interpreter as well as being 11327somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 11328 11329Implemented a change to the ACPI Global Lock support. All interfaces to 11330the 11331global lock now allow the same thread to acquire the lock multiple times. 11332This affects the AcpiAcquireGlobalLock external interface to the global 11333lock 11334as well as the internal use of the global lock to support AML fields -- a 11335control method that is holding the global lock can now simultaneously 11336access 11337AML fields that require global lock protection. Previously, in both 11338cases, 11339this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 11340to 11341AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 11342Controller. There is no change to the behavior of the AML Acquire 11343operator, 11344as this can already be used to acquire a mutex multiple times by the same 11345thread. BZ 8066. With assistance from Alexey Starikovskiy. 11346 11347Fixed a problem where invalid objects could be referenced in the AML 11348Interpreter after error conditions. During operand evaluation, ensure 11349that 11350the internal "Return Object" field is cleared on error and only valid 11351pointers are stored there. Caused occasional access to deleted objects 11352that 11353resulted in "large reference count" warning messages. Valery Podrezov. 11354 11355Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 11356on 11357deeply nested control method invocations. BZ 7873, local BZ 487. Valery 11358Podrezov. 11359 11360Fixed an internal problem with the handling of result objects on the 11361interpreter result stack. BZ 7872. Valery Podrezov. 11362 11363Removed obsolete code that handled the case where AML_NAME_OP is the 11364target 11365of a reference (Reference.Opcode). This code was no longer necessary. BZ 113667874. Valery Podrezov. 11367 11368Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 11369was 11370a 11371remnant from the previously discontinued 16-bit support. 11372 11373Example Code and Data Size: These are the sizes for the OS-independent 11374acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11375debug version of the code includes the debug output trace mechanism and 11376has 11377a much larger code and data size. 11378 11379 Previous Release: 11380 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11381 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11382 Current Release: 11383 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11384 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11385 11386---------------------------------------- 1138726 January 2007. Summary of changes for version 20070126: 11388 113891) ACPI CA Core Subsystem: 11390 11391Added the 2007 copyright to all module headers and signons. This affects 11392virtually every file in the ACPICA core subsystem, the iASL compiler, and 11393the utilities. 11394 11395Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 11396during a table load. A bad pointer was passed in the case where the DSDT 11397is 11398overridden, causing a fault in this case. 11399 11400Example Code and Data Size: These are the sizes for the OS-independent 11401acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11402debug version of the code includes the debug output trace mechanism and 11403has 11404a much larger code and data size. 11405 11406 Previous Release: 11407 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11408 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11409 Current Release: 11410 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11411 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11412 11413---------------------------------------- 1141415 December 2006. Summary of changes for version 20061215: 11415 114161) ACPI CA Core Subsystem: 11417 11418Support for 16-bit ACPICA has been completely removed since it is no 11419longer 11420necessary and it clutters the code. All 16-bit macros, types, and 11421conditional compiles have been removed, cleaning up and simplifying the 11422code 11423across the entire subsystem. DOS support is no longer needed since the 11424bootable Linux firmware kit is now available. 11425 11426The handler for the Global Lock is now removed during AcpiTerminate to 11427enable a clean subsystem restart, via the implementation of the 11428AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 11429HP) 11430 11431Implemented enhancements to the multithreading support within the 11432debugger 11433to enable improved multithreading debugging and evaluation of the 11434subsystem. 11435(Valery Podrezov) 11436 11437Debugger: Enhanced the Statistics/Memory command to emit the total 11438(maximum) 11439memory used during the execution, as well as the maximum memory consumed 11440by 11441each of the various object types. (Valery Podrezov) 11442 11443Example Code and Data Size: These are the sizes for the OS-independent 11444acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11445debug version of the code includes the debug output trace mechanism and 11446has 11447a much larger code and data size. 11448 11449 Previous Release: 11450 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11451 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11452 Current Release: 11453 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11454 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11455 11456 114572) iASL Compiler/Disassembler and Tools: 11458 11459AcpiExec: Implemented a new option (-m) to display full memory use 11460statistics upon subsystem/program termination. (Valery Podrezov) 11461 11462---------------------------------------- 1146309 November 2006. Summary of changes for version 20061109: 11464 114651) ACPI CA Core Subsystem: 11466 11467Optimized the Load ASL operator in the case where the source operand is 11468an 11469operation region. Simply map the operation region memory, instead of 11470performing a bytewise read. (Region must be of type SystemMemory, see 11471below.) 11472 11473Fixed the Load ASL operator for the case where the source operand is a 11474region field. A buffer object is also allowed as the source operand. BZ 11475480 11476 11477Fixed a problem where the Load ASL operator allowed the source operand to 11478be 11479an operation region of any type. It is now restricted to regions of type 11480SystemMemory, as per the ACPI specification. BZ 481 11481 11482Additional cleanup and optimizations for the new Table Manager code. 11483 11484AcpiEnable will now fail if all of the required ACPI tables are not 11485loaded 11486(FADT, FACS, DSDT). BZ 477 11487 11488Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11489this 11490header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11491manually optimized to be aligned and will not work if it is byte-packed. 11492 11493Example Code and Data Size: These are the sizes for the OS-independent 11494acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11495debug version of the code includes the debug output trace mechanism and 11496has 11497a much larger code and data size. 11498 11499 Previous Release: 11500 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11501 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11502 Current Release: 11503 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11504 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11505 11506 115072) iASL Compiler/Disassembler and Tools: 11508 11509Fixed a problem where the presence of the _OSI predefined control method 11510within complex expressions could cause an internal compiler error. 11511 11512AcpiExec: Implemented full region support for multiple address spaces. 11513SpaceId is now part of the REGION object. BZ 429 11514 11515---------------------------------------- 1151611 October 2006. Summary of changes for version 20061011: 11517 115181) ACPI CA Core Subsystem: 11519 11520Completed an AML interpreter performance enhancement for control method 11521execution. Previously a 2-pass parse/execution, control methods are now 11522completely parsed and executed in a single pass. This improves overall 11523interpreter performance by ~25%, reduces code size, and reduces CPU stack 11524use. (Valery Podrezov + interpreter changes in version 20051202 that 11525eliminated namespace loading during the pass one parse.) 11526 11527Implemented _CID support for PCI Root Bridge detection. If the _HID does 11528not 11529match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11530now 11531obtained and also checked for an ID match. 11532 11533Implemented additional support for the PCI _ADR execution: upsearch until 11534a 11535device scope is found before executing _ADR. This allows PCI_Config 11536operation regions to be declared locally within control methods 11537underneath 11538PCI device objects. 11539 11540Fixed a problem with a possible race condition between threads executing 11541AcpiWalkNamespace and the AML interpreter. This condition was removed by 11542modifying AcpiWalkNamespace to (by default) ignore all temporary 11543namespace 11544entries created during any concurrent control method execution. An 11545additional namespace race condition is known to exist between 11546AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11547investigation. 11548 11549Restructured the AML ParseLoop function, breaking it into several 11550subfunctions in order to reduce CPU stack use and improve 11551maintainability. 11552(Mikhail Kouzmich) 11553 11554AcpiGetHandle: Fix for parameter validation to detect invalid 11555combinations 11556of prefix handle and pathname. BZ 478 11557 11558Example Code and Data Size: These are the sizes for the OS-independent 11559acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11560debug version of the code includes the debug output trace mechanism and 11561has 11562a much larger code and data size. 11563 11564 Previous Release: 11565 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11566 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11567 Current Release: 11568 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11569 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11570 115712) iASL Compiler/Disassembler and Tools: 11572 11573Ported the -g option (get local ACPI tables) to the new ACPICA Table 11574Manager 11575to restore original behavior. 11576 11577---------------------------------------- 1157827 September 2006. Summary of changes for version 20060927: 11579 115801) ACPI CA Core Subsystem: 11581 11582Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11583These functions now use a spinlock for mutual exclusion and the interrupt 11584level indication flag is not needed. 11585 11586Fixed a problem with the Global Lock where the lock could appear to be 11587obtained before it is actually obtained. The global lock semaphore was 11588inadvertently created with one unit instead of zero units. (BZ 464) 11589Fiodor 11590Suietov. 11591 11592Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11593during 11594a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11595 11596Example Code and Data Size: These are the sizes for the OS-independent 11597acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11598debug version of the code includes the debug output trace mechanism and 11599has 11600a much larger code and data size. 11601 11602 Previous Release: 11603 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11604 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11605 Current Release: 11606 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11607 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11608 11609 116102) iASL Compiler/Disassembler and Tools: 11611 11612Fixed a compilation problem with the pre-defined Resource Descriptor 11613field 11614names where an "object does not exist" error could be incorrectly 11615generated 11616if the parent ResourceTemplate pathname places the template within a 11617different namespace scope than the current scope. (BZ 7212) 11618 11619Fixed a problem where the compiler could hang after syntax errors 11620detected 11621in an ElseIf construct. (BZ 453) 11622 11623Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11624operator. An incorrect output filename was produced when this parameter 11625was 11626a null string (""). Now, the original input filename is used as the AML 11627output filename, with an ".aml" extension. 11628 11629Implemented a generic batch command mode for the AcpiExec utility 11630(execute 11631any AML debugger command) (Valery Podrezov). 11632 11633---------------------------------------- 1163412 September 2006. Summary of changes for version 20060912: 11635 116361) ACPI CA Core Subsystem: 11637 11638Enhanced the implementation of the "serialized mode" of the interpreter 11639(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11640specified, instead of creating a serialization semaphore per control 11641method, 11642the interpreter lock is simply no longer released before a blocking 11643operation during control method execution. This effectively makes the AML 11644Interpreter single-threaded. The overhead of a semaphore per-method is 11645eliminated. 11646 11647Fixed a regression where an error was no longer emitted if a control 11648method 11649attempts to create 2 objects of the same name. This once again returns 11650AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11651that 11652will dynamically serialize the control method to possible prevent future 11653errors. (BZ 440) 11654 11655Integrated a fix for a problem with PCI Express HID detection in the PCI 11656Config Space setup procedure. (BZ 7145) 11657 11658Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11659AcpiHwInitialize function - the FADT registers are now validated when the 11660table is loaded. 11661 11662Added two new warnings during FADT verification - 1) if the FADT is 11663larger 11664than the largest known FADT version, and 2) if there is a mismatch 11665between 11666a 1166732-bit block address and the 64-bit X counterpart (when both are non- 11668zero.) 11669 11670Example Code and Data Size: These are the sizes for the OS-independent 11671acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11672debug version of the code includes the debug output trace mechanism and 11673has 11674a much larger code and data size. 11675 11676 Previous Release: 11677 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11678 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11679 Current Release: 11680 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11681 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11682 11683 116842) iASL Compiler/Disassembler and Tools: 11685 11686Fixed a problem with the implementation of the Switch() operator where 11687the 11688temporary variable was declared too close to the actual Switch, instead 11689of 11690at method level. This could cause a problem if the Switch() operator is 11691within a while loop, causing an error on the second iteration. (BZ 460) 11692 11693Disassembler - fix for error emitted for unknown type for target of scope 11694operator. Now, ignore it and continue. 11695 11696Disassembly of an FADT now verifies the input FADT and reports any errors 11697found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11698 11699Disassembly of raw data buffers with byte initialization data now 11700prefixes 11701each output line with the current buffer offset. 11702 11703Disassembly of ASF! table now includes all variable-length data fields at 11704the end of some of the subtables. 11705 11706The disassembler now emits a comment if a buffer appears to be a 11707ResourceTemplate, but cannot be disassembled as such because the EndTag 11708does 11709not appear at the very end of the buffer. 11710 11711AcpiExec - Added the "-t" command line option to enable the serialized 11712mode 11713of the AML interpreter. 11714 11715---------------------------------------- 1171631 August 2006. Summary of changes for version 20060831: 11717 117181) ACPI CA Core Subsystem: 11719 11720Miscellaneous fixes for the Table Manager: 11721- Correctly initialize internal common FADT for all 64-bit "X" fields 11722- Fixed a couple table mapping issues during table load 11723- Fixed a couple alignment issues for IA64 11724- Initialize input array to zero in AcpiInitializeTables 11725- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11726AcpiGetTableByIndex 11727 11728Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11729now 11730immediately disabled to prevent the waking GPE from firing again and to 11731prevent other wake GPEs from interrupting the wake process. 11732 11733Added the AcpiGpeCount global that tracks the number of processed GPEs, 11734to 11735be used for debugging systems with a large number of ACPI interrupts. 11736 11737Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11738both the ACPICA headers and the disassembler. 11739 11740Example Code and Data Size: These are the sizes for the OS-independent 11741acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11742debug version of the code includes the debug output trace mechanism and 11743has 11744a much larger code and data size. 11745 11746 Previous Release: 11747 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11748 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11749 Current Release: 11750 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11751 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11752 11753 117542) iASL Compiler/Disassembler and Tools: 11755 11756Disassembler support for the DMAR ACPI table. 11757 11758---------------------------------------- 1175923 August 2006. Summary of changes for version 20060823: 11760 117611) ACPI CA Core Subsystem: 11762 11763The Table Manager component has been completely redesigned and 11764reimplemented. The new design is much simpler, and reduces the overall 11765code 11766and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11767is 11768now possible to obtain the ACPI tables very early during kernel 11769initialization, even before dynamic memory management is initialized. 11770(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11771 11772Obsolete ACPICA interfaces: 11773 11774- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11775init 11776time). 11777- AcpiLoadTable: Not needed. 11778- AcpiUnloadTable: Not needed. 11779 11780New ACPICA interfaces: 11781 11782- AcpiInitializeTables: Must be called before the table manager can be 11783used. 11784- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11785allocated memory after it becomes available. 11786- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11787tables 11788in the RSDT/XSDT. 11789 11790Other ACPICA changes: 11791 11792- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11793Use 11794AcpiOsUnmapMemory to free this mapping. 11795- AcpiGetTable returns the actual mapped table. The mapping is managed 11796internally and must not be deleted by the caller. Use of this interface 11797causes no additional dynamic memory allocation. 11798- AcpiFindRootPointer: Support for physical addressing has been 11799eliminated, 11800it appeared to be unused. 11801- The interface to AcpiOsMapMemory has changed to be consistent with the 11802other allocation interfaces. 11803- The interface to AcpiOsGetRootPointer has changed to eliminate 11804unnecessary 11805parameters. 11806- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1180764- 11808bit platforms. Was previously 64 bits on all platforms. 11809- The interface to the ACPI Global Lock acquire/release macros have 11810changed 11811slightly since ACPICA no longer keeps a local copy of the FACS with a 11812constructed pointer to the actual global lock. 11813 11814Porting to the new table manager: 11815 11816- AcpiInitializeTables: Must be called once, and can be called anytime 11817during the OS initialization process. It allows the host to specify an 11818area 11819of memory to be used to store the internal version of the RSDT/XSDT (root 11820table). This allows the host to access ACPI tables before memory 11821management 11822is initialized and running. 11823- AcpiReallocateRootTable: Can be called after memory management is 11824running 11825to copy the root table to a dynamically allocated array, freeing up the 11826scratch memory specified in the call to AcpiInitializeTables. 11827- AcpiSubsystemInitialize: This existing interface is independent of the 11828Table Manager, and does not have to be called before the Table Manager 11829can 11830be used, it only must be called before the rest of ACPICA can be used. 11831- ACPI Tables: Some changes have been made to the names and structure of 11832the 11833actbl.h and actbl1.h header files and may require changes to existing 11834code. 11835For example, bitfields have been completely removed because of their lack 11836of 11837portability across C compilers. 11838- Update interfaces to the Global Lock acquire/release macros if local 11839versions are used. (see acwin.h) 11840 11841Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11842 11843New files: tbfind.c 11844 11845Example Code and Data Size: These are the sizes for the OS-independent 11846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11847debug version of the code includes the debug output trace mechanism and 11848has 11849a much larger code and data size. 11850 11851 Previous Release: 11852 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11853 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11854 Current Release: 11855 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11856 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11857 11858 118592) iASL Compiler/Disassembler and Tools: 11860 11861No changes for this release. 11862 11863---------------------------------------- 1186421 July 2006. Summary of changes for version 20060721: 11865 118661) ACPI CA Core Subsystem: 11867 11868The full source code for the ASL test suite used to validate the iASL 11869compiler and the ACPICA core subsystem is being released with the ACPICA 11870source for the first time. The source is contained in a separate package 11871and 11872consists of over 1100 files that exercise all ASL/AML operators. The 11873package 11874should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11875Fiodor 11876Suietov) 11877 11878Completed a new design and implementation for support of the ACPI Global 11879Lock. On the OS side, the global lock is now treated as a standard AML 11880mutex. Previously, multiple OS threads could "acquire" the global lock 11881simultaneously. However, this could cause the BIOS to be starved out of 11882the 11883lock - especially in cases such as the Embedded Controller driver where 11884there is a tight coupling between the OS and the BIOS. 11885 11886Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11887The Global Lock interrupt handler no longer queues the execution of a 11888separate thread to signal the global lock semaphore. Instead, the 11889semaphore 11890is signaled directly from the interrupt handler. 11891 11892Implemented support within the AML interpreter for package objects that 11893contain a larger AML length (package list length) than the package 11894element 11895count. In this case, the length of the package is truncated to match the 11896package element count. Some BIOS code apparently modifies the package 11897length 11898on the fly, and this change supports this behavior. Provides 11899compatibility 11900with the MS AML interpreter. (With assistance from Fiodor Suietov) 11901 11902Implemented a temporary fix for the BankValue parameter of a Bank Field 11903to 11904support all constant values, now including the Zero and One opcodes. 11905Evaluation of this parameter must eventually be converted to a full 11906TermArg 11907evaluation. A not-implemented error is now returned (temporarily) for 11908non- 11909constant values for this parameter. 11910 11911Fixed problem reports (Fiodor Suietov) integrated: 11912- Fix for premature object deletion after CopyObject on Operation Region 11913(BZ 11914350) 11915 11916Example Code and Data Size: These are the sizes for the OS-independent 11917acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11918debug version of the code includes the debug output trace mechanism and 11919has 11920a much larger code and data size. 11921 11922 Previous Release: 11923 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11924 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11925 Current Release: 11926 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11927 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11928 11929 119302) iASL Compiler/Disassembler and Tools: 11931 11932No changes for this release. 11933 11934---------------------------------------- 1193507 July 2006. Summary of changes for version 20060707: 11936 119371) ACPI CA Core Subsystem: 11938 11939Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11940that do not allow the initialization of address pointers within packed 11941structures - even though the hardware itself may support misaligned 11942transfers. Some of the debug data structures are packed by default to 11943minimize size. 11944 11945Added an error message for the case where AcpiOsGetThreadId() returns 11946zero. 11947A non-zero value is required by the core ACPICA code to ensure the proper 11948operation of AML mutexes and recursive control methods. 11949 11950The DSDT is now the only ACPI table that determines whether the AML 11951interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11952but 11953the hooks for per-table 32/64 switching have been removed from the code. 11954A 11955clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11956 11957Fixed a possible leak of an OwnerID in the error path of 11958AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11959deletion to a single place in AcpiTbUninstallTable to correct possible 11960leaks 11961when using the AcpiTbDeleteTablesByType interface (with assistance from 11962Lance Ortiz.) 11963 11964Fixed a problem with Serialized control methods where the semaphore 11965associated with the method could be over-signaled after multiple method 11966invocations. 11967 11968Fixed two issues with the locking of the internal namespace data 11969structure. 11970Both the Unload() operator and AcpiUnloadTable interface now lock the 11971namespace during the namespace deletion associated with the table unload 11972(with assistance from Linn Crosetto.) 11973 11974Fixed problem reports (Valery Podrezov) integrated: 11975- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11976 11977Fixed problem reports (Fiodor Suietov) integrated: 11978- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11979- On Address Space handler deletion, needless deactivation call (BZ 374) 11980- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11981375) 11982- Possible memory leak, Notify sub-objects of Processor, Power, 11983ThermalZone 11984(BZ 376) 11985- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11986- Minimum Length of RSDT should be validated (BZ 379) 11987- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11988Handler (BZ (380) 11989- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11990loaded 11991(BZ 381) 11992 11993Example Code and Data Size: These are the sizes for the OS-independent 11994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11995debug version of the code includes the debug output trace mechanism and 11996has 11997a much larger code and data size. 11998 11999 Previous Release: 12000 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12001 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12002 Current Release: 12003 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 12004 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 12005 12006 120072) iASL Compiler/Disassembler and Tools: 12008 12009Fixed problem reports: 12010Compiler segfault when ASL contains a long (>1024) String declaration (BZ 12011436) 12012 12013---------------------------------------- 1201423 June 2006. Summary of changes for version 20060623: 12015 120161) ACPI CA Core Subsystem: 12017 12018Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 12019allows the type to be customized to the host OS for improved efficiency 12020(since a spinlock is usually a very small object.) 12021 12022Implemented support for "ignored" bits in the ACPI registers. According 12023to 12024the ACPI specification, these bits should be preserved when writing the 12025registers via a read/modify/write cycle. There are 3 bits preserved in 12026this 12027manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 12028 12029Implemented the initial deployment of new OSL mutex interfaces. Since 12030some 12031host operating systems have separate mutex and semaphore objects, this 12032feature was requested. The base code now uses mutexes (and the new mutex 12033interfaces) wherever a binary semaphore was used previously. However, for 12034the current release, the mutex interfaces are defined as macros to map 12035them 12036to the existing semaphore interfaces. Therefore, no OSL changes are 12037required 12038at this time. (See acpiosxf.h) 12039 12040Fixed several problems with the support for the control method SyncLevel 12041parameter. The SyncLevel now works according to the ACPI specification 12042and 12043in concert with the Mutex SyncLevel parameter, since the current 12044SyncLevel 12045is a property of the executing thread. Mutual exclusion for control 12046methods 12047is now implemented with a mutex instead of a semaphore. 12048 12049Fixed three instances of the use of the C shift operator in the bitfield 12050support code (exfldio.c) to avoid the use of a shift value larger than 12051the 12052target data width. The behavior of C compilers is undefined in this case 12053and 12054can cause unpredictable results, and therefore the case must be detected 12055and 12056avoided. (Fiodor Suietov) 12057 12058Added an info message whenever an SSDT or OEM table is loaded dynamically 12059via the Load() or LoadTable() ASL operators. This should improve 12060debugging 12061capability since it will show exactly what tables have been loaded 12062(beyond 12063the tables present in the RSDT/XSDT.) 12064 12065Example Code and Data Size: These are the sizes for the OS-independent 12066acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12067debug version of the code includes the debug output trace mechanism and 12068has 12069a much larger code and data size. 12070 12071 Previous Release: 12072 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12073 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12074 Current Release: 12075 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12076 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12077 12078 120792) iASL Compiler/Disassembler and Tools: 12080 12081No changes for this release. 12082 12083---------------------------------------- 1208408 June 2006. Summary of changes for version 20060608: 12085 120861) ACPI CA Core Subsystem: 12087 12088Converted the locking mutex used for the ACPI hardware to a spinlock. 12089This 12090change should eliminate all problems caused by attempting to acquire a 12091semaphore at interrupt level, and it means that all ACPICA external 12092interfaces that directly access the ACPI hardware can be safely called 12093from 12094interrupt level. OSL code that implements the semaphore interfaces should 12095be 12096able to eliminate any workarounds for being called at interrupt level. 12097 12098Fixed a regression introduced in 20060526 where the ACPI device 12099initialization could be prematurely aborted with an AE_NOT_FOUND if a 12100device 12101did not have an optional _INI method. 12102 12103Fixed an IndexField issue where a write to the Data Register should be 12104limited in size to the AccessSize (width) of the IndexField itself. (BZ 12105433, 12106Fiodor Suietov) 12107 12108Fixed problem reports (Valery Podrezov) integrated: 12109- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 12110 12111Fixed problem reports (Fiodor Suietov) integrated: 12112- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 12113 12114Removed four global mutexes that were obsolete and were no longer being 12115used. 12116 12117Example Code and Data Size: These are the sizes for the OS-independent 12118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12119debug version of the code includes the debug output trace mechanism and 12120has 12121a much larger code and data size. 12122 12123 Previous Release: 12124 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12125 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12126 Current Release: 12127 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12128 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12129 12130 121312) iASL Compiler/Disassembler and Tools: 12132 12133Fixed a fault when using -g option (get tables from registry) on Windows 12134machines. 12135 12136Fixed problem reports integrated: 12137- Generate error if CreateField NumBits parameter is zero. (BZ 405) 12138- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 12139Suietov) 12140- Global table revision override (-r) is ignored (BZ 413) 12141 12142---------------------------------------- 1214326 May 2006. Summary of changes for version 20060526: 12144 121451) ACPI CA Core Subsystem: 12146 12147Restructured, flattened, and simplified the internal interfaces for 12148namespace object evaluation - resulting in smaller code, less CPU stack 12149use, 12150and fewer interfaces. (With assistance from Mikhail Kouzmich) 12151 12152Fixed a problem with the CopyObject operator where the first parameter 12153was 12154not typed correctly for the parser, interpreter, compiler, and 12155disassembler. 12156Caused various errors and unexpected behavior. 12157 12158Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 12159produced incorrect results with some C compilers. Since the behavior of C 12160compilers when the shift value is larger than the datatype width is 12161apparently not well defined, the interpreter now detects this condition 12162and 12163simply returns zero as expected in all such cases. (BZ 395) 12164 12165Fixed problem reports (Valery Podrezov) integrated: 12166- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 12167- Allow interpreter to handle nested method declarations (BZ 5361) 12168 12169Fixed problem reports (Fiodor Suietov) integrated: 12170- AcpiTerminate doesn't free debug memory allocation list objects (BZ 12171355) 12172- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 12173356) 12174- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 12175- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 12176- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 12177- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 12178- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 12179- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 12180- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 12181365) 12182- Status of the Global Initialization Handler call not used (BZ 366) 12183- Incorrect object parameter to Global Initialization Handler (BZ 367) 12184 12185Example Code and Data Size: These are the sizes for the OS-independent 12186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12187debug version of the code includes the debug output trace mechanism and 12188has 12189a much larger code and data size. 12190 12191 Previous Release: 12192 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12193 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12194 Current Release: 12195 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12196 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12197 12198 121992) iASL Compiler/Disassembler and Tools: 12200 12201Modified the parser to allow the names IO, DMA, and IRQ to be used as 12202namespace identifiers with no collision with existing resource descriptor 12203macro names. This provides compatibility with other ASL compilers and is 12204most useful for disassembly/recompilation of existing tables without 12205parse 12206errors. (With assistance from Thomas Renninger) 12207 12208Disassembler: fixed an incorrect disassembly problem with the 12209DataTableRegion and CopyObject operators. Fixed a possible fault during 12210disassembly of some Alias operators. 12211 12212---------------------------------------- 1221312 May 2006. Summary of changes for version 20060512: 12214 122151) ACPI CA Core Subsystem: 12216 12217Replaced the AcpiOsQueueForExecution interface with a new interface named 12218AcpiOsExecute. The major difference is that the new interface does not 12219have 12220a Priority parameter, this appeared to be useless and has been replaced 12221by 12222a 12223Type parameter. The Type tells the host what type of execution is being 12224requested, such as global lock handler, notify handler, GPE handler, etc. 12225This allows the host to queue and execute the request as appropriate for 12226the 12227request type, possibly using different work queues and different 12228priorities 12229for the various request types. This enables fixes for multithreading 12230deadlock problems such as BZ #5534, and will require changes to all 12231existing 12232OS interface layers. (Alexey Starikovskiy and Bob Moore) 12233 12234Fixed a possible memory leak associated with the support for the so- 12235called 12236"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 12237Suietov) 12238 12239Fixed a problem with the Load() operator where a table load from an 12240operation region could overwrite an internal table buffer by up to 7 12241bytes 12242and cause alignment faults on IPF systems. (With assistance from Luming 12243Yu) 12244 12245Example Code and Data Size: These are the sizes for the OS-independent 12246acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12247debug version of the code includes the debug output trace mechanism and 12248has 12249a much larger code and data size. 12250 12251 Previous Release: 12252 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12253 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12254 Current Release: 12255 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12256 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12257 12258 12259 122602) iASL Compiler/Disassembler and Tools: 12261 12262Disassembler: Implemented support to cross reference the internal 12263namespace 12264and automatically generate ASL External() statements for symbols not 12265defined 12266within the current table being disassembled. This will simplify the 12267disassembly and recompilation of interdependent tables such as SSDTs 12268since 12269these statements will no longer have to be added manually. 12270 12271Disassembler: Implemented experimental support to automatically detect 12272invocations of external control methods and generate appropriate 12273External() 12274statements. This is problematic because the AML cannot be correctly 12275parsed 12276until the number of arguments for each control method is known. 12277Currently, 12278standalone method invocations and invocations as the source operand of a 12279Store() statement are supported. 12280 12281Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 12282LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 12283LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 12284more readable and likely closer to the original ASL source. 12285 12286---------------------------------------- 1228721 April 2006. Summary of changes for version 20060421: 12288 122891) ACPI CA Core Subsystem: 12290 12291Removed a device initialization optimization introduced in 20051216 where 12292the _STA method was not run unless an _INI was also present for the same 12293device. This optimization could cause problems because it could allow 12294_INI 12295methods to be run within a not-present device subtree. (If a not-present 12296device had no _INI, _STA would not be run, the not-present status would 12297not 12298be discovered, and the children of the device would be incorrectly 12299traversed.) 12300 12301Implemented a new _STA optimization where namespace subtrees that do not 12302contain _INI are identified and ignored during device initialization. 12303Selectively running _STA can significantly improve boot time on large 12304machines (with assistance from Len Brown.) 12305 12306Implemented support for the device initialization case where the returned 12307_STA flags indicate a device not-present but functioning. In this case, 12308_INI 12309is not run, but the device children are examined for presence, as per the 12310ACPI specification. 12311 12312Implemented an additional change to the IndexField support in order to 12313conform to MS behavior. The value written to the Index Register is not 12314simply a byte offset, it is a byte offset in units of the access width of 12315the parent Index Field. (Fiodor Suietov) 12316 12317Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 12318interface is called during the creation of all AML operation regions, and 12319allows the host OS to exert control over what addresses it will allow the 12320AML code to access. Operation Regions whose addresses are disallowed will 12321cause a runtime exception when they are actually accessed (will not 12322affect 12323or abort table loading.) See oswinxf or osunixxf for an example 12324implementation. 12325 12326Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 12327interface allows the host OS to match the various "optional" 12328interface/behavior strings for the _OSI predefined control method as 12329appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 12330for an example implementation. 12331 12332Restructured and corrected various problems in the exception handling 12333code 12334paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 12335(with assistance from Takayoshi Kochi.) 12336 12337Modified the Linux source converter to ignore quoted string literals 12338while 12339converting identifiers from mixed to lower case. This will correct 12340problems 12341with the disassembler and other areas where such strings must not be 12342modified. 12343 12344The ACPI_FUNCTION_* macros no longer require quotes around the function 12345name. This allows the Linux source converter to convert the names, now 12346that 12347the converter ignores quoted strings. 12348 12349Example Code and Data Size: These are the sizes for the OS-independent 12350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12351debug version of the code includes the debug output trace mechanism and 12352has 12353a much larger code and data size. 12354 12355 Previous Release: 12356 12357 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12358 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12359 Current Release: 12360 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12361 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12362 12363 123642) iASL Compiler/Disassembler and Tools: 12365 12366Implemented 3 new warnings for iASL, and implemented multiple warning 12367levels 12368(w2 flag). 12369 123701) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 12371not 12372WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 12373check for the possible timeout, a warning is issued. 12374 123752) Useless operators: If an ASL operator does not specify an optional 12376target 12377operand and it also does not use the function return value from the 12378operator, a warning is issued since the operator effectively does 12379nothing. 12380 123813) Unreferenced objects: If a namespace object is created, but never 12382referenced, a warning is issued. This is a warning level 2 since there 12383are 12384cases where this is ok, such as when a secondary table is loaded that 12385uses 12386the unreferenced objects. Even so, care is taken to only flag objects 12387that 12388don't look like they will ever be used. For example, the reserved methods 12389(starting with an underscore) are usually not referenced because it is 12390expected that the OS will invoke them. 12391 12392---------------------------------------- 1239331 March 2006. Summary of changes for version 20060331: 12394 123951) ACPI CA Core Subsystem: 12396 12397Implemented header file support for the following additional ACPI tables: 12398ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 12399support, 12400all current and known ACPI tables are now defined in the ACPICA headers 12401and 12402are available for use by device drivers and other software. 12403 12404Implemented support to allow tables that contain ACPI names with invalid 12405characters to be loaded. Previously, this would cause the table load to 12406fail, but since there are several known cases of such tables on existing 12407machines, this change was made to enable ACPI support for them. Also, 12408this 12409matches the behavior of the Microsoft ACPI implementation. 12410 12411Fixed a couple regressions introduced during the memory optimization in 12412the 1241320060317 release. The namespace node definition required additional 12414reorganization and an internal datatype that had been changed to 8-bit 12415was 12416restored to 32-bit. (Valery Podrezov) 12417 12418Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 12419could be passed through to AcpiOsReleaseObject which is unexpected. Such 12420null pointers are now trapped and ignored, matching the behavior of the 12421previous implementation before the deployment of AcpiOsReleaseObject. 12422(Valery Podrezov, Fiodor Suietov) 12423 12424Fixed a memory mapping leak during the deletion of a SystemMemory 12425operation 12426region where a cached memory mapping was not deleted. This became a 12427noticeable problem for operation regions that are defined within 12428frequently 12429used control methods. (Dana Meyers) 12430 12431Reorganized the ACPI table header files into two main files: one for the 12432ACPI tables consumed by the ACPICA core, and another for the 12433miscellaneous 12434ACPI tables that are consumed by the drivers and other software. The 12435various 12436FADT definitions were merged into one common section and three different 12437tables (ACPI 1.0, 1.0+, and 2.0) 12438 12439Example Code and Data Size: These are the sizes for the OS-independent 12440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12441debug version of the code includes the debug output trace mechanism and 12442has 12443a much larger code and data size. 12444 12445 Previous Release: 12446 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12447 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12448 Current Release: 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 12452 124532) iASL Compiler/Disassembler and Tools: 12454 12455Disassembler: Implemented support to decode and format all non-AML ACPI 12456tables (tables other than DSDTs and SSDTs.) This includes the new tables 12457added to the ACPICA headers, therefore all current and known ACPI tables 12458are 12459supported. 12460 12461Disassembler: The change to allow ACPI names with invalid characters also 12462enables the disassembly of such tables. Invalid characters within names 12463are 12464changed to '*' to make the name printable; the iASL compiler will still 12465generate an error for such names, however, since this is an invalid ACPI 12466character. 12467 12468Implemented an option for AcpiXtract (-a) to extract all tables found in 12469the 12470input file. The default invocation extracts only the DSDTs and SSDTs. 12471 12472Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 12473makefile for the AcpiXtract utility. 12474 12475---------------------------------------- 1247617 March 2006. Summary of changes for version 20060317: 12477 124781) ACPI CA Core Subsystem: 12479 12480Implemented the use of a cache object for all internal namespace nodes. 12481Since there are about 1000 static nodes in a typical system, this will 12482decrease memory use for cache implementations that minimize per- 12483allocation 12484overhead (such as a slab allocator.) 12485 12486Removed the reference count mechanism for internal namespace nodes, since 12487it 12488was deemed unnecessary. This reduces the size of each namespace node by 12489about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12490case, 12491and 32 bytes for the 64-bit case. 12492 12493Optimized several internal data structures to reduce object size on 64- 12494bit 12495platforms by packing data within the 64-bit alignment. This includes the 12496frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12497instances corresponding to the namespace objects. 12498 12499Added two new strings for the predefined _OSI method: "Windows 2001.1 12500SP1" 12501and "Windows 2006". 12502 12503Split the allocation tracking mechanism out to a separate file, from 12504utalloc.c to uttrack.c. This mechanism appears to be only useful for 12505application-level code. Kernels may wish to not include uttrack.c in 12506distributions. 12507 12508Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12509associated 12510code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12511macros.) 12512 12513Code and Data Size: These are the sizes for the acpica.lib produced by 12514the 12515Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12516ACPI 12517driver or OSPM code. The debug version of the code includes the debug 12518output 12519trace mechanism and has a much larger code and data size. Note that these 12520values will vary depending on the efficiency of the compiler and the 12521compiler options used during generation. 12522 12523 Previous Release: 12524 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12525 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12526 Current Release: 12527 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12528 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12529 12530 125312) iASL Compiler/Disassembler and Tools: 12532 12533Implemented an ANSI C version of the acpixtract utility. This version 12534will 12535automatically extract the DSDT and all SSDTs from the input acpidump text 12536file and dump the binary output to separate files. It can also display a 12537summary of the input file including the headers for each table found and 12538will extract any single ACPI table, with any signature. (See 12539source/tools/acpixtract) 12540 12541---------------------------------------- 1254210 March 2006. Summary of changes for version 20060310: 12543 125441) ACPI CA Core Subsystem: 12545 12546Tagged all external interfaces to the subsystem with the new 12547ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12548assist 12549kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12550macro. The default definition is NULL. 12551 12552Added the ACPI_THREAD_ID type for the return value from 12553AcpiOsGetThreadId. 12554This allows the host to define this as necessary to simplify kernel 12555integration. The default definition is ACPI_NATIVE_UINT. 12556 12557Fixed two interpreter problems related to error processing, the deletion 12558of 12559objects, and placing invalid pointers onto the internal operator result 12560stack. BZ 6028, 6151 (Valery Podrezov) 12561 12562Increased the reference count threshold where a warning is emitted for 12563large 12564reference counts in order to eliminate unnecessary warnings on systems 12565with 12566large namespaces (especially 64-bit.) Increased the value from 0x400 to 125670x800. 12568 12569Due to universal disagreement as to the meaning of the 'c' in the 12570calloc() 12571function, the ACPI_MEM_CALLOCATE macro has been renamed to 12572ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12573ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12574ACPI_FREE. 12575 12576Code and Data Size: These are the sizes for the acpica.lib produced by 12577the 12578Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12579ACPI 12580driver or OSPM code. The debug version of the code includes the debug 12581output 12582trace mechanism and has a much larger code and data size. Note that these 12583values will vary depending on the efficiency of the compiler and the 12584compiler options used during generation. 12585 12586 Previous Release: 12587 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12588 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12589 Current Release: 12590 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12591 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12592 12593 125942) iASL Compiler/Disassembler: 12595 12596Disassembler: implemented support for symbolic resource descriptor 12597references. If a CreateXxxxField operator references a fixed offset 12598within 12599a 12600resource descriptor, a name is assigned to the descriptor and the offset 12601is 12602translated to the appropriate resource tag and pathname. The addition of 12603this support brings the disassembled code very close to the original ASL 12604source code and helps eliminate run-time errors when the disassembled 12605code 12606is modified (and recompiled) in such a way as to invalidate the original 12607fixed offsets. 12608 12609Implemented support for a Descriptor Name as the last parameter to the 12610ASL 12611Register() macro. This parameter was inadvertently left out of the ACPI 12612specification, and will be added for ACPI 3.0b. 12613 12614Fixed a problem where the use of the "_OSI" string (versus the full path 12615"\_OSI") caused an internal compiler error. ("No back ptr to op") 12616 12617Fixed a problem with the error message that occurs when an invalid string 12618is 12619used for a _HID object (such as one with an embedded asterisk: 12620"*PNP010A".) 12621The correct message is now displayed. 12622 12623---------------------------------------- 1262417 February 2006. Summary of changes for version 20060217: 12625 126261) ACPI CA Core Subsystem: 12627 12628Implemented a change to the IndexField support to match the behavior of 12629the 12630Microsoft AML interpreter. The value written to the Index register is now 12631a 12632byte offset, no longer an index based upon the width of the Data 12633register. 12634This should fix IndexField problems seen on some machines where the Data 12635register is not exactly one byte wide. The ACPI specification will be 12636clarified on this point. 12637 12638Fixed a problem where several resource descriptor types could overrun the 12639internal descriptor buffer due to size miscalculation: VendorShort, 12640VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12641affect all platforms. 12642 12643Fixed a problem where individual resource descriptors were misaligned 12644within 12645the internal buffer, causing alignment faults on IA64 platforms. 12646 12647Code and Data Size: These are the sizes for the acpica.lib produced by 12648the 12649Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12650ACPI 12651driver or OSPM code. The debug version of the code includes the debug 12652output 12653trace mechanism and has a much larger code and data size. Note that these 12654values will vary depending on the efficiency of the compiler and the 12655compiler options used during generation. 12656 12657 Previous Release: 12658 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12659 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12660 Current Release: 12661 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12662 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12663 12664 126652) iASL Compiler/Disassembler: 12666 12667Implemented support for new reserved names: _WDG and _WED are Microsoft 12668extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12669defined method (Throttling Depth Limit.) 12670 12671Fixed a problem where a zero-length VendorShort or VendorLong resource 12672descriptor was incorrectly emitted as a descriptor of length one. 12673 12674---------------------------------------- 1267510 February 2006. Summary of changes for version 20060210: 12676 126771) ACPI CA Core Subsystem: 12678 12679Removed a couple of extraneous ACPI_ERROR messages that appeared during 12680normal execution. These became apparent after the conversion from 12681ACPI_DEBUG_PRINT. 12682 12683Fixed a problem where the CreateField operator could hang if the BitIndex 12684or 12685NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12686 12687Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12688failed with an exception. This also fixes a couple of related RefOf and 12689DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12690 12691Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12692of 12693AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12694BZ 126955480) 12696 12697Implemented a memory cleanup at the end of the execution of each 12698iteration 12699of an AML While() loop, preventing the accumulation of outstanding 12700objects. 12701(Valery Podrezov, BZ 5427) 12702 12703Eliminated a chunk of duplicate code in the object resolution code. 12704(Valery 12705Podrezov, BZ 5336) 12706 12707Fixed several warnings during the 64-bit code generation. 12708 12709The AcpiSrc source code conversion tool now inserts one line of 12710whitespace 12711after an if() statement that is followed immediately by a comment, 12712improving 12713readability of the Linux code. 12714 12715Code and Data Size: The current and previous library sizes for the core 12716subsystem are shown below. These are the code and data sizes for the 12717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12718These 12719values do not include any ACPI driver or OSPM code. The debug version of 12720the 12721code includes the debug output trace mechanism and has a much larger code 12722and data size. Note that these values will vary depending on the 12723efficiency 12724of the compiler and the compiler options used during generation. 12725 12726 Previous Release: 12727 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12728 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12729 Current Release: 12730 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12731 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12732 12733 127342) iASL Compiler/Disassembler: 12735 12736Fixed a problem with the disassembly of a BankField operator with a 12737complex 12738expression for the BankValue parameter. 12739 12740---------------------------------------- 1274127 January 2006. Summary of changes for version 20060127: 12742 127431) ACPI CA Core Subsystem: 12744 12745Implemented support in the Resource Manager to allow unresolved 12746namestring 12747references within resource package objects for the _PRT method. This 12748support 12749is in addition to the previously implemented unresolved reference support 12750within the AML parser. If the interpreter slack mode is enabled, these 12751unresolved references will be passed through to the caller as a NULL 12752package 12753entry. 12754 12755Implemented and deployed new macros and functions for error and warning 12756messages across the subsystem. These macros are simpler and generate less 12757code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12758ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12759macros remain defined to allow ACPI drivers time to migrate to the new 12760macros. 12761 12762Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12763the 12764Acquire/Release Lock OSL interfaces. 12765 12766Fixed a problem where Alias ASL operators are sometimes not correctly 12767resolved, in both the interpreter and the iASL compiler. 12768 12769Fixed several problems with the implementation of the 12770ConcatenateResTemplate 12771ASL operator. As per the ACPI specification, zero length buffers are now 12772treated as a single EndTag. One-length buffers always cause a fatal 12773exception. Non-zero length buffers that do not end with a full 2-byte 12774EndTag 12775cause a fatal exception. 12776 12777Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12778interface. (With assistance from Thomas Renninger) 12779 12780Code and Data Size: The current and previous library sizes for the core 12781subsystem are shown below. These are the code and data sizes for the 12782acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12783These 12784values do not include any ACPI driver or OSPM code. The debug version of 12785the 12786code includes the debug output trace mechanism and has a much larger code 12787and data size. Note that these values will vary depending on the 12788efficiency 12789of the compiler and the compiler options used during generation. 12790 12791 Previous Release: 12792 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12793 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12794 Current Release: 12795 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12796 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12797 12798 127992) iASL Compiler/Disassembler: 12800 12801Fixed an internal error that was generated for any forward references to 12802ASL 12803Alias objects. 12804 12805---------------------------------------- 1280613 January 2006. Summary of changes for version 20060113: 12807 128081) ACPI CA Core Subsystem: 12809 12810Added 2006 copyright to all module headers and signons. This affects 12811virtually every file in the ACPICA core subsystem, iASL compiler, and the 12812utilities. 12813 12814Enhanced the ACPICA error reporting in order to simplify user migration 12815to 12816the non-debug version of ACPICA. Replaced all instances of the 12817ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12818debug 12819levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12820respectively. This preserves all error and warning messages in the non- 12821debug 12822version of the ACPICA code (this has been referred to as the "debug lite" 12823option.) Over 200 cases were converted to create a total of over 380 12824error/warning messages across the ACPICA code. This increases the code 12825and 12826data size of the default non-debug version of the code somewhat (about 1282713K), 12828but all error/warning reporting may be disabled if desired (and code 12829eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12830configuration option. The size of the debug version of ACPICA remains 12831about 12832the same. 12833 12834Fixed a memory leak within the AML Debugger "Set" command. One object was 12835not properly deleted for every successful invocation of the command. 12836 12837Code and Data Size: The current and previous library sizes for the core 12838subsystem are shown below. These are the code and data sizes for the 12839acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12840These 12841values do not include any ACPI driver or OSPM code. The debug version of 12842the 12843code includes the debug output trace mechanism and has a much larger code 12844and data size. Note that these values will vary depending on the 12845efficiency 12846of the compiler and the compiler options used during generation. 12847 12848 Previous Release: 12849 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12850 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12851 Current Release: 12852 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12853 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12854 12855 128562) iASL Compiler/Disassembler: 12857 12858The compiler now officially supports the ACPI 3.0a specification that was 12859released on December 30, 2005. (Specification is available at 12860www.acpi.info) 12861 12862---------------------------------------- 1286316 December 2005. Summary of changes for version 20051216: 12864 128651) ACPI CA Core Subsystem: 12866 12867Implemented optional support to allow unresolved names within ASL Package 12868objects. A null object is inserted in the package when a named reference 12869cannot be located in the current namespace. Enabled via the interpreter 12870slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12871machines 12872that contain such code. 12873 12874Implemented an optimization to the initialization sequence that can 12875improve 12876boot time. During ACPI device initialization, the _STA method is now run 12877if 12878and only if the _INI method exists. The _STA method is used to determine 12879if 12880the device is present; An _INI can only be run if _STA returns present, 12881but 12882it is a waste of time to run the _STA method if the _INI does not exist. 12883(Prototype and assistance from Dong Wei) 12884 12885Implemented use of the C99 uintptr_t for the pointer casting macros if it 12886is 12887available in the current compiler. Otherwise, the default (void *) cast 12888is 12889used as before. 12890 12891Fixed some possible memory leaks found within the execution path of the 12892Break, Continue, If, and CreateField operators. (Valery Podrezov) 12893 12894Fixed a problem introduced in the 20051202 release where an exception is 12895generated during method execution if a control method attempts to declare 12896another method. 12897 12898Moved resource descriptor string constants that are used by both the AML 12899disassembler and AML debugger to the common utilities directory so that 12900these components are independent. 12901 12902Implemented support in the AcpiExec utility (-e switch) to globally 12903ignore 12904exceptions during control method execution (method is not aborted.) 12905 12906Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12907generation. 12908 12909Code and Data Size: The current and previous library sizes for the core 12910subsystem are shown below. These are the code and data sizes for the 12911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12912These 12913values do not include any ACPI driver or OSPM code. The debug version of 12914the 12915code includes the debug output trace mechanism and has a much larger code 12916and data size. Note that these values will vary depending on the 12917efficiency 12918of the compiler and the compiler options used during generation. 12919 12920 Previous Release: 12921 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12922 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12923 Current Release: 12924 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12925 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12926 12927 129282) iASL Compiler/Disassembler: 12929 12930Fixed a problem where a CPU stack overflow fault could occur if a 12931recursive 12932method call was made from within a Return statement. 12933 12934---------------------------------------- 1293502 December 2005. Summary of changes for version 20051202: 12936 129371) ACPI CA Core Subsystem: 12938 12939Modified the parsing of control methods to no longer create namespace 12940objects during the first pass of the parse. Objects are now created only 12941during the execute phase, at the moment the namespace creation operator 12942is 12943encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12944This 12945should eliminate ALREADY_EXISTS exceptions seen on some machines where 12946reentrant control methods are protected by an AML mutex. The mutex will 12947now 12948correctly block multiple threads from attempting to create the same 12949object 12950more than once. 12951 12952Increased the number of available Owner Ids for namespace object tracking 12953from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12954on 12955some machines with a large number of ACPI tables (either static or 12956dynamic). 12957 12958Fixed a problem with the AcpiExec utility where a fault could occur when 12959the 12960-b switch (batch mode) is used. 12961 12962Enhanced the namespace dump routine to output the owner ID for each 12963namespace object. 12964 12965Code and Data Size: The current and previous library sizes for the core 12966subsystem are shown below. These are the code and data sizes for the 12967acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12968These 12969values do not include any ACPI driver or OSPM code. The debug version of 12970the 12971code includes the debug output trace mechanism and has a much larger code 12972and data size. Note that these values will vary depending on the 12973efficiency 12974of the compiler and the compiler options used during generation. 12975 12976 Previous Release: 12977 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12978 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12979 Current Release: 12980 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12981 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12982 12983 129842) iASL Compiler/Disassembler: 12985 12986Fixed a parse error during compilation of certain Switch/Case constructs. 12987To 12988simplify the parse, the grammar now allows for multiple Default 12989statements 12990and this error is now detected and flagged during the analysis phase. 12991 12992Disassembler: The disassembly now includes the contents of the original 12993table header within a comment at the start of the file. This includes the 12994name and version of the original ASL compiler. 12995 12996---------------------------------------- 1299717 November 2005. Summary of changes for version 20051117: 12998 129991) ACPI CA Core Subsystem: 13000 13001Fixed a problem in the AML parser where the method thread count could be 13002decremented below zero if any errors occurred during the method parse 13003phase. 13004This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 13005machines. 13006This also fixed a related regression with the mechanism that detects and 13007corrects methods that cannot properly handle reentrancy (related to the 13008deployment of the new OwnerId mechanism.) 13009 13010Eliminated the pre-parsing of control methods (to detect errors) during 13011table load. Related to the problem above, this was causing unwind issues 13012if 13013any errors occurred during the parse, and it seemed to be overkill. A 13014table 13015load should not be aborted if there are problems with any single control 13016method, thus rendering this feature rather pointless. 13017 13018Fixed a problem with the new table-driven resource manager where an 13019internal 13020buffer overflow could occur for small resource templates. 13021 13022Implemented a new external interface, AcpiGetVendorResource. This 13023interface 13024will find and return a vendor-defined resource descriptor within a _CRS 13025or 13026_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 13027Helgaas. 13028 13029Removed the length limit (200) on string objects as per the upcoming ACPI 130303.0A specification. This affects the following areas of the interpreter: 130311) 13032any implicit conversion of a Buffer to a String, 2) a String object 13033result 13034of the ASL Concatenate operator, 3) the String object result of the ASL 13035ToString operator. 13036 13037Fixed a problem in the Windows OS interface layer (OSL) where a 13038WAIT_FOREVER 13039on a semaphore object would incorrectly timeout. This allows the 13040multithreading features of the AcpiExec utility to work properly under 13041Windows. 13042 13043Updated the Linux makefiles for the iASL compiler and AcpiExec to include 13044the recently added file named "utresrc.c". 13045 13046Code and Data Size: The current and previous library sizes for the core 13047subsystem are shown below. These are the code and data sizes for the 13048acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13049These 13050values do not include any ACPI driver or OSPM code. The debug version of 13051the 13052code includes the debug output trace mechanism and has a much larger code 13053and data size. Note that these values will vary depending on the 13054efficiency 13055of the compiler and the compiler options used during generation. 13056 13057 Previous Release: 13058 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13059 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13060 Current Release: 13061 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13062 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13063 13064 130652) iASL Compiler/Disassembler: 13066 13067Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 13068specification. For the iASL compiler, this means that string literals 13069within 13070the source ASL can be of any length. 13071 13072Enhanced the listing output to dump the AML code for resource descriptors 13073immediately after the ASL code for each descriptor, instead of in a block 13074at 13075the end of the entire resource template. 13076 13077Enhanced the compiler debug output to dump the entire original parse tree 13078constructed during the parse phase, before any transforms are applied to 13079the 13080tree. The transformed tree is dumped also. 13081 13082---------------------------------------- 1308302 November 2005. Summary of changes for version 20051102: 13084 130851) ACPI CA Core Subsystem: 13086 13087Modified the subsystem initialization sequence to improve GPE support. 13088The 13089GPE initialization has been split into two parts in order to defer 13090execution 13091of the _PRW methods (Power Resources for Wake) until after the hardware 13092is 13093fully initialized and the SCI handler is installed. This allows the _PRW 13094methods to access fields protected by the Global Lock. This will fix 13095systems 13096where a NO_GLOBAL_LOCK exception has been seen during initialization. 13097 13098Converted the ACPI internal object disassemble and display code within 13099the 13100AML debugger to fully table-driven operation, reducing code size and 13101increasing maintainability. 13102 13103Fixed a regression with the ConcatenateResTemplate() ASL operator 13104introduced 13105in the 20051021 release. 13106 13107Implemented support for "local" internal ACPI object types within the 13108debugger "Object" command and the AcpiWalkNamespace external interfaces. 13109These local types include RegionFields, BankFields, IndexFields, Alias, 13110and 13111reference objects. 13112 13113Moved common AML resource handling code into a new file, "utresrc.c". 13114This 13115code is shared by both the Resource Manager and the AML Debugger. 13116 13117Code and Data Size: The current and previous library sizes for the core 13118subsystem are shown below. These are the code and data sizes for the 13119acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13120These 13121values do not include any ACPI driver or OSPM code. The debug version of 13122the 13123code includes the debug output trace mechanism and has a much larger code 13124and data size. Note that these values will vary depending on the 13125efficiency 13126of the compiler and the compiler options used during generation. 13127 13128 Previous Release: 13129 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13130 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13131 Current Release: 13132 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13133 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13134 13135 131362) iASL Compiler/Disassembler: 13137 13138Fixed a problem with very large initializer lists (more than 4000 13139elements) 13140for both Buffer and Package objects where the parse stack could overflow. 13141 13142Enhanced the pre-compile source code scan for non-ASCII characters to 13143ignore 13144characters within comment fields. The scan is now always performed and is 13145no 13146longer optional, detecting invalid characters within a source file 13147immediately rather than during the parse phase or later. 13148 13149Enhanced the ASL grammar definition to force early reductions on all 13150list- 13151style grammar elements so that the overall parse stack usage is greatly 13152reduced. This should improve performance and reduce the possibility of 13153parse 13154stack overflow. 13155 13156Eliminated all reduce/reduce conflicts in the iASL parser generation. 13157Also, 13158with the addition of a %expected statement, the compiler generates from 13159source with no warnings. 13160 13161Fixed a possible segment fault in the disassembler if the input filename 13162does not contain a "dot" extension (Thomas Renninger). 13163 13164---------------------------------------- 1316521 October 2005. Summary of changes for version 20051021: 13166 131671) ACPI CA Core Subsystem: 13168 13169Implemented support for the EM64T and other x86-64 processors. This 13170essentially entails recognizing that these processors support non-aligned 13171memory transfers. Previously, all 64-bit processors were assumed to lack 13172hardware support for non-aligned transfers. 13173 13174Completed conversion of the Resource Manager to nearly full table-driven 13175operation. Specifically, the resource conversion code (convert AML to 13176internal format and the reverse) and the debug code to dump internal 13177resource descriptors are fully table-driven, reducing code and data size 13178and 13179improving maintainability. 13180 13181The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 13182word 13183on 64-bit processors instead of a fixed 32-bit word. (With assistance 13184from 13185Alexey Starikovskiy) 13186 13187Implemented support within the resource conversion code for the Type- 13188Specific byte within the various ACPI 3.0 *WordSpace macros. 13189 13190Fixed some issues within the resource conversion code for the type- 13191specific 13192flags for both Memory and I/O address resource descriptors. For Memory, 13193implemented support for the MTP and TTP flags. For I/O, split the TRS and 13194TTP flags into two separate fields. 13195 13196Code and Data Size: The current and previous library sizes for the core 13197subsystem are shown below. These are the code and data sizes for the 13198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13199These 13200values do not include any ACPI driver or OSPM code. The debug version of 13201the 13202code includes the debug output trace mechanism and has a much larger code 13203and data size. Note that these values will vary depending on the 13204efficiency 13205of the compiler and the compiler options used during generation. 13206 13207 Previous Release: 13208 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13209 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13210 Current Release: 13211 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13212 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13213 13214 13215 132162) iASL Compiler/Disassembler: 13217 13218Relaxed a compiler restriction that disallowed a ResourceIndex byte if 13219the 13220corresponding ResourceSource string was not also present in a resource 13221descriptor declaration. This restriction caused problems with existing 13222AML/ASL code that includes the Index byte without the string. When such 13223AML 13224was disassembled, it could not be compiled without modification. Further, 13225the modified code created a resource template with a different size than 13226the 13227original, breaking code that used fixed offsets into the resource 13228template 13229buffer. 13230 13231Removed a recent feature of the disassembler to ignore a lone 13232ResourceIndex 13233byte. This byte is now emitted if present so that the exact AML can be 13234reproduced when the disassembled code is recompiled. 13235 13236Improved comments and text alignment for the resource descriptor code 13237emitted by the disassembler. 13238 13239Implemented disassembler support for the ACPI 3.0 AccessSize field within 13240a 13241Register() resource descriptor. 13242 13243---------------------------------------- 1324430 September 2005. Summary of changes for version 20050930: 13245 132461) ACPI CA Core Subsystem: 13247 13248Completed a major overhaul of the Resource Manager code - specifically, 13249optimizations in the area of the AML/internal resource conversion code. 13250The 13251code has been optimized to simplify and eliminate duplicated code, CPU 13252stack 13253use has been decreased by optimizing function parameters and local 13254variables, and naming conventions across the manager have been 13255standardized 13256for clarity and ease of maintenance (this includes function, parameter, 13257variable, and struct/typedef names.) The update may force changes in some 13258driver code, depending on how resources are handled by the host OS. 13259 13260All Resource Manager dispatch and information tables have been moved to a 13261single location for clarity and ease of maintenance. One new file was 13262created, named "rsinfo.c". 13263 13264The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 13265guarantee that the argument is not evaluated twice, making them less 13266prone 13267to macro side-effects. However, since there exists the possibility of 13268additional stack use if a particular compiler cannot optimize them (such 13269as 13270in the debug generation case), the original macros are optionally 13271available. 13272Note that some invocations of the return_VALUE macro may now cause size 13273mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 13274to 13275eliminate these. (From Randy Dunlap) 13276 13277Implemented a new mechanism to enable debug tracing for individual 13278control 13279methods. A new external interface, AcpiDebugTrace, is provided to enable 13280this mechanism. The intent is to allow the host OS to easily enable and 13281disable tracing for problematic control methods. This interface can be 13282easily exposed to a user or debugger interface if desired. See the file 13283psxface.c for details. 13284 13285AcpiUtCallocate will now return a valid pointer if a length of zero is 13286specified - a length of one is used and a warning is issued. This matches 13287the behavior of AcpiUtAllocate. 13288 13289Code and Data Size: The current and previous library sizes for the core 13290subsystem are shown below. These are the code and data sizes for the 13291acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13292These 13293values do not include any ACPI driver or OSPM code. The debug version of 13294the 13295code includes the debug output trace mechanism and has a much larger code 13296and data size. Note that these values will vary depending on the 13297efficiency 13298of the compiler and the compiler options used during generation. 13299 13300 Previous Release: 13301 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13302 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13303 Current Release: 13304 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13305 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13306 13307 133082) iASL Compiler/Disassembler: 13309 13310A remark is issued if the effective compile-time length of a package or 13311buffer is zero. Previously, this was a warning. 13312 13313---------------------------------------- 1331416 September 2005. Summary of changes for version 20050916: 13315 133161) ACPI CA Core Subsystem: 13317 13318Fixed a problem within the Resource Manager where support for the Generic 13319Register descriptor was not fully implemented. This descriptor is now 13320fully 13321recognized, parsed, disassembled, and displayed. 13322 13323Completely restructured the Resource Manager code to utilize table-driven 13324dispatch and lookup, eliminating many of the large switch() statements. 13325This 13326reduces overall subsystem code size and code complexity. Affects the 13327resource parsing and construction, disassembly, and debug dump output. 13328 13329Cleaned up and restructured the debug dump output for all resource 13330descriptors. Improved readability of the output and reduced code size. 13331 13332Fixed a problem where changes to internal data structures caused the 13333optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 13334 13335Code and Data Size: The current and previous library sizes for the core 13336subsystem are shown below. These are the code and data sizes for the 13337acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13338These 13339values do not include any ACPI driver or OSPM code. The debug version of 13340the 13341code includes the debug output trace mechanism and has a much larger code 13342and data size. Note that these values will vary depending on the 13343efficiency 13344of the compiler and the compiler options used during generation. 13345 13346 Previous Release: 13347 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13348 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13349 Current Release: 13350 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13351 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13352 13353 133542) iASL Compiler/Disassembler: 13355 13356Updated the disassembler to automatically insert an EndDependentFn() 13357macro 13358into the ASL stream if this macro is missing in the original AML code, 13359simplifying compilation of the resulting ASL module. 13360 13361Fixed a problem in the disassembler where a disassembled ResourceSource 13362string (within a large resource descriptor) was not surrounded by quotes 13363and 13364not followed by a comma, causing errors when the resulting ASL module was 13365compiled. Also, escape sequences within a ResourceSource string are now 13366handled correctly (especially "\\") 13367 13368---------------------------------------- 1336902 September 2005. Summary of changes for version 20050902: 13370 133711) ACPI CA Core Subsystem: 13372 13373Fixed a problem with the internal Owner ID allocation and deallocation 13374mechanisms for control method execution and recursive method invocation. 13375This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 13376messages seen on some systems. Recursive method invocation depth is 13377currently limited to 255. (Alexey Starikovskiy) 13378 13379Completely eliminated all vestiges of support for the "module-level 13380executable code" until this support is fully implemented and debugged. 13381This 13382should eliminate the NO_RETURN_VALUE exceptions seen during table load on 13383some systems that invoke this support. 13384 13385Fixed a problem within the resource manager code where the transaction 13386flags 13387for a 64-bit address descriptor were handled incorrectly in the type- 13388specific flag byte. 13389 13390Consolidated duplicate code within the address descriptor resource 13391manager 13392code, reducing overall subsystem code size. 13393 13394Fixed a fault when using the AML debugger "disassemble" command to 13395disassemble individual control methods. 13396 13397Removed references to the "release_current" directory within the Unix 13398release package. 13399 13400Code and Data Size: The current and previous core subsystem library sizes 13401are shown below. These are the code and data sizes for the acpica.lib 13402produced by the Microsoft Visual C++ 6.0 compiler. These values do not 13403include any ACPI driver or OSPM code. The debug version of the code 13404includes 13405the debug output trace mechanism and has a much larger code and data 13406size. 13407Note that these values will vary depending on the efficiency of the 13408compiler 13409and the compiler options used during generation. 13410 13411 Previous Release: 13412 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13413 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13414 Current Release: 13415 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13416 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13417 13418 134192) iASL Compiler/Disassembler: 13420 13421Implemented an error check for illegal duplicate values in the interrupt 13422and 13423dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 13424Interrupt(). 13425 13426Implemented error checking for the Irq() and IrqNoFlags() macros to 13427detect 13428too many values in the interrupt list (16 max) and invalid values in the 13429list (range 0 - 15) 13430 13431The maximum length string literal within an ASL file is now restricted to 13432200 characters as per the ACPI specification. 13433 13434Fixed a fault when using the -ln option (generate namespace listing). 13435 13436Implemented an error check to determine if a DescriptorName within a 13437resource descriptor has already been used within the current scope. 13438 13439---------------------------------------- 1344015 August 2005. Summary of changes for version 20050815: 13441 134421) ACPI CA Core Subsystem: 13443 13444Implemented a full bytewise compare to determine if a table load request 13445is 13446attempting to load a duplicate table. The compare is performed if the 13447table 13448signatures and table lengths match. This will allow different tables with 13449the same OEM Table ID and revision to be loaded - probably against the 13450ACPI 13451specification, but discovered in the field nonetheless. 13452 13453Added the changes.txt logfile to each of the zipped release packages. 13454 13455Code and Data Size: Current and previous core subsystem library sizes are 13456shown below. These are the code and data sizes for the acpica.lib 13457produced 13458by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13459any ACPI driver or OSPM code. The debug version of the code includes the 13460debug output trace mechanism and has a much larger code and data size. 13461Note 13462that these values will vary depending on the efficiency of the compiler 13463and 13464the compiler options used during generation. 13465 13466 Previous Release: 13467 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13468 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13469 Current Release: 13470 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13471 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13472 13473 134742) iASL Compiler/Disassembler: 13475 13476Fixed a problem where incorrect AML code could be generated for Package 13477objects if optimization is disabled (via the -oa switch). 13478 13479Fixed a problem with where incorrect AML code is generated for variable- 13480length packages when the package length is not specified and the number 13481of 13482initializer values is greater than 255. 13483 13484 13485---------------------------------------- 1348629 July 2005. Summary of changes for version 20050729: 13487 134881) ACPI CA Core Subsystem: 13489 13490Implemented support to ignore an attempt to install/load a particular 13491ACPI 13492table more than once. Apparently there exists BIOS code that repeatedly 13493attempts to load the same SSDT upon certain events. With assistance from 13494Venkatesh Pallipadi. 13495 13496Restructured the main interface to the AML parser in order to correctly 13497handle all exceptional conditions. This will prevent leakage of the 13498OwnerId 13499resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13500some 13501machines. With assistance from Alexey Starikovskiy. 13502 13503Support for "module level code" has been disabled in this version due to 13504a 13505number of issues that have appeared on various machines. The support can 13506be 13507enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13508compilation. When the issues are fully resolved, the code will be enabled 13509by 13510default again. 13511 13512Modified the internal functions for debug print support to define the 13513FunctionName parameter as a (const char *) for compatibility with 13514compiler 13515built-in macros such as __FUNCTION__, etc. 13516 13517Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13518 13519Implemented support to display an object count summary for the AML 13520Debugger 13521commands Object and Methods. 13522 13523Code and Data Size: Current and previous core subsystem library sizes are 13524shown below. These are the code and data sizes for the acpica.lib 13525produced 13526by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13527any ACPI driver or OSPM code. The debug version of the code includes the 13528debug output trace mechanism and has a much larger code and data size. 13529Note 13530that these values will vary depending on the efficiency of the compiler 13531and 13532the compiler options used during generation. 13533 13534 Previous Release: 13535 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13536 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13537 Current Release: 13538 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13539 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13540 13541 135422) iASL Compiler/Disassembler: 13543 13544Fixed a regression that appeared in the 20050708 version of the compiler 13545where an error message was inadvertently emitted for invocations of the 13546_OSI 13547reserved control method. 13548 13549---------------------------------------- 1355008 July 2005. Summary of changes for version 20050708: 13551 135521) ACPI CA Core Subsystem: 13553 13554The use of the CPU stack in the debug version of the subsystem has been 13555considerably reduced. Previously, a debug structure was declared in every 13556function that used the debug macros. This structure has been removed in 13557favor of declaring the individual elements as parameters to the debug 13558functions. This reduces the cumulative stack use during nested execution 13559of 13560ACPI function calls at the cost of a small increase in the code size of 13561the 13562debug version of the subsystem. With assistance from Alexey Starikovskiy 13563and 13564Len Brown. 13565 13566Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13567headers to define a macro that will return the current function name at 13568runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13569by 13570the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13571compiler-dependent header, the function name is saved on the CPU stack 13572(one 13573pointer per function.) This mechanism is used because apparently there 13574exists no standard ANSI-C defined macro that that returns the function 13575name. 13576 13577Redesigned and reimplemented the "Owner ID" mechanism used to track 13578namespace objects created/deleted by ACPI tables and control method 13579execution. A bitmap is now used to allocate and free the IDs, thus 13580solving 13581the wraparound problem present in the previous implementation. The size 13582of 13583the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13584Starikovskiy). 13585 13586Removed the UINT32_BIT and UINT16_BIT types that were used for the 13587bitfield 13588flag definitions within the headers for the predefined ACPI tables. These 13589have been replaced by UINT8_BIT in order to increase the code portability 13590of 13591the subsystem. If the use of UINT8 remains a problem, we may be forced to 13592eliminate bitfields entirely because of a lack of portability. 13593 13594Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13595This 13596is a frequently used function and this improvement increases the 13597performance 13598of the entire subsystem (Alexey Starikovskiy). 13599 13600Fixed several possible memory leaks and the inverse - premature object 13601deletion (Alexey Starikovskiy). 13602 13603Code and Data Size: Current and previous core subsystem library sizes are 13604shown below. These are the code and data sizes for the acpica.lib 13605produced 13606by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13607any ACPI driver or OSPM code. The debug version of the code includes the 13608debug output trace mechanism and has a much larger code and data size. 13609Note 13610that these values will vary depending on the efficiency of the compiler 13611and 13612the compiler options used during generation. 13613 13614 Previous Release: 13615 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13616 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13617 Current Release: 13618 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13619 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13620 13621---------------------------------------- 1362224 June 2005. Summary of changes for version 20050624: 13623 136241) ACPI CA Core Subsystem: 13625 13626Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13627the host-defined cache object. This allows the OSL implementation to 13628define 13629and type this object in any manner desired, simplifying the OSL 13630implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13631Linux, and should be defined in the OS-specific header file for other 13632operating systems as required. 13633 13634Changed the interface to AcpiOsAcquireObject to directly return the 13635requested object as the function return (instead of ACPI_STATUS.) This 13636change was made for performance reasons, since this is the purpose of the 13637interface in the first place. AcpiOsAcquireObject is now similar to the 13638AcpiOsAllocate interface. 13639 13640Implemented a new AML debugger command named Businfo. This command 13641displays 13642information about all devices that have an associate _PRT object. The 13643_ADR, 13644_HID, _UID, and _CID are displayed for these devices. 13645 13646Modified the initialization sequence in AcpiInitializeSubsystem to call 13647the 13648OSL interface AcpiOslInitialize first, before any local initialization. 13649This 13650change was required because the global initialization now calls OSL 13651interfaces. 13652 13653Enhanced the Dump command to display the entire contents of Package 13654objects 13655(including all sub-objects and their values.) 13656 13657Restructured the code base to split some files because of size and/or 13658because the code logically belonged in a separate file. New files are 13659listed 13660below. All makefiles and project files included in the ACPI CA release 13661have 13662been updated. 13663 utilities/utcache.c /* Local cache interfaces */ 13664 utilities/utmutex.c /* Local mutex support */ 13665 utilities/utstate.c /* State object support */ 13666 interpreter/parser/psloop.c /* Main AML parse loop */ 13667 13668Code and Data Size: Current and previous core subsystem library sizes are 13669shown below. These are the code and data sizes for the acpica.lib 13670produced 13671by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13672any ACPI driver or OSPM code. The debug version of the code includes the 13673debug output trace mechanism and has a much larger code and data size. 13674Note 13675that these values will vary depending on the efficiency of the compiler 13676and 13677the compiler options used during generation. 13678 13679 Previous Release: 13680 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13681 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13682 Current Release: 13683 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13684 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13685 13686 136872) iASL Compiler/Disassembler: 13688 13689Fixed a regression introduced in version 20050513 where the use of a 13690Package 13691object within a Case() statement caused a compile time exception. The 13692original behavior has been restored (a Match() operator is emitted.) 13693 13694---------------------------------------- 1369517 June 2005. Summary of changes for version 20050617: 13696 136971) ACPI CA Core Subsystem: 13698 13699Moved the object cache operations into the OS interface layer (OSL) to 13700allow 13701the host OS to handle these operations if desired (for example, the Linux 13702OSL will invoke the slab allocator). This support is optional; the 13703compile 13704time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13705cache 13706code in the ACPI CA core. The new OSL interfaces are shown below. See 13707utalloc.c for an example implementation, and acpiosxf.h for the exact 13708interface definitions. With assistance from Alexey Starikovskiy. 13709 AcpiOsCreateCache 13710 AcpiOsDeleteCache 13711 AcpiOsPurgeCache 13712 AcpiOsAcquireObject 13713 AcpiOsReleaseObject 13714 13715Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13716return 13717and restore a flags parameter. This fits better with many OS lock models. 13718Note: the current execution state (interrupt handler or not) is no longer 13719passed to these interfaces. If necessary, the OSL must determine this 13720state 13721by itself, a simple and fast operation. With assistance from Alexey 13722Starikovskiy. 13723 13724Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13725present if the revision of the RSDP was 2 or greater. According to the 13726ACPI 13727specification, the XSDT is optional in all cases, and the table manager 13728therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13729Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13730contain 13731only the RSDT. 13732 13733Fixed an interpreter problem with the Mid() operator in the case of an 13734input 13735string where the resulting output string is of zero length. It now 13736correctly 13737returns a valid, null terminated string object instead of a string object 13738with a null pointer. 13739 13740Fixed a problem with the control method argument handling to allow a 13741store 13742to an Arg object that already contains an object of type Device. The 13743Device 13744object is now correctly overwritten. Previously, an error was returned. 13745 13746 13747Enhanced the debugger Find command to emit object values in addition to 13748the 13749found object pathnames. The output format is the same as the dump 13750namespace 13751command. 13752 13753Enhanced the debugger Set command. It now has the ability to set the 13754value 13755of any Named integer object in the namespace (Previously, only method 13756locals 13757and args could be set.) 13758 13759Code and Data Size: Current and previous core subsystem library sizes are 13760shown below. These are the code and data sizes for the acpica.lib 13761produced 13762by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13763any ACPI driver or OSPM code. The debug version of the code includes the 13764debug output trace mechanism and has a much larger code and data size. 13765Note 13766that these values will vary depending on the efficiency of the compiler 13767and 13768the compiler options used during generation. 13769 13770 Previous Release: 13771 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13772 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13773 Current Release: 13774 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13775 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13776 13777 137782) iASL Compiler/Disassembler: 13779 13780Fixed a regression in the disassembler where if/else/while constructs 13781were 13782output incorrectly. This problem was introduced in the previous release 13783(20050526). This problem also affected the single-step disassembly in the 13784debugger. 13785 13786Fixed a problem where compiling the reserved _OSI method would randomly 13787(but 13788rarely) produce compile errors. 13789 13790Enhanced the disassembler to emit compilable code in the face of 13791incorrect 13792AML resource descriptors. If the optional ResourceSourceIndex is present, 13793but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13794disassembly. Otherwise, the resulting code cannot be compiled without 13795errors. 13796 13797---------------------------------------- 1379826 May 2005. Summary of changes for version 20050526: 13799 138001) ACPI CA Core Subsystem: 13801 13802Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13803the module level (not within a control method.) These opcodes are 13804executed 13805exactly once at the time the table is loaded. This type of code was legal 13806up 13807until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13808in 13809order to provide backwards compatibility with earlier BIOS 13810implementations. 13811This eliminates the "Encountered executable code at module level" warning 13812that was previously generated upon detection of such code. 13813 13814Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13815inadvertently be generated during the lookup of namespace objects in the 13816second pass parse of ACPI tables and control methods. It appears that 13817this 13818problem could occur during the resolution of forward references to 13819namespace 13820objects. 13821 13822Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13823corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13824allows the deadlock detection debug code to be compiled out in the normal 13825case, improving mutex performance (and overall subsystem performance) 13826considerably. 13827 13828Implemented a handful of miscellaneous fixes for possible memory leaks on 13829error conditions and error handling control paths. These fixes were 13830suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13831 13832Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13833(tbxfroot.c) 13834to prevent a fault in this error case. 13835 13836Code and Data Size: Current and previous core subsystem library sizes are 13837shown below. These are the code and data sizes for the acpica.lib 13838produced 13839by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13840any ACPI driver or OSPM code. The debug version of the code includes the 13841debug output trace mechanism and has a much larger code and data size. 13842Note 13843that these values will vary depending on the efficiency of the compiler 13844and 13845the compiler options used during generation. 13846 13847 Previous Release: 13848 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13849 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13850 Current Release: 13851 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13852 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13853 13854 138552) iASL Compiler/Disassembler: 13856 13857Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13858the module level (not within a control method.) These operators will be 13859executed once at the time the table is loaded. This type of code was 13860legal 13861up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13862compiler in order to provide backwards compatibility with earlier BIOS 13863ASL 13864code. 13865 13866The ACPI integer width (specified via the table revision ID or the -r 13867override, 32 or 64 bits) is now used internally during compile-time 13868constant 13869folding to ensure that constants are truncated to 32 bits if necessary. 13870Previously, the revision ID value was only emitted in the AML table 13871header. 13872 13873An error message is now generated for the Mutex and Method operators if 13874the 13875SyncLevel parameter is outside the legal range of 0 through 15. 13876 13877Fixed a problem with the Method operator ParameterTypes list handling 13878(ACPI 138793.0). Previously, more than 2 types or 2 arguments generated a syntax 13880error. 13881The actual underlying implementation of method argument typechecking is 13882still under development, however. 13883 13884---------------------------------------- 1388513 May 2005. Summary of changes for version 20050513: 13886 138871) ACPI CA Core Subsystem: 13888 13889Implemented support for PCI Express root bridges -- added support for 13890device 13891PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13892 13893The interpreter now automatically truncates incoming 64-bit constants to 1389432 13895bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13896This 13897also affects the iASL compiler constant folding. (Note: as per below, the 13898iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13899 13900Fixed a problem where string and buffer objects with "static" pointers 13901(pointers to initialization data within an ACPI table) were not handled 13902consistently. The internal object copy operation now always copies the 13903data 13904to a newly allocated buffer, regardless of whether the source object is 13905static or not. 13906 13907Fixed a problem with the FromBCD operator where an implicit result 13908conversion was improperly performed while storing the result to the 13909target 13910operand. Since this is an "explicit conversion" operator, the implicit 13911conversion should never be performed on the output. 13912 13913Fixed a problem with the CopyObject operator where a copy to an existing 13914named object did not always completely overwrite the existing object 13915stored 13916at name. Specifically, a buffer-to-buffer copy did not delete the 13917existing 13918buffer. 13919 13920Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13921and 13922structs for consistency. 13923 13924Code and Data Size: Current and previous core subsystem library sizes are 13925shown below. These are the code and data sizes for the acpica.lib 13926produced 13927by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13928any ACPI driver or OSPM code. The debug version of the code includes the 13929debug output trace mechanism and has a much larger code and data size. 13930Note 13931that these values will vary depending on the efficiency of the compiler 13932and 13933the compiler options used during generation. 13934 13935 Previous Release: 13936 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13937 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13938 Current Release: (Same sizes) 13939 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13940 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13941 13942 139432) iASL Compiler/Disassembler: 13944 13945The compiler now emits a warning if an attempt is made to generate a 64- 13946bit 13947integer constant from within a 32-bit ACPI table (Revision < 2). The 13948integer 13949is truncated to 32 bits. 13950 13951Fixed a problem with large package objects: if the static length of the 13952package is greater than 255, the "variable length package" opcode is 13953emitted. Previously, this caused an error. This requires an update to the 13954ACPI spec, since it currently (incorrectly) states that packages larger 13955than 13956255 elements are not allowed. 13957 13958The disassembler now correctly handles variable length packages and 13959packages 13960larger than 255 elements. 13961 13962---------------------------------------- 1396308 April 2005. Summary of changes for version 20050408: 13964 139651) ACPI CA Core Subsystem: 13966 13967Fixed three cases in the interpreter where an "index" argument to an ASL 13968function was still (internally) 32 bits instead of the required 64 bits. 13969This was the Index argument to the Index, Mid, and Match operators. 13970 13971The "strupr" function is now permanently local (AcpiUtStrupr), since this 13972is 13973not a POSIX-defined function and not present in most kernel-level C 13974libraries. All references to the C library strupr function have been 13975removed 13976from the headers. 13977 13978Completed the deployment of static functions/prototypes. All prototypes 13979with 13980the static attribute have been moved from the headers to the owning C 13981file. 13982 13983Implemented an extract option (-e) for the AcpiBin utility (AML binary 13984utility). This option allows the utility to extract individual ACPI 13985tables 13986from the output of AcpiDmp. It provides the same functionality of the 13987acpixtract.pl perl script without the worry of setting the correct perl 13988options. AcpiBin runs on Windows and has not yet been generated/validated 13989in 13990the Linux/Unix environment (but should be soon). 13991 13992Updated and fixed the table dump option for AcpiBin (-d). This option 13993converts a single ACPI table to a hex/ascii file, similar to the output 13994of 13995AcpiDmp. 13996 13997Code and Data Size: Current and previous core subsystem library sizes are 13998shown below. These are the code and data sizes for the acpica.lib 13999produced 14000by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14001any ACPI driver or OSPM code. The debug version of the code includes the 14002debug output trace mechanism and has a much larger code and data size. 14003Note 14004that these values will vary depending on the efficiency of the compiler 14005and 14006the compiler options used during generation. 14007 14008 Previous Release: 14009 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14010 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14011 Current Release: 14012 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14013 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14014 14015 140162) iASL Compiler/Disassembler: 14017 14018Disassembler fix: Added a check to ensure that the table length found in 14019the 14020ACPI table header within the input file is not longer than the actual 14021input 14022file size. This indicates some kind of file or table corruption. 14023 14024---------------------------------------- 1402529 March 2005. Summary of changes for version 20050329: 14026 140271) ACPI CA Core Subsystem: 14028 14029An error is now generated if an attempt is made to create a Buffer Field 14030of 14031length zero (A CreateField with a length operand of zero.) 14032 14033The interpreter now issues a warning whenever executable code at the 14034module 14035level is detected during ACPI table load. This will give some idea of the 14036prevalence of this type of code. 14037 14038Implemented support for references to named objects (other than control 14039methods) within package objects. 14040 14041Enhanced package object output for the debug object. Package objects are 14042now 14043completely dumped, showing all elements. 14044 14045Enhanced miscellaneous object output for the debug object. Any object can 14046now be written to the debug object (for example, a device object can be 14047written, and the type of the object will be displayed.) 14048 14049The "static" qualifier has been added to all local functions across both 14050the 14051core subsystem and the iASL compiler. 14052 14053The number of "long" lines (> 80 chars) within the source has been 14054significantly reduced, by about 1/3. 14055 14056Cleaned up all header files to ensure that all CA/iASL functions are 14057prototyped (even static functions) and the formatting is consistent. 14058 14059Two new header files have been added, acopcode.h and acnames.h. 14060 14061Removed several obsolete functions that were no longer used. 14062 14063Code and Data Size: Current and previous core subsystem library sizes are 14064shown below. These are the code and data sizes for the acpica.lib 14065produced 14066by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14067any ACPI driver or OSPM code. The debug version of the code includes the 14068debug output trace mechanism and has a much larger code and data size. 14069Note 14070that these values will vary depending on the efficiency of the compiler 14071and 14072the compiler options used during generation. 14073 14074 Previous Release: 14075 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14076 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14077 Current Release: 14078 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14079 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14080 14081 14082 140832) iASL Compiler/Disassembler: 14084 14085Fixed a problem with the resource descriptor generation/support. For the 14086ResourceSourceIndex and the ResourceSource fields, both must be present, 14087or 14088both must be not present - can't have one without the other. 14089 14090The compiler now returns non-zero from the main procedure if any errors 14091have 14092occurred during the compilation. 14093 14094 14095---------------------------------------- 1409609 March 2005. Summary of changes for version 20050309: 14097 140981) ACPI CA Core Subsystem: 14099 14100The string-to-buffer implicit conversion code has been modified again 14101after 14102a change to the ACPI specification. In order to match the behavior of 14103the 14104other major ACPI implementation, the target buffer is no longer truncated 14105if 14106the source string is smaller than an existing target buffer. This change 14107requires an update to the ACPI spec, and should eliminate the recent 14108AE_AML_BUFFER_LIMIT issues. 14109 14110The "implicit return" support was rewritten to a new algorithm that 14111solves 14112the general case. Rather than attempt to determine when a method is about 14113to 14114exit, the result of every ASL operator is saved momentarily until the 14115very 14116next ASL operator is executed. Therefore, no matter how the method exits, 14117there will always be a saved implicit return value. This feature is only 14118enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 14119eliminate 14120AE_AML_NO_RETURN_VALUE errors when enabled. 14121 14122Implemented implicit conversion support for the predicate (operand) of 14123the 14124If, Else, and While operators. String and Buffer arguments are 14125automatically 14126converted to Integers. 14127 14128Changed the string-to-integer conversion behavior to match the new ACPI 14129errata: "If no integer object exists, a new integer is created. The ASCII 14130string is interpreted as a hexadecimal constant. Each string character is 14131interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 14132with the first character as the most significant digit, and ending with 14133the 14134first non-hexadecimal character or end-of-string." This means that the 14135first 14136non-hex character terminates the conversion and this is the code that was 14137changed. 14138 14139Fixed a problem where the ObjectType operator would fail (fault) when 14140used 14141on an Index of a Package which pointed to a null package element. The 14142operator now properly returns zero (Uninitialized) in this case. 14143 14144Fixed a problem where the While operator used excessive memory by not 14145properly popping the result stack during execution. There was no memory 14146leak 14147after execution, however. (Code provided by Valery Podrezov.) 14148 14149Fixed a problem where references to control methods within Package 14150objects 14151caused the method to be invoked, instead of producing a reference object 14152pointing to the method. 14153 14154Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 14155to 14156improve performance and reduce code size. (Code provided by Alexey 14157Starikovskiy.) 14158 14159Code and Data Size: Current and previous core subsystem library sizes are 14160shown below. These are the code and data sizes for the acpica.lib 14161produced 14162by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14163any ACPI driver or OSPM code. The debug version of the code includes the 14164debug output trace mechanism and has a much larger code and data size. 14165Note 14166that these values will vary depending on the efficiency of the compiler 14167and 14168the compiler options used during generation. 14169 14170 Previous Release: 14171 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14172 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14173 Current Release: 14174 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14175 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14176 14177 141782) iASL Compiler/Disassembler: 14179 14180Fixed a problem with the Return operator with no arguments. Since the AML 14181grammar for the byte encoding requires an operand for the Return opcode, 14182the 14183compiler now emits a Return(Zero) for this case. An ACPI specification 14184update has been written for this case. 14185 14186For tables other than the DSDT, namepath optimization is automatically 14187disabled. This is because SSDTs can be loaded anywhere in the namespace, 14188the 14189compiler has no knowledge of where, and thus cannot optimize namepaths. 14190 14191Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 14192inadvertently omitted from the ACPI specification, and will require an 14193update to the spec. 14194 14195The source file scan for ASCII characters is now optional (-a). This 14196change 14197was made because some vendors place non-ascii characters within comments. 14198However, the scan is simply a brute-force byte compare to ensure all 14199characters in the file are in the range 0x00 to 0x7F. 14200 14201Fixed a problem with the CondRefOf operator where the compiler was 14202inappropriately checking for the existence of the target. Since the point 14203of 14204the operator is to check for the existence of the target at run-time, the 14205compiler no longer checks for the target existence. 14206 14207Fixed a problem where errors generated from the internal AML interpreter 14208during constant folding were not handled properly, causing a fault. 14209 14210Fixed a problem with overly aggressive range checking for the Stall 14211operator. The valid range (max 255) is now only checked if the operand is 14212of 14213type Integer. All other operand types cannot be statically checked. 14214 14215Fixed a problem where control method references within the RefOf, 14216DeRefOf, 14217and ObjectType operators were not treated properly. They are now treated 14218as 14219actual references, not method invocations. 14220 14221Fixed and enhanced the "list namespace" option (-ln). This option was 14222broken 14223a number of releases ago. 14224 14225Improved error handling for the Field, IndexField, and BankField 14226operators. 14227The compiler now cleanly reports and recovers from errors in the field 14228component (FieldUnit) list. 14229 14230Fixed a disassembler problem where the optional ResourceDescriptor fields 14231TRS and TTP were not always handled correctly. 14232 14233Disassembler - Comments in output now use "//" instead of "/*" 14234 14235---------------------------------------- 1423628 February 2005. Summary of changes for version 20050228: 14237 142381) ACPI CA Core Subsystem: 14239 14240Fixed a problem where the result of an Index() operator (an object 14241reference) must increment the reference count on the target object for 14242the 14243life of the object reference. 14244 14245Implemented AML Interpreter and Debugger support for the new ACPI 3.0 14246Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 14247WordSpace 14248resource descriptors. 14249 14250Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 14251Space Descriptor" string, indicating interpreter support for the 14252descriptors 14253above. 14254 14255Implemented header support for the new ACPI 3.0 FADT flag bits. 14256 14257Implemented header support for the new ACPI 3.0 PCI Express bits for the 14258PM1 14259status/enable registers. 14260 14261Updated header support for the MADT processor local Apic struct and MADT 14262platform interrupt source struct for new ACPI 3.0 fields. 14263 14264Implemented header support for the SRAT and SLIT ACPI tables. 14265 14266Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 14267flag 14268at runtime. 14269 14270Code and Data Size: Current and previous core subsystem library sizes are 14271shown below. These are the code and data sizes for the acpica.lib 14272produced 14273by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14274any ACPI driver or OSPM code. The debug version of the code includes the 14275debug output trace mechanism and has a much larger code and data size. 14276Note 14277that these values will vary depending on the efficiency of the compiler 14278and 14279the compiler options used during generation. 14280 14281 Previous Release: 14282 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14283 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14284 Current Release: 14285 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14286 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14287 14288 142892) iASL Compiler/Disassembler: 14290 14291Fixed a problem with the internal 64-bit String-to-integer conversion 14292with 14293strings less than two characters long. 14294 14295Fixed a problem with constant folding where the result of the Index() 14296operator can not be considered a constant. This means that Index() cannot 14297be 14298a type3 opcode and this will require an update to the ACPI specification. 14299 14300Disassembler: Implemented support for the TTP, MTP, and TRS resource 14301descriptor fields. These fields were inadvertently ignored and not output 14302in 14303the disassembly of the resource descriptor. 14304 14305 14306 ---------------------------------------- 1430711 February 2005. Summary of changes for version 20050211: 14308 143091) ACPI CA Core Subsystem: 14310 14311Implemented ACPI 3.0 support for implicit conversion within the Match() 14312operator. MatchObjects can now be of type integer, buffer, or string 14313instead 14314of just type integer. Package elements are implicitly converted to the 14315type 14316of the MatchObject. This change aligns the behavior of Match() with the 14317behavior of the other logical operators (LLess(), etc.) It also requires 14318an 14319errata change to the ACPI specification as this support was intended for 14320ACPI 3.0, but was inadvertently omitted. 14321 14322Fixed a problem with the internal implicit "to buffer" conversion. 14323Strings 14324that are converted to buffers will cause buffer truncation if the string 14325is 14326smaller than the target buffer. Integers that are converted to buffers 14327will 14328not cause buffer truncation, only zero extension (both as per the ACPI 14329spec.) The problem was introduced when code was added to truncate the 14330buffer, but this should not be performed in all cases, only the string 14331case. 14332 14333Fixed a problem with the Buffer and Package operators where the 14334interpreter 14335would get confused if two such operators were used as operands to an ASL 14336operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 14337stack was not being popped after the execution of these operators, 14338resulting 14339in an AE_NO_RETURN_VALUE exception. 14340 14341Fixed a problem with constructs of the form Store(Index(...),...). The 14342reference object returned from Index was inadvertently resolved to an 14343actual 14344value. This problem was introduced in version 20050114 when the behavior 14345of 14346Store() was modified to restrict the object types that can be used as the 14347source operand (to match the ACPI specification.) 14348 14349Reduced excessive stack use within the AcpiGetObjectInfo procedure. 14350 14351Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 14352 14353Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 14354 14355Code and Data Size: Current and previous core subsystem library sizes are 14356shown below. These are the code and data sizes for the acpica.lib 14357produced 14358by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14359any ACPI driver or OSPM code. The debug version of the code includes the 14360debug output trace mechanism and has a much larger code and data size. 14361Note 14362that these values will vary depending on the efficiency of the compiler 14363and 14364the compiler options used during generation. 14365 14366 Previous Release: 14367 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14368 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14369 Current Release: 14370 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14371 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14372 14373 143742) iASL Compiler/Disassembler: 14375 14376Fixed a code generation problem in the constant folding optimization code 14377where incorrect code was generated if a constant was reduced to a buffer 14378object (i.e., a reduced type 5 opcode.) 14379 14380Fixed a typechecking problem for the ToBuffer operator. Caused by an 14381incorrect return type in the internal opcode information table. 14382 14383---------------------------------------- 1438425 January 2005. Summary of changes for version 20050125: 14385 143861) ACPI CA Core Subsystem: 14387 14388Fixed a recently introduced problem with the Global Lock where the 14389underlying semaphore was not created. This problem was introduced in 14390version 20050114, and caused an AE_AML_NO_OPERAND exception during an 14391Acquire() operation on _GL. 14392 14393The local object cache is now optional, and is disabled by default. Both 14394AcpiExec and the iASL compiler enable the cache because they run in user 14395mode and this enhances their performance. #define 14396ACPI_ENABLE_OBJECT_CACHE 14397to enable the local cache. 14398 14399Fixed an issue in the internal function AcpiUtEvaluateObject concerning 14400the 14401optional "implicit return" support where an error was returned if no 14402return 14403object was expected, but one was implicitly returned. AE_OK is now 14404returned 14405in this case and the implicitly returned object is deleted. 14406AcpiUtEvaluateObject is only occasionally used, and only to execute 14407reserved 14408methods such as _STA and _INI where the return type is known up front. 14409 14410Fixed a few issues with the internal convert-to-integer code. It now 14411returns 14412an error if an attempt is made to convert a null string, a string of only 14413blanks/tabs, or a zero-length buffer. This affects both implicit 14414conversion 14415and explicit conversion via the ToInteger() operator. 14416 14417The internal debug code in AcpiUtAcquireMutex has been commented out. It 14418is 14419not needed for normal operation and should increase the performance of 14420the 14421entire subsystem. The code remains in case it is needed for debug 14422purposes 14423again. 14424 14425The AcpiExec source and makefile are included in the Unix/Linux package 14426for 14427the first time. 14428 14429Code and Data Size: Current and previous core subsystem library sizes are 14430shown below. These are the code and data sizes for the acpica.lib 14431produced 14432by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14433any ACPI driver or OSPM code. The debug version of the code includes the 14434debug output trace mechanism and has a much larger code and data size. 14435Note 14436that these values will vary depending on the efficiency of the compiler 14437and 14438the compiler options used during generation. 14439 14440 Previous Release: 14441 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14442 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14443 Current Release: 14444 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14445 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14446 144472) iASL Compiler/Disassembler: 14448 14449Switch/Case support: A warning is now issued if the type of the Switch 14450value 14451cannot be determined at compile time. For example, Switch(Arg0) will 14452generate the warning, and the type is assumed to be an integer. As per 14453the 14454ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 14455the 14456warning. 14457 14458Switch/Case support: Implemented support for buffer and string objects as 14459the switch value. This is an ACPI 3.0 feature, now that LEqual supports 14460buffers and strings. 14461 14462Switch/Case support: The emitted code for the LEqual() comparisons now 14463uses 14464the switch value as the first operand, not the second. The case value is 14465now 14466the second operand, and this allows the case value to be implicitly 14467converted to the type of the switch value, not the other way around. 14468 14469Switch/Case support: Temporary variables are now emitted immediately 14470within 14471the control method, not at the global level. This means that there are 14472now 1447336 temps available per-method, not 36 temps per-module as was the case 14474with 14475the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 14476 14477---------------------------------------- 1447814 January 2005. Summary of changes for version 20050114: 14479 14480Added 2005 copyright to all module headers. This affects every module in 14481the core subsystem, iASL compiler, and the utilities. 14482 144831) ACPI CA Core Subsystem: 14484 14485Fixed an issue with the String-to-Buffer conversion code where the string 14486null terminator was not included in the buffer after conversion, but 14487there 14488is existing ASL that assumes the string null terminator is included. This 14489is 14490the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14491introduced in the previous version when the code was updated to correctly 14492set the converted buffer size as per the ACPI specification. The ACPI 14493spec 14494is ambiguous and will be updated to specify that the null terminator must 14495be 14496included in the converted buffer. This also affects the ToBuffer() ASL 14497operator. 14498 14499Fixed a problem with the Mid() ASL/AML operator where it did not work 14500correctly on Buffer objects. Newly created sub-buffers were not being 14501marked 14502as initialized. 14503 14504 14505Fixed a problem in AcpiTbFindTable where incorrect string compares were 14506performed on the OemId and OemTableId table header fields. These fields 14507are 14508not null terminated, so strncmp is now used instead of strcmp. 14509 14510Implemented a restriction on the Store() ASL/AML operator to align the 14511behavior with the ACPI specification. Previously, any object could be 14512used 14513as the source operand. Now, the only objects that may be used are 14514Integers, 14515Buffers, Strings, Packages, Object References, and DDB Handles. If 14516necessary, the original behavior can be restored by enabling the 14517EnableInterpreterSlack flag. 14518 14519Enhanced the optional "implicit return" support to allow an implicit 14520return 14521value from methods that are invoked externally via the AcpiEvaluateObject 14522interface. This enables implicit returns from the _STA and _INI methods, 14523for example. 14524 14525Changed the Revision() ASL/AML operator to return the current version of 14526the 14527AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14528returned 14529the supported ACPI version (This is the function of the _REV method). 14530 14531Updated the _REV predefined method to return the currently supported 14532version 14533of ACPI, now 3. 14534 14535Implemented batch mode option for the AcpiExec utility (-b). 14536 14537Code and Data Size: Current and previous core subsystem library sizes are 14538shown below. These are the code and data sizes for the acpica.lib 14539produced 14540by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14541any ACPI driver or OSPM code. The debug version of the code includes the 14542debug output trace mechanism and has a much larger code and data size. 14543Note 14544that these values will vary depending on the efficiency of the compiler 14545and 14546the compiler options used during generation. 14547 14548 Previous Release: 14549 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14550 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14551 Current Release: 14552 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14553 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14554 14555---------------------------------------- 1455610 December 2004. Summary of changes for version 20041210: 14557 14558ACPI 3.0 support is nearing completion in both the iASL compiler and the 14559ACPI CA core subsystem. 14560 145611) ACPI CA Core Subsystem: 14562 14563Fixed a problem in the ToDecimalString operator where the resulting 14564string 14565length was incorrectly calculated. The length is now calculated exactly, 14566eliminating incorrect AE_STRING_LIMIT exceptions. 14567 14568Fixed a problem in the ToHexString operator to allow a maximum 200 14569character 14570string to be produced. 14571 14572Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14573copy 14574routine where the length of the resulting buffer was not truncated to the 14575new size (if the target buffer already existed). 14576 14577Code and Data Size: Current and previous core subsystem library sizes are 14578shown below. These are the code and data sizes for the acpica.lib 14579produced 14580by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14581any ACPI driver or OSPM code. The debug version of the code includes the 14582debug output trace mechanism and has a much larger code and data size. 14583Note 14584that these values will vary depending on the efficiency of the compiler 14585and 14586the compiler options used during generation. 14587 14588 Previous Release: 14589 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14590 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14591 Current Release: 14592 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14593 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14594 14595 145962) iASL Compiler/Disassembler: 14597 14598Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14599ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14600Includes support in the disassembler. 14601 14602Implemented support for the new (ACPI 3.0) parameter to the Register 14603macro, 14604AccessSize. 14605 14606Fixed a problem where the _HE resource name for the Interrupt macro was 14607referencing bit 0 instead of bit 1. 14608 14609Implemented check for maximum 255 interrupts in the Interrupt macro. 14610 14611Fixed a problem with the predefined resource descriptor names where 14612incorrect AML code was generated if the offset within the resource buffer 14613was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14614but did not update the surrounding package lengths. 14615 14616Changes to the Dma macro: All channels within the channel list must be 14617in 14618the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14619optional (default is BusMaster). 14620 14621Implemented check for maximum 7 data bytes for the VendorShort macro. 14622 14623The ReadWrite parameter is now optional for the Memory32 and similar 14624macros. 14625 14626---------------------------------------- 1462703 December 2004. Summary of changes for version 20041203: 14628 146291) ACPI CA Core Subsystem: 14630 14631The low-level field insertion/extraction code (exfldio) has been 14632completely 14633rewritten to eliminate unnecessary complexity, bugs, and boundary 14634conditions. 14635 14636Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14637ToDecimalString 14638operators where the input operand could be inadvertently deleted if no 14639conversion was necessary (e.g., if the input to ToInteger was an Integer 14640object.) 14641 14642Fixed a problem with the ToDecimalString and ToHexString where an 14643incorrect 14644exception code was returned if the resulting string would be > 200 chars. 14645AE_STRING_LIMIT is now returned. 14646 14647Fixed a problem with the Concatenate operator where AE_OK was always 14648returned, even if the operation failed. 14649 14650Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14651semaphores to be allocated. 14652 14653Code and Data Size: Current and previous core subsystem library sizes are 14654shown below. These are the code and data sizes for the acpica.lib 14655produced 14656by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14657any ACPI driver or OSPM code. The debug version of the code includes the 14658debug output trace mechanism and has a much larger code and data size. 14659Note 14660that these values will vary depending on the efficiency of the compiler 14661and 14662the compiler options used during generation. 14663 14664 Previous Release: 14665 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14666 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14667 Current Release: 14668 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14669 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14670 14671 146722) iASL Compiler/Disassembler: 14673 14674Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14675recently introduced in 20041119. 14676 14677Fixed a problem with the ToUUID macro where the upper nybble of each 14678buffer 14679byte was inadvertently set to zero. 14680 14681---------------------------------------- 1468219 November 2004. Summary of changes for version 20041119: 14683 146841) ACPI CA Core Subsystem: 14685 14686Fixed a problem in the internal ConvertToInteger routine where new 14687integers 14688were not truncated to 32 bits for 32-bit ACPI tables. This routine 14689converts 14690buffers and strings to integers. 14691 14692Implemented support to store a value to an Index() on a String object. 14693This 14694is an ACPI 2.0 feature that had not yet been implemented. 14695 14696Implemented new behavior for storing objects to individual package 14697elements 14698(via the Index() operator). The previous behavior was to invoke the 14699implicit 14700conversion rules if an object was already present at the index. The new 14701behavior is to simply delete any existing object and directly store the 14702new 14703object. Although the ACPI specification seems unclear on this subject, 14704other 14705ACPI implementations behave in this manner. (This is the root of the 14706AE_BAD_HEX_CONSTANT issue.) 14707 14708Modified the RSDP memory scan mechanism to support the extended checksum 14709for 14710ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14711RSDP signature is found with a valid checksum. 14712 14713Code and Data Size: Current and previous core subsystem library sizes are 14714shown below. These are the code and data sizes for the acpica.lib 14715produced 14716by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14717any ACPI driver or OSPM code. The debug version of the code includes the 14718debug output trace mechanism and has a much larger code and data size. 14719Note 14720that these values will vary depending on the efficiency of the compiler 14721and 14722the compiler options used during generation. 14723 14724 Previous Release: 14725 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14726 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14727 Current Release: 14728 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14729 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14730 14731 147322) iASL Compiler/Disassembler: 14733 14734Fixed a missing semicolon in the aslcompiler.y file. 14735 14736---------------------------------------- 1473705 November 2004. Summary of changes for version 20041105: 14738 147391) ACPI CA Core Subsystem: 14740 14741Implemented support for FADT revision 2. This was an interim table 14742(between 14743ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14744 14745Implemented optional support to allow uninitialized LocalX and ArgX 14746variables in a control method. The variables are initialized to an 14747Integer 14748object with a value of zero. This support is enabled by setting the 14749AcpiGbl_EnableInterpreterSlack flag to TRUE. 14750 14751Implemented support for Integer objects for the SizeOf operator. Either 147524 14753or 8 is returned, depending on the current integer size (32-bit or 64- 14754bit, 14755depending on the parent table revision). 14756 14757Fixed a problem in the implementation of the SizeOf and ObjectType 14758operators 14759where the operand was resolved to a value too early, causing incorrect 14760return values for some objects. 14761 14762Fixed some possible memory leaks during exceptional conditions. 14763 14764Code and Data Size: Current and previous core subsystem library sizes are 14765shown below. These are the code and data sizes for the acpica.lib 14766produced 14767by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14768any ACPI driver or OSPM code. The debug version of the code includes the 14769debug output trace mechanism and has a much larger code and data size. 14770Note 14771that these values will vary depending on the efficiency of the compiler 14772and 14773the compiler options used during generation. 14774 14775 Previous Release: 14776 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14777 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14778 Current Release: 14779 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14780 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14781 14782 147832) iASL Compiler/Disassembler: 14784 14785Implemented support for all ACPI 3.0 reserved names and methods. 14786 14787Implemented all ACPI 3.0 grammar elements in the front-end, including 14788support for semicolons. 14789 14790Implemented the ACPI 3.0 Function() and ToUUID() macros 14791 14792Fixed a problem in the disassembler where a Scope() operator would not be 14793emitted properly if the target of the scope was in another table. 14794 14795---------------------------------------- 1479615 October 2004. Summary of changes for version 20041015: 14797 14798Note: ACPI CA is currently undergoing an in-depth and complete formal 14799evaluation to test/verify the following areas. Other suggestions are 14800welcome. This will result in an increase in the frequency of releases and 14801the number of bug fixes in the next few months. 14802 - Functional tests for all ASL/AML operators 14803 - All implicit/explicit type conversions 14804 - Bit fields and operation regions 14805 - 64-bit math support and 32-bit-only "truncated" math support 14806 - Exceptional conditions, both compiler and interpreter 14807 - Dynamic object deletion and memory leaks 14808 - ACPI 3.0 support when implemented 14809 - External interfaces to the ACPI subsystem 14810 14811 148121) ACPI CA Core Subsystem: 14813 14814Fixed two alignment issues on 64-bit platforms - within debug statements 14815in 14816AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14817Address 14818field within the non-aligned ACPI generic address structure. 14819 14820Fixed a problem in the Increment and Decrement operators where incorrect 14821operand resolution could result in the inadvertent modification of the 14822original integer when the integer is passed into another method as an 14823argument and the arg is then incremented/decremented. 14824 14825Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14826bit 14827BCD number were truncated during conversion. 14828 14829Fixed a problem in the ToDecimal operator where the length of the 14830resulting 14831string could be set incorrectly too long if the input operand was a 14832Buffer 14833object. 14834 14835Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14836(0) 14837within a buffer would prematurely terminate a compare between buffer 14838objects. 14839 14840Added a check for string overflow (>200 characters as per the ACPI 14841specification) during the Concatenate operator with two string operands. 14842 14843Code and Data Size: Current and previous core subsystem library sizes are 14844shown below. These are the code and data sizes for the acpica.lib 14845produced 14846by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14847any ACPI driver or OSPM code. The debug version of the code includes the 14848debug output trace mechanism and has a much larger code and data size. 14849Note 14850that these values will vary depending on the efficiency of the compiler 14851and 14852the compiler options used during generation. 14853 14854 Previous Release: 14855 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14856 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14857 Current Release: 14858 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14859 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14860 14861 14862 148632) iASL Compiler/Disassembler: 14864 14865Allow the use of the ObjectType operator on uninitialized Locals and Args 14866(returns 0 as per the ACPI specification). 14867 14868Fixed a problem where the compiler would fault if there was a syntax 14869error 14870in the FieldName of all of the various CreateXXXField operators. 14871 14872Disallow the use of lower case letters within the EISAID macro, as per 14873the 14874ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14875Where 14876U is an uppercase letter and N is a hex digit. 14877 14878 14879---------------------------------------- 1488006 October 2004. Summary of changes for version 20041006: 14881 148821) ACPI CA Core Subsystem: 14883 14884Implemented support for the ACPI 3.0 Timer operator. This ASL function 14885implements a 64-bit timer with 100 nanosecond granularity. 14886 14887Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14888implement the ACPI 3.0 Timer operator. This allows the host OS to 14889implement 14890the timer with the best clock available. Also, it keeps the core 14891subsystem 14892out of the clock handling business, since the host OS (usually) performs 14893this function. 14894 14895Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14896functions use a 64-bit address which is part of the packed ACPI Generic 14897Address Structure. Since the structure is non-aligned, the alignment 14898macros 14899are now used to extract the address to a local variable before use. 14900 14901Fixed a problem where the ToInteger operator assumed all input strings 14902were 14903hexadecimal. The operator now handles both decimal strings and hex 14904strings 14905(prefixed with "0x"). 14906 14907Fixed a problem where the string length in the string object created as a 14908result of the internal ConvertToString procedure could be incorrect. This 14909potentially affected all implicit conversions and also the 14910ToDecimalString 14911and ToHexString operators. 14912 14913Fixed two problems in the ToString operator. If the length parameter was 14914zero, an incorrect string object was created and the value of the input 14915length parameter was inadvertently changed from zero to Ones. 14916 14917Fixed a problem where the optional ResourceSource string in the 14918ExtendedIRQ 14919resource macro was ignored. 14920 14921Simplified the interfaces to the internal division functions, reducing 14922code 14923size and complexity. 14924 14925Code and Data Size: Current and previous core subsystem library sizes are 14926shown below. These are the code and data sizes for the acpica.lib 14927produced 14928by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14929any ACPI driver or OSPM code. The debug version of the code includes the 14930debug output trace mechanism and has a much larger code and data size. 14931Note 14932that these values will vary depending on the efficiency of the compiler 14933and 14934the compiler options used during generation. 14935 14936 Previous Release: 14937 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14938 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14939 Current Release: 14940 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14941 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14942 14943 149442) iASL Compiler/Disassembler: 14945 14946Implemented support for the ACPI 3.0 Timer operator. 14947 14948Fixed a problem where the Default() operator was inadvertently ignored in 14949a 14950Switch/Case block. This was a problem in the translation of the Switch 14951statement to If...Else pairs. 14952 14953Added support to allow a standalone Return operator, with no parentheses 14954(or 14955operands). 14956 14957Fixed a problem with code generation for the ElseIf operator where the 14958translated Else...If parse tree was improperly constructed leading to the 14959loss of some code. 14960 14961---------------------------------------- 1496222 September 2004. Summary of changes for version 20040922: 14963 149641) ACPI CA Core Subsystem: 14965 14966Fixed a problem with the implementation of the LNot() operator where 14967"Ones" 14968was not returned for the TRUE case. Changed the code to return Ones 14969instead 14970of (!Arg) which was usually 1. This change affects iASL constant folding 14971for 14972this operator also. 14973 14974Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14975not 14976initialized properly -- Now zero the entire buffer in this case where the 14977buffer already exists. 14978 14979Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14980Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14981related code considerably. This will require changes/updates to all OS 14982interface layers (OSLs.) 14983 14984Implemented a new external interface, AcpiInstallExceptionHandler, to 14985allow 14986a system exception handler to be installed. This handler is invoked upon 14987any 14988run-time exception that occurs during control method execution. 14989 14990Added support for the DSDT in AcpiTbFindTable. This allows the 14991DataTableRegion() operator to access the local copy of the DSDT. 14992 14993Code and Data Size: Current and previous core subsystem library sizes are 14994shown below. These are the code and data sizes for the acpica.lib 14995produced 14996by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14997any ACPI driver or OSPM code. The debug version of the code includes the 14998debug output trace mechanism and has a much larger code and data size. 14999Note 15000that these values will vary depending on the efficiency of the compiler 15001and 15002the compiler options used during generation. 15003 15004 Previous Release: 15005 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15006 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15007 Current Release: 15008 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 15009 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 15010 15011 150122) iASL Compiler/Disassembler: 15013 15014Fixed a problem with constant folding and the LNot operator. LNot was 15015returning 1 in the TRUE case, not Ones as per the ACPI specification. 15016This 15017could result in the generation of an incorrect folded/reduced constant. 15018 15019End-Of-File is now allowed within a "//"-style comment. A parse error no 15020longer occurs if such a comment is at the very end of the input ASL 15021source 15022file. 15023 15024Implemented the "-r" option to override the Revision in the table header. 15025The initial use of this option will be to simplify the evaluation of the 15026AML 15027interpreter by allowing a single ASL source module to be compiled for 15028either 1502932-bit or 64-bit integers. 15030 15031 15032---------------------------------------- 1503327 August 2004. Summary of changes for version 20040827: 15034 150351) ACPI CA Core Subsystem: 15036 15037- Implemented support for implicit object conversion in the non-numeric 15038logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 15039and 15040LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 15041the second operand is implicitly converted on the fly to match the type 15042of 15043the first operand. For example: 15044 15045 LEqual (Source1, Source2) 15046 15047Source1 and Source2 must each evaluate to an integer, a string, or a 15048buffer. 15049The data type of Source1 dictates the required type of Source2. Source2 15050is 15051implicitly converted if necessary to match the type of Source1. 15052 15053- Updated and corrected the behavior of the string conversion support. 15054The 15055rules concerning conversion of buffers to strings (according to the ACPI 15056specification) are as follows: 15057 15058ToDecimalString - explicit byte-wise conversion of buffer to string of 15059decimal values (0-255) separated by commas. ToHexString - explicit byte- 15060wise 15061conversion of buffer to string of hex values (0-FF) separated by commas. 15062ToString - explicit byte-wise conversion of buffer to string. Byte-by- 15063byte 15064copy with no transform except NULL terminated. Any other implicit buffer- 15065to- 15066string conversion - byte-wise conversion of buffer to string of hex 15067values 15068(0-FF) separated by spaces. 15069 15070- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 15071 15072- Fixed a problem in AcpiNsGetPathnameLength where the returned length 15073was 15074one byte too short in the case of a node in the root scope. This could 15075cause a fault during debug output. 15076 15077- Code and Data Size: Current and previous core subsystem library sizes 15078are 15079shown below. These are the code and data sizes for the acpica.lib 15080produced 15081by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15082any ACPI driver or OSPM code. The debug version of the code includes the 15083debug output trace mechanism and has a much larger code and data size. 15084Note 15085that these values will vary depending on the efficiency of the compiler 15086and 15087the compiler options used during generation. 15088 15089 Previous Release: 15090 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15091 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15092 Current Release: 15093 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15094 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15095 15096 150972) iASL Compiler/Disassembler: 15098 15099- Fixed a Linux generation error. 15100 15101 15102---------------------------------------- 1510316 August 2004. Summary of changes for version 20040816: 15104 151051) ACPI CA Core Subsystem: 15106 15107Designed and implemented support within the AML interpreter for the so- 15108called "implicit return". This support returns the result of the last 15109ASL 15110operation within a control method, in the absence of an explicit Return() 15111operator. A few machines depend on this behavior, even though it is not 15112explicitly supported by the ASL language. It is optional support that 15113can 15114be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 15115 15116Removed support for the PCI_Config address space from the internal low 15117level 15118hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 15119support was not used internally, and would not work correctly anyway 15120because 15121the PCI bus number and segment number were not supported. There are 15122separate interfaces for PCI configuration space access because of the 15123unique 15124interface. 15125 15126Code and Data Size: Current and previous core subsystem library sizes are 15127shown below. These are the code and data sizes for the acpica.lib 15128produced 15129by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15130any ACPI driver or OSPM code. The debug version of the code includes the 15131debug output trace mechanism and has a much larger code and data size. 15132Note 15133that these values will vary depending on the efficiency of the compiler 15134and 15135the compiler options used during generation. 15136 15137 Previous Release: 15138 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15139 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15140 Current Release: 15141 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15142 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15143 15144 151452) iASL Compiler/Disassembler: 15146 15147Fixed a problem where constants in ASL expressions at the root level (not 15148within a control method) could be inadvertently truncated during code 15149generation. This problem was introduced in the 20040715 release. 15150 15151 15152---------------------------------------- 1515315 July 2004. Summary of changes for version 20040715: 15154 151551) ACPI CA Core Subsystem: 15156 15157Restructured the internal HW GPE interfaces to pass/track the current 15158state 15159of interrupts (enabled/disabled) in order to avoid possible deadlock and 15160increase flexibility of the interfaces. 15161 15162Implemented a "lexicographical compare" for String and Buffer objects 15163within 15164the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 15165- 15166as per further clarification to the ACPI specification. Behavior is 15167similar 15168to C library "strcmp". 15169 15170Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 15171external function. In the 32-bit non-debug case, the stack use has been 15172reduced from 168 bytes to 32 bytes. 15173 15174Deployed a new run-time configuration flag, 15175AcpiGbl_EnableInterpreterSlack, 15176whose purpose is to allow the AML interpreter to forgive certain bad AML 15177constructs. Default setting is FALSE. 15178 15179Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 15180IO 15181support code. If enabled, it allows field access to go beyond the end of 15182a 15183region definition if the field is within the region length rounded up to 15184the 15185next access width boundary (a common coding error.) 15186 15187Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 15188ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 15189these 15190symbols are lowercase by the latest version of the AcpiSrc tool. 15191 15192The prototypes for the PCI interfaces in acpiosxf.h have been updated to 15193rename "Register" to simply "Reg" to prevent certain compilers from 15194complaining. 15195 15196Code and Data Size: Current and previous core subsystem library sizes are 15197shown below. These are the code and data sizes for the acpica.lib 15198produced 15199by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15200any ACPI driver or OSPM code. The debug version of the code includes the 15201debug output trace mechanism and has a much larger code and data size. 15202Note 15203that these values will vary depending on the efficiency of the compiler 15204and 15205the compiler options used during generation. 15206 15207 Previous Release: 15208 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15209 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15210 Current Release: 15211 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15212 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15213 15214 152152) iASL Compiler/Disassembler: 15216 15217Implemented full support for Package objects within the Case() operator. 15218Note: The Break() operator is currently not supported within Case blocks 15219(TermLists) as there is some question about backward compatibility with 15220ACPI 152211.0 interpreters. 15222 15223 15224Fixed a problem where complex terms were not supported properly within 15225the 15226Switch() operator. 15227 15228Eliminated extraneous warning for compiler-emitted reserved names of the 15229form "_T_x". (Used in Switch/Case operators.) 15230 15231Eliminated optimization messages for "_T_x" objects and small constants 15232within the DefinitionBlock operator. 15233 15234 15235---------------------------------------- 1523615 June 2004. Summary of changes for version 20040615: 15237 152381) ACPI CA Core Subsystem: 15239 15240Implemented support for Buffer and String objects (as per ACPI 2.0) for 15241the 15242following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15243LLessEqual. 15244 15245All directory names in the entire source package are lower case, as they 15246were in earlier releases. 15247 15248Implemented "Disassemble" command in the AML debugger that will 15249disassemble 15250a single control method. 15251 15252Code and Data Size: Current and previous core subsystem library sizes are 15253shown below. These are the code and data sizes for the acpica.lib 15254produced 15255by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15256any ACPI driver or OSPM code. The debug version of the code includes the 15257debug output trace mechanism and has a much larger code and data size. 15258Note 15259that these values will vary depending on the efficiency of the compiler 15260and 15261the compiler options used during generation. 15262 15263 Previous Release: 15264 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15265 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15266 15267 Current Release: 15268 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15269 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15270 15271 152722) iASL Compiler/Disassembler: 15273 15274Implemented support for Buffer and String objects (as per ACPI 2.0) for 15275the 15276following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15277LLessEqual. 15278 15279All directory names in the entire source package are lower case, as they 15280were in earlier releases. 15281 15282Fixed a fault when using the -g or -d<nofilename> options if the FADT was 15283not found. 15284 15285Fixed an issue with the Windows version of the compiler where later 15286versions 15287of Windows place the FADT in the registry under the name "FADT" and not 15288"FACP" as earlier versions did. This applies when using the -g or - 15289d<nofilename> options. The compiler now looks for both strings as 15290necessary. 15291 15292Fixed a problem with compiler namepath optimization where a namepath 15293within 15294the Scope() operator could not be optimized if the namepath was a subpath 15295of 15296the current scope path. 15297 15298---------------------------------------- 1529927 May 2004. Summary of changes for version 20040527: 15300 153011) ACPI CA Core Subsystem: 15302 15303Completed a new design and implementation for EBDA (Extended BIOS Data 15304Area) 15305support in the RSDP scan code. The original code improperly scanned for 15306the 15307EBDA by simply scanning from memory location 0 to 0x400. The correct 15308method 15309is to first obtain the EBDA pointer from within the BIOS data area, then 15310scan 1K of memory starting at the EBDA pointer. There appear to be few 15311if 15312any machines that place the RSDP in the EBDA, however. 15313 15314Integrated a fix for a possible fault during evaluation of BufferField 15315arguments. Obsolete code that was causing the problem was removed. 15316 15317Found and fixed a problem in the Field Support Code where data could be 15318corrupted on a bit field read that starts on an aligned boundary but does 15319not end on an aligned boundary. Merged the read/write "datum length" 15320calculation code into a common procedure. 15321 15322Rolled in a couple of changes to the FreeBSD-specific header. 15323 15324 15325Code and Data Size: Current and previous core subsystem library sizes are 15326shown below. These are the code and data sizes for the acpica.lib 15327produced 15328by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15329any ACPI driver or OSPM code. The debug version of the code includes the 15330debug output trace mechanism and has a much larger code and data size. 15331Note 15332that these values will vary depending on the efficiency of the compiler 15333and 15334the compiler options used during generation. 15335 15336 Previous Release: 15337 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15338 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15339 Current Release: 15340 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15341 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15342 15343 153442) iASL Compiler/Disassembler: 15345 15346Fixed a generation warning produced by some overly-verbose compilers for 15347a 1534864-bit constant. 15349 15350---------------------------------------- 1535114 May 2004. Summary of changes for version 20040514: 15352 153531) ACPI CA Core Subsystem: 15354 15355Fixed a problem where hardware GPE enable bits sometimes not set properly 15356during and after GPE method execution. Result of 04/27 changes. 15357 15358Removed extra "clear all GPEs" when sleeping/waking. 15359 15360Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 15361AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 15362to 15363the new AcpiEv* calls as appropriate. 15364 15365ACPI_OS_NAME was removed from the OS-specific headers. The default name 15366is 15367now "Microsoft Windows NT" for maximum compatibility. However this can 15368be 15369changed by modifying the acconfig.h file. 15370 15371Allow a single invocation of AcpiInstallNotifyHandler for a handler that 15372traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 15373 15374Run _INI methods on ThermalZone objects. This is against the ACPI 15375specification, but there is apparently ASL code in the field that has 15376these 15377_INI methods, and apparently "other" AML interpreters execute them. 15378 15379Performed a full 16/32/64 bit lint that resulted in some small changes. 15380 15381Added a sleep simulation command to the AML debugger to test sleep code. 15382 15383Code and Data Size: Current and previous core subsystem library sizes are 15384shown below. These are the code and data sizes for the acpica.lib 15385produced 15386by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15387any ACPI driver or OSPM code. The debug version of the code includes the 15388debug output trace mechanism and has a much larger code and data size. 15389Note 15390that these values will vary depending on the efficiency of the compiler 15391and 15392the compiler options used during generation. 15393 15394 Previous Release: 15395 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15396 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15397 Current Release: 15398 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15399 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15400 15401---------------------------------------- 1540227 April 2004. Summary of changes for version 20040427: 15403 154041) ACPI CA Core Subsystem: 15405 15406Completed a major overhaul of the GPE handling within ACPI CA. There are 15407now three types of GPEs: wake-only, runtime-only, and combination 15408wake/run. 15409The only GPEs allowed to be combination wake/run are for button-style 15410devices such as a control-method power button, control-method sleep 15411button, 15412or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 15413not 15414referenced by any _PRW methods are marked for "runtime" and hardware 15415enabled. Any GPE that is referenced by a _PRW method is marked for 15416"wake" 15417(and disabled at runtime). However, at sleep time, only those GPEs that 15418have been specifically enabled for wake via the AcpiEnableGpe interface 15419will 15420actually be hardware enabled. 15421 15422A new external interface has been added, AcpiSetGpeType(), that is meant 15423to 15424be used by device drivers to force a GPE to a particular type. It will 15425be 15426especially useful for the drivers for the button devices mentioned above. 15427 15428Completed restructuring of the ACPI CA initialization sequence so that 15429default operation region handlers are installed before GPEs are 15430initialized 15431and the _PRW methods are executed. This will prevent errors when the 15432_PRW 15433methods attempt to access system memory or I/O space. 15434 15435GPE enable/disable no longer reads the GPE enable register. We now keep 15436the 15437enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 15438thus no longer depend on the hardware to maintain these bits. 15439 15440Always clear the wake status and fixed/GPE status bits before sleep, even 15441for state S5. 15442 15443Improved the AML debugger output for displaying the GPE blocks and their 15444current status. 15445 15446Added new strings for the _OSI method, of the form "Windows 2001 SPx" 15447where 15448x = 0,1,2,3,4. 15449 15450Fixed a problem where the physical address was incorrectly calculated 15451when 15452the Load() operator was used to directly load from an Operation Region 15453(vs. 15454loading from a Field object.) Also added check for minimum table length 15455for 15456this case. 15457 15458Fix for multiple mutex acquisition. Restore original thread SyncLevel on 15459mutex release. 15460 15461Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 15462consistency with the other fields returned. 15463 15464Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 15465structure for each GPE in the system, so the size of this structure is 15466important. 15467 15468CPU stack requirement reduction: Cleaned up the method execution and 15469object 15470evaluation paths so that now a parameter structure is passed, instead of 15471copying the various method parameters over and over again. 15472 15473In evregion.c: Correctly exit and reenter the interpreter region if and 15474only if dispatching an operation region request to a user-installed 15475handler. 15476Do not exit/reenter when dispatching to a default handler (e.g., default 15477system memory or I/O handlers) 15478 15479 15480Notes for updating drivers for the new GPE support. The following 15481changes 15482must be made to ACPI-related device drivers that are attached to one or 15483more 15484GPEs: (This information will be added to the ACPI CA Programmer 15485Reference.) 15486 154871) AcpiInstallGpeHandler no longer automatically enables the GPE, you 15488must 15489explicitly call AcpiEnableGpe. 154902) There is a new interface called AcpiSetGpeType. This should be called 15491before enabling the GPE. Also, this interface will automatically disable 15492the GPE if it is currently enabled. 154933) AcpiEnableGpe no longer supports a GPE type flag. 15494 15495Specific drivers that must be changed: 154961) EC driver: 15497 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15498AeGpeHandler, NULL); 15499 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15500 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15501 155022) Button Drivers (Power, Lid, Sleep): 15503Run _PRW method under parent device 15504If _PRW exists: /* This is a control-method button */ 15505 Extract GPE number and possibly GpeDevice 15506 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15507 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15508 15509For all other devices that have _PRWs, we automatically set the GPE type 15510to 15511ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15512This 15513must be done on a selective basis, usually requiring some kind of user 15514app 15515to allow the user to pick the wake devices. 15516 15517 15518Code and Data Size: Current and previous core subsystem library sizes are 15519shown below. These are the code and data sizes for the acpica.lib 15520produced 15521by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15522any ACPI driver or OSPM code. The debug version of the code includes the 15523debug output trace mechanism and has a much larger code and data size. 15524Note 15525that these values will vary depending on the efficiency of the compiler 15526and 15527the compiler options used during generation. 15528 15529 Previous Release: 15530 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15531 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15532 Current Release: 15533 15534 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15535 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15536 15537 15538 15539---------------------------------------- 1554002 April 2004. Summary of changes for version 20040402: 15541 155421) ACPI CA Core Subsystem: 15543 15544Fixed an interpreter problem where an indirect store through an ArgX 15545parameter was incorrectly applying the "implicit conversion rules" during 15546the store. From the ACPI specification: "If the target is a method local 15547or 15548argument (LocalX or ArgX), no conversion is performed and the result is 15549stored directly to the target". The new behavior is to disable implicit 15550conversion during ALL stores to an ArgX. 15551 15552Changed the behavior of the _PRW method scan to ignore any and all errors 15553returned by a given _PRW. This prevents the scan from aborting from the 15554failure of any single _PRW. 15555 15556Moved the runtime configuration parameters from the global init procedure 15557to 15558static variables in acglobal.h. This will allow the host to override the 15559default values easily. 15560 15561Code and Data Size: Current and previous core subsystem library sizes are 15562shown below. These are the code and data sizes for the acpica.lib 15563produced 15564by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15565any ACPI driver or OSPM code. The debug version of the code includes the 15566debug output trace mechanism and has a much larger code and data size. 15567Note 15568that these values will vary depending on the efficiency of the compiler 15569and 15570the compiler options used during generation. 15571 15572 Previous Release: 15573 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15574 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15575 Current Release: 15576 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15577 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15578 15579 155802) iASL Compiler/Disassembler: 15581 15582iASL now fully disassembles SSDTs. However, External() statements are 15583not 15584generated automatically for unresolved symbols at this time. This is a 15585planned feature for future implementation. 15586 15587Fixed a scoping problem in the disassembler that occurs when the type of 15588the 15589target of a Scope() operator is overridden. This problem caused an 15590incorrectly nested internal namespace to be constructed. 15591 15592Any warnings or errors that are emitted during disassembly are now 15593commented 15594out automatically so that the resulting file can be recompiled without 15595any 15596hand editing. 15597 15598---------------------------------------- 1559926 March 2004. Summary of changes for version 20040326: 15600 156011) ACPI CA Core Subsystem: 15602 15603Implemented support for "wake" GPEs via interaction between GPEs and the 15604_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15605identified as a WAKE GPE and by default will no longer be enabled at 15606runtime. Previously, we were blindly enabling all GPEs with a 15607corresponding 15608_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15609We 15610believe this has been the cause of thousands of "spurious" GPEs on some 15611systems. 15612 15613This new GPE behavior is can be reverted to the original behavior (enable 15614ALL GPEs at runtime) via a runtime flag. 15615 15616Fixed a problem where aliased control methods could not access objects 15617properly. The proper scope within the namespace was not initialized 15618(transferred to the target of the aliased method) before executing the 15619target method. 15620 15621Fixed a potential race condition on internal object deletion on the 15622return 15623object in AcpiEvaluateObject. 15624 15625Integrated a fix for resource descriptors where both _MEM and _MTP were 15626being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15627wide, 0x0F instead of 0x03.) 15628 15629Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15630preventing 15631a 15632fault in some cases. 15633 15634Updated Notify() values for debug statements in evmisc.c 15635 15636Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15637 15638Code and Data Size: Current and previous core subsystem library sizes are 15639shown below. These are the code and data sizes for the acpica.lib 15640produced 15641by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15642any ACPI driver or OSPM code. The debug version of the code includes the 15643debug output trace mechanism and has a much larger code and data size. 15644Note 15645that these values will vary depending on the efficiency of the compiler 15646and 15647the compiler options used during generation. 15648 15649 Previous Release: 15650 15651 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15652 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15653 Current Release: 15654 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15655 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15656 15657---------------------------------------- 1565811 March 2004. Summary of changes for version 20040311: 15659 156601) ACPI CA Core Subsystem: 15661 15662Fixed a problem where errors occurring during the parse phase of control 15663method execution did not abort cleanly. For example, objects created and 15664installed in the namespace were not deleted. This caused all subsequent 15665invocations of the method to return the AE_ALREADY_EXISTS exception. 15666 15667Implemented a mechanism to force a control method to "Serialized" 15668execution 15669if the method attempts to create namespace objects. (The root of the 15670AE_ALREADY_EXISTS problem.) 15671 15672Implemented support for the predefined _OSI "internal" control method. 15673Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15674and 15675"Windows 2001.1", and can be easily upgraded for new strings as 15676necessary. 15677This feature will allow "other" operating systems to execute the fully 15678tested, "Windows" code path through the ASL code 15679 15680Global Lock Support: Now allows multiple acquires and releases with any 15681internal thread. Removed concept of "owning thread" for this special 15682mutex. 15683 15684Fixed two functions that were inappropriately declaring large objects on 15685the 15686CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15687during 15688method execution considerably. 15689 15690Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15691S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15692 15693Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15694defined on the machine. 15695 15696Implemented two runtime options: One to force all control method 15697execution 15698to "Serialized" to mimic Windows behavior, another to disable _OSI 15699support 15700if it causes problems on a given machine. 15701 15702Code and Data Size: Current and previous core subsystem library sizes are 15703shown below. These are the code and data sizes for the acpica.lib 15704produced 15705by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15706any ACPI driver or OSPM code. The debug version of the code includes the 15707debug output trace mechanism and has a much larger code and data size. 15708Note 15709that these values will vary depending on the efficiency of the compiler 15710and 15711the compiler options used during generation. 15712 15713 Previous Release: 15714 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15715 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15716 Current Release: 15717 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15718 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15719 157202) iASL Compiler/Disassembler: 15721 15722Fixed an array size problem for FreeBSD that would cause the compiler to 15723fault. 15724 15725---------------------------------------- 1572620 February 2004. Summary of changes for version 20040220: 15727 15728 157291) ACPI CA Core Subsystem: 15730 15731Implemented execution of _SxD methods for Device objects in the 15732GetObjectInfo interface. 15733 15734Fixed calls to _SST method to pass the correct arguments. 15735 15736Added a call to _SST on wake to restore to "working" state. 15737 15738Check for End-Of-Buffer failure case in the WalkResources interface. 15739 15740Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15741structures to the beginning of the file. 15742 15743After wake, clear GPE status register(s) before enabling GPEs. 15744 15745After wake, clear/enable power button. (Perhaps we should clear/enable 15746all 15747fixed events upon wake.) 15748 15749Fixed a couple of possible memory leaks in the Namespace manager. 15750 15751Integrated latest acnetbsd.h file. 15752 15753---------------------------------------- 1575411 February 2004. Summary of changes for version 20040211: 15755 15756 157571) ACPI CA Core Subsystem: 15758 15759Completed investigation and implementation of the call-by-reference 15760mechanism for control method arguments. 15761 15762Fixed a problem where a store of an object into an indexed package could 15763fail if the store occurs within a different method than the method that 15764created the package. 15765 15766Fixed a problem where the ToDecimal operator could return incorrect 15767results. 15768 15769Fixed a problem where the CopyObject operator could fail on some of the 15770more 15771obscure objects (e.g., Reference objects.) 15772 15773Improved the output of the Debug object to display buffer, package, and 15774index objects. 15775 15776Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15777return 15778the expected result. 15779 15780Added permanent ACPI_REPORT_ERROR macros for all instances of the 15781ACPI_AML_INTERNAL exception. 15782 15783Integrated latest version of acfreebsd.h 15784 15785---------------------------------------- 1578616 January 2004. Summary of changes for version 20040116: 15787 15788The purpose of this release is primarily to update the copyright years in 15789each module, thus causing a huge number of diffs. There are a few small 15790functional changes, however. 15791 157921) ACPI CA Core Subsystem: 15793 15794Improved error messages when there is a problem finding one or more of 15795the 15796required base ACPI tables 15797 15798Reintroduced the definition of APIC_HEADER in actbl.h 15799 15800Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15801 15802Removed extraneous reference to NewObj in dsmthdat.c 15803 158042) iASL compiler 15805 15806Fixed a problem introduced in December that disabled the correct 15807disassembly 15808of Resource Templates 15809 15810 15811---------------------------------------- 1581203 December 2003. Summary of changes for version 20031203: 15813 158141) ACPI CA Core Subsystem: 15815 15816Changed the initialization of Operation Regions during subsystem 15817init to perform two entire walks of the ACPI namespace; The first 15818to initialize the regions themselves, the second to execute the 15819_REG methods. This fixed some interdependencies across _REG 15820methods found on some machines. 15821 15822Fixed a problem where a Store(Local0, Local1) could simply update 15823the object reference count, and not create a new copy of the 15824object if the Local1 is uninitialized. 15825 15826Implemented support for the _SST reserved method during sleep 15827transitions. 15828 15829Implemented support to clear the SLP_TYP and SLP_EN bits when 15830waking up, this is apparently required by some machines. 15831 15832When sleeping, clear the wake status only if SleepState is not S5. 15833 15834Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15835pointer arithmetic advanced a string pointer too far. 15836 15837Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15838could be returned if the requested table has not been loaded. 15839 15840Within the support for IRQ resources, restructured the handling of 15841the active and edge/level bits. 15842 15843Fixed a few problems in AcpiPsxExecute() where memory could be 15844leaked under certain error conditions. 15845 15846Improved error messages for the cases where the ACPI mode could 15847not be entered. 15848 15849Code and Data Size: Current and previous core subsystem library 15850sizes are shown below. These are the code and data sizes for the 15851acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15852these values do not include any ACPI driver or OSPM code. The 15853debug version of the code includes the debug output trace 15854mechanism and has a much larger code and data size. Note that 15855these values will vary depending on the efficiency of the compiler 15856and the compiler options used during generation. 15857 15858 Previous Release (20031029): 15859 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15860 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15861 Current Release: 15862 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15863 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15864 158652) iASL Compiler/Disassembler: 15866 15867Implemented a fix for the iASL disassembler where a bad index was 15868generated. This was most noticeable on 64-bit platforms 15869 15870 15871---------------------------------------- 1587229 October 2003. Summary of changes for version 20031029: 15873 158741) ACPI CA Core Subsystem: 15875 15876 15877Fixed a problem where a level-triggered GPE with an associated 15878_Lxx control method was incorrectly cleared twice. 15879 15880Fixed a problem with the Field support code where an access can 15881occur beyond the end-of-region if the field is non-aligned but 15882extends to the very end of the parent region (resulted in an 15883AE_AML_REGION_LIMIT exception.) 15884 15885Fixed a problem with ACPI Fixed Events where an RT Clock handler 15886would not get invoked on an RTC event. The RTC event bitmasks for 15887the PM1 registers were not being initialized properly. 15888 15889Implemented support for executing _STA and _INI methods for 15890Processor objects. Although this is currently not part of the 15891ACPI specification, there is existing ASL code that depends on the 15892init-time execution of these methods. 15893 15894Implemented and deployed a GetDescriptorName function to decode 15895the various types of internal descriptors. Guards against null 15896descriptors during debug output also. 15897 15898Implemented and deployed a GetNodeName function to extract the 4- 15899character namespace node name. This function simplifies the debug 15900and error output, as well as guarding against null pointers during 15901output. 15902 15903Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15904simplify the debug and error output of 64-bit integers. This 15905macro replaces the HIDWORD and LODWORD macros for dumping these 15906integers. 15907 15908Updated the implementation of the Stall() operator to only call 15909AcpiOsStall(), and also return an error if the operand is larger 15910than 255. This preserves the required behavior of not 15911relinquishing the processor, as would happen if AcpiOsSleep() was 15912called for "long stalls". 15913 15914Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15915initialized are now treated as NOOPs. 15916 15917Cleaned up a handful of warnings during 64-bit generation. 15918 15919Fixed a reported error where and incorrect GPE number was passed 15920to the GPE dispatch handler. This value is only used for error 15921output, however. Used this opportunity to clean up and streamline 15922the GPE dispatch code. 15923 15924Code and Data Size: Current and previous core subsystem library 15925sizes are shown below. These are the code and data sizes for the 15926acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15927these values do not include any ACPI driver or OSPM code. The 15928 15929debug version of the code includes the debug output trace 15930mechanism and has a much larger code and data size. Note that 15931these values will vary depending on the efficiency of the compiler 15932and the compiler options used during generation. 15933 15934 Previous Release (20031002): 15935 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15936 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15937 Current Release: 15938 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15939 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15940 15941 159422) iASL Compiler/Disassembler: 15943 15944Updated the iASL compiler to return an error if the operand to the 15945Stall() operator is larger than 255. 15946 15947 15948---------------------------------------- 1594902 October 2003. Summary of changes for version 20031002: 15950 15951 159521) ACPI CA Core Subsystem: 15953 15954Fixed a problem with Index Fields where the index was not 15955incremented for fields that require multiple writes to the 15956index/data registers (Fields that are wider than the data 15957register.) 15958 15959Fixed a problem with all Field objects where a write could go 15960beyond the end-of-field if the field was larger than the access 15961granularity and therefore required multiple writes to complete the 15962request. An extra write beyond the end of the field could happen 15963inadvertently. 15964 15965Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15966would incorrectly be returned if the width of the Data Register 15967was larger than the specified field access width. 15968 15969Completed fixes for LoadTable() and Unload() and verified their 15970operation. Implemented full support for the "DdbHandle" object 15971throughout the ACPI CA subsystem. 15972 15973Implemented full support for the MADT and ECDT tables in the ACPI 15974CA header files. Even though these tables are not directly 15975consumed by ACPI CA, the header definitions are useful for ACPI 15976device drivers. 15977 15978Integrated resource descriptor fixes posted to the Linux ACPI 15979list. This included checks for minimum descriptor length, and 15980support for trailing NULL strings within descriptors that have 15981optional string elements. 15982 15983Code and Data Size: Current and previous core subsystem library 15984sizes are shown below. These are the code and data sizes for the 15985acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15986these values do not include any ACPI driver or OSPM code. The 15987debug version of the code includes the debug output trace 15988mechanism and has a much larger code and data size. Note that 15989these values will vary depending on the efficiency of the compiler 15990and the compiler options used during generation. 15991 15992 Previous Release (20030918): 15993 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15994 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15995 Current Release: 15996 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15997 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15998 15999 160002) iASL Compiler: 16001 16002Implemented detection of non-ASCII characters within the input 16003source ASL file. This catches attempts to compile binary (AML) 16004files early in the compile, with an informative error message. 16005 16006Fixed a problem where the disassembler would fault if the output 16007filename could not be generated or if the output file could not be 16008opened. 16009 16010---------------------------------------- 1601118 September 2003. Summary of changes for version 20030918: 16012 16013 160141) ACPI CA Core Subsystem: 16015 16016Found and fixed a longstanding problem with the late execution of 16017the various deferred AML opcodes (such as Operation Regions, 16018Buffer Fields, Buffers, and Packages). If the name string 16019specified for the name of the new object placed the object in a 16020scope other than the current scope, the initialization/execution 16021of the opcode failed. The solution to this problem was to 16022implement a mechanism where the late execution of such opcodes 16023does not attempt to lookup/create the name a second time in an 16024incorrect scope. This fixes the "region size computed 16025incorrectly" problem. 16026 16027Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 16028Global Lock AE_BAD_PARAMETER error. 16029 16030Fixed several 64-bit issues with prototypes, casting and data 16031types. 16032 16033Removed duplicate prototype from acdisasm.h 16034 16035Fixed an issue involving EC Operation Region Detach (Shaohua Li) 16036 16037Code and Data Size: Current and previous core subsystem library 16038sizes are shown below. These are the code and data sizes for the 16039acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16040these values do not include any ACPI driver or OSPM code. The 16041debug version of the code includes the debug output trace 16042mechanism and has a much larger code and data size. Note that 16043these values will vary depending on the efficiency of the compiler 16044and the compiler options used during generation. 16045 16046 Previous Release: 16047 16048 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16049 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16050 Current Release: 16051 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16052 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16053 16054 160552) Linux: 16056 16057Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 16058correct sleep time in seconds. 16059 16060---------------------------------------- 1606114 July 2003. Summary of changes for version 20030619: 16062 160631) ACPI CA Core Subsystem: 16064 16065Parse SSDTs in order discovered, as opposed to reverse order 16066(Hrvoje Habjanic) 16067 16068Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 16069Klausner, 16070 Nate Lawson) 16071 16072 160732) Linux: 16074 16075Dynamically allocate SDT list (suggested by Andi Kleen) 16076 16077proc function return value cleanups (Andi Kleen) 16078 16079Correctly handle NMI watchdog during long stalls (Andrew Morton) 16080 16081Make it so acpismp=force works (reported by Andrew Morton) 16082 16083 16084---------------------------------------- 1608519 June 2003. Summary of changes for version 20030619: 16086 160871) ACPI CA Core Subsystem: 16088 16089Fix To/FromBCD, eliminating the need for an arch-specific #define. 16090 16091Do not acquire a semaphore in the S5 shutdown path. 16092 16093Fix ex_digits_needed for 0. (Takayoshi Kochi) 16094 16095Fix sleep/stall code reversal. (Andi Kleen) 16096 16097Revert a change having to do with control method calling 16098semantics. 16099 161002) Linux: 16101 16102acpiphp update (Takayoshi Kochi) 16103 16104Export acpi_disabled for sonypi (Stelian Pop) 16105 16106Mention acpismp=force in config help 16107 16108Re-add acpitable.c and acpismp=force. This improves backwards 16109 16110compatibility and also cleans up the code to a significant degree. 16111 16112Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 16113 16114---------------------------------------- 1611522 May 2003. Summary of changes for version 20030522: 16116 161171) ACPI CA Core Subsystem: 16118 16119Found and fixed a reported problem where an AE_NOT_FOUND error 16120occurred occasionally during _BST evaluation. This turned out to 16121be an Owner ID allocation issue where a called method did not get 16122a new ID assigned to it. Eventually, (after 64k calls), the Owner 16123ID UINT16 would wraparound so that the ID would be the same as the 16124caller's and the called method would delete the caller's 16125namespace. 16126 16127Implemented extended error reporting for control methods that are 16128aborted due to a run-time exception. Output includes the exact 16129AML instruction that caused the method abort, a dump of the method 16130locals and arguments at the time of the abort, and a trace of all 16131nested control method calls. 16132 16133Modified the interpreter to allow the creation of buffers of zero 16134length from the AML code. Implemented new code to ensure that no 16135attempt is made to actually allocate a memory buffer (of length 16136zero) - instead, a simple buffer object with a NULL buffer pointer 16137and length zero is created. A warning is no longer issued when 16138the AML attempts to create a zero-length buffer. 16139 16140Implemented a workaround for the "leading asterisk issue" in 16141_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 16142asterisk is automatically removed if present in any HID, UID, or 16143CID strings. The iASL compiler will still flag this asterisk as 16144an error, however. 16145 16146Implemented full support for _CID methods that return a package of 16147multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 16148now additionally returns a device _CID list if present. This 16149required a change to the external interface in order to pass an 16150ACPI_BUFFER object as a parameter since the _CID list is of 16151variable length. 16152 16153Fixed a problem with the new AE_SAME_HANDLER exception where 16154handler initialization code did not know about this exception. 16155 16156Code and Data Size: Current and previous core subsystem library 16157sizes are shown below. These are the code and data sizes for the 16158acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16159these values do not include any ACPI driver or OSPM code. The 16160debug version of the code includes the debug output trace 16161mechanism and has a much larger code and data size. Note that 16162these values will vary depending on the efficiency of the compiler 16163and the compiler options used during generation. 16164 16165 Previous Release (20030509): 16166 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16167 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16168 Current Release: 16169 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16170 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16171 16172 161732) Linux: 16174 16175Fixed a bug in which we would reinitialize the ACPI interrupt 16176after it was already working, thus disabling all ACPI and the IRQs 16177for any other device sharing the interrupt. (Thanks to Stian 16178Jordet) 16179 16180Toshiba driver update (John Belmonte) 16181 16182Return only 0 or 1 for our interrupt handler status (Andrew 16183Morton) 16184 16185 161863) iASL Compiler: 16187 16188Fixed a reported problem where multiple (nested) ElseIf() 16189statements were not handled correctly by the compiler, resulting 16190in incorrect warnings and incorrect AML code. This was a problem 16191in both the ASL parser and the code generator. 16192 16193 161944) Documentation: 16195 16196Added changes to existing interfaces, new exception codes, and new 16197text concerning reference count object management versus garbage 16198collection. 16199 16200---------------------------------------- 1620109 May 2003. Summary of changes for version 20030509. 16202 16203 162041) ACPI CA Core Subsystem: 16205 16206Changed the subsystem initialization sequence to hold off 16207installation of address space handlers until the hardware has been 16208initialized and the system has entered ACPI mode. This is because 16209the installation of space handlers can cause _REG methods to be 16210run. Previously, the _REG methods could potentially be run before 16211ACPI mode was enabled. 16212 16213Fixed some memory leak issues related to address space handler and 16214notify handler installation. There were some problems with the 16215reference count mechanism caused by the fact that the handler 16216objects are shared across several namespace objects. 16217 16218Fixed a reported problem where reference counts within the 16219namespace were not properly updated when named objects created by 16220method execution were deleted. 16221 16222Fixed a reported problem where multiple SSDTs caused a deletion 16223issue during subsystem termination. Restructured the table data 16224structures to simplify the linked lists and the related code. 16225 16226Fixed a problem where the table ID associated with secondary 16227tables (SSDTs) was not being propagated into the namespace objects 16228created by those tables. This would only present a problem for 16229tables that are unloaded at run-time, however. 16230 16231Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 16232type as the length parameter (instead of UINT32). 16233 16234Solved a long-standing problem where an ALREADY_EXISTS error 16235appears on various systems. This problem could happen when there 16236are multiple PCI_Config operation regions under a single PCI root 16237bus. This doesn't happen very frequently, but there are some 16238systems that do this in the ASL. 16239 16240Fixed a reported problem where the internal DeleteNode function 16241was incorrectly handling the case where a namespace node was the 16242first in the parent's child list, and had additional peers (not 16243the only child, but first in the list of children.) 16244 16245Code and Data Size: Current core subsystem library sizes are shown 16246below. These are the code and data sizes for the acpica.lib 16247produced by the Microsoft Visual C++ 6.0 compiler, and these 16248values do not include any ACPI driver or OSPM code. The debug 16249version of the code includes the debug output trace mechanism and 16250has a much larger code and data size. Note that these values will 16251vary depending on the efficiency of the compiler and the compiler 16252options used during generation. 16253 16254 Previous Release 16255 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16256 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16257 Current Release: 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 16261 162622) Linux: 16263 16264Allow ":" in OS override string (Ducrot Bruno) 16265 16266Kobject fix (Greg KH) 16267 16268 162693 iASL Compiler/Disassembler: 16270 16271Fixed a problem in the generation of the C source code files (AML 16272is emitted in C source statements for BIOS inclusion) where the 16273Ascii dump that appears within a C comment at the end of each line 16274could cause a compile time error if the AML sequence happens to 16275have an open comment or close comment sequence embedded. 16276 16277 16278---------------------------------------- 1627924 April 2003. Summary of changes for version 20030424. 16280 16281 162821) ACPI CA Core Subsystem: 16283 16284Support for big-endian systems has been implemented. Most of the 16285support has been invisibly added behind big-endian versions of the 16286ACPI_MOVE_* macros. 16287 16288Fixed a problem in AcpiHwDisableGpeBlock() and 16289AcpiHwClearGpeBlock() where an incorrect offset was passed to the 16290low level hardware write routine. The offset parameter was 16291actually eliminated from the low level read/write routines because 16292they had become obsolete. 16293 16294Fixed a problem where a handler object was deleted twice during 16295the removal of a fixed event handler. 16296 16297 162982) Linux: 16299 16300A fix for SMP systems with link devices was contributed by 16301 16302Compaq's Dan Zink. 16303 16304(2.5) Return whether we handled the interrupt in our IRQ handler. 16305(Linux ISRs no longer return void, so we can propagate the handler 16306return value from the ACPI CA core back to the OS.) 16307 16308 16309 163103) Documentation: 16311 16312The ACPI CA Programmer Reference has been updated to reflect new 16313interfaces and changes to existing interfaces. 16314 16315---------------------------------------- 1631628 March 2003. Summary of changes for version 20030328. 16317 163181) ACPI CA Core Subsystem: 16319 16320The GPE Block Device support has been completed. New interfaces 16321are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 16322interfaces (enable, disable, clear, getstatus) have been split 16323into separate interfaces for Fixed Events and General Purpose 16324Events (GPEs) in order to support GPE Block Devices properly. 16325 16326Fixed a problem where the error message "Failed to acquire 16327semaphore" would appear during operations on the embedded 16328controller (EC). 16329 16330Code and Data Size: Current core subsystem library sizes are shown 16331below. These are the code and data sizes for the acpica.lib 16332produced by the Microsoft Visual C++ 6.0 compiler, and these 16333values do not include any ACPI driver or OSPM code. The debug 16334version of the code includes the debug output trace mechanism and 16335has a much larger code and data size. Note that these values will 16336vary depending on the efficiency of the compiler and the compiler 16337options used during generation. 16338 16339 Previous Release 16340 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16341 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16342 Current Release: 16343 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16344 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16345 16346 16347---------------------------------------- 1634828 February 2003. Summary of changes for version 20030228. 16349 16350 163511) ACPI CA Core Subsystem: 16352 16353The GPE handling and dispatch code has been completely overhauled 16354in preparation for support of GPE Block Devices (ID ACPI0006). 16355This affects internal data structures and code only; there should 16356be no differences visible externally. One new file has been 16357added, evgpeblk.c 16358 16359The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 16360fields that are used to determine the GPE block lengths. The 16361REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 16362structures are ignored. This is per the ACPI specification but it 16363isn't very clear. The full 256 Block 0/1 GPEs are now supported 16364(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 16365 16366In the SCI interrupt handler, removed the read of the PM1_CONTROL 16367register to look at the SCI_EN bit. On some machines, this read 16368causes an SMI event and greatly slows down SCI events. (This may 16369in fact be the cause of slow battery status response on some 16370systems.) 16371 16372Fixed a problem where a store of a NULL string to a package object 16373could cause the premature deletion of the object. This was seen 16374during execution of the battery _BIF method on some systems, 16375resulting in no battery data being returned. 16376 16377Added AcpiWalkResources interface to simplify parsing of resource 16378lists. 16379 16380Code and Data Size: Current core subsystem library sizes are shown 16381below. These are the code and data sizes for the acpica.lib 16382produced by the Microsoft Visual C++ 6.0 compiler, and these 16383values do not include any ACPI driver or OSPM code. The debug 16384version of the code includes the debug output trace mechanism and 16385has a much larger code and data size. Note that these values will 16386vary depending on the efficiency of the compiler and the compiler 16387options used during generation. 16388 16389 Previous Release 16390 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16391 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16392 Current Release: 16393 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16394 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16395 16396 163972) Linux 16398 16399S3 fixes (Ole Rohne) 16400 16401Update ACPI PHP driver with to use new acpi_walk_resource API 16402(Bjorn Helgaas) 16403 16404Add S4BIOS support (Pavel Machek) 16405 16406Map in entire table before performing checksum (John Stultz) 16407 16408Expand the mem= cmdline to allow the specification of reserved and 16409ACPI DATA blocks (Pavel Machek) 16410 16411Never use ACPI on VISWS 16412 16413Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 16414 16415Revert a change that allowed P_BLK lengths to be 4 or 5. This is 16416causing us to think that some systems support C2 when they really 16417don't. 16418 16419Do not count processor objects for non-present CPUs (Thanks to 16420Dominik Brodowski) 16421 16422 164233) iASL Compiler: 16424 16425Fixed a problem where ASL include files could not be found and 16426opened. 16427 16428Added support for the _PDC reserved name. 16429 16430 16431---------------------------------------- 1643222 January 2003. Summary of changes for version 20030122. 16433 16434 164351) ACPI CA Core Subsystem: 16436 16437Added a check for constructs of the form: Store (Local0, Local0) 16438where Local0 is not initialized. Apparently, some BIOS 16439programmers believe that this is a NOOP. Since this store doesn't 16440do anything anyway, the new prototype behavior will ignore this 16441error. This is a case where we can relax the strict checking in 16442the interpreter in the name of compatibility. 16443 16444 164452) Linux 16446 16447The AcpiSrc Source Conversion Utility has been released with the 16448Linux package for the first time. This is the utility that is 16449used to convert the ACPI CA base source code to the Linux version. 16450 16451(Both) Handle P_BLK lengths shorter than 6 more gracefully 16452 16453(Both) Move more headers to include/acpi, and delete an unused 16454header. 16455 16456(Both) Move drivers/acpi/include directory to include/acpi 16457 16458(Both) Boot functions don't use cmdline, so don't pass it around 16459 16460(Both) Remove include of unused header (Adrian Bunk) 16461 16462(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 16463the 16464former now also includes the latter, acpiphp.h only needs the one, 16465now. 16466 16467(2.5) Make it possible to select method of bios restoring after S3 16468resume. [=> no more ugly ifdefs] (Pavel Machek) 16469 16470(2.5) Make proc write interfaces work (Pavel Machek) 16471 16472(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 16473 16474(2.5) Break out ACPI Perf code into its own module, under cpufreq 16475(Dominik Brodowski) 16476 16477(2.4) S4BIOS support (Ducrot Bruno) 16478 16479(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 16480Visinoni) 16481 16482 164833) iASL Compiler: 16484 16485Added support to disassemble SSDT and PSDTs. 16486 16487Implemented support to obtain SSDTs from the Windows registry if 16488available. 16489 16490 16491---------------------------------------- 1649209 January 2003. Summary of changes for version 20030109. 16493 164941) ACPI CA Core Subsystem: 16495 16496Changed the behavior of the internal Buffer-to-String conversion 16497function. The current ACPI specification states that the contents 16498of the buffer are "converted to a string of two-character 16499hexadecimal numbers, each separated by a space". Unfortunately, 16500this definition is not backwards compatible with existing ACPI 1.0 16501implementations (although the behavior was not defined in the ACPI 165021.0 specification). The new behavior simply copies data from the 16503buffer to the string until a null character is found or the end of 16504the buffer is reached. The new String object is always null 16505terminated. This problem was seen during the generation of _BIF 16506battery data where incorrect strings were returned for battery 16507type, etc. This will also require an errata to the ACPI 16508specification. 16509 16510Renamed all instances of NATIVE_UINT and NATIVE_INT to 16511ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16512 16513Copyright in all module headers (both Linux and non-Linux) has be 16514updated to 2003. 16515 16516Code and Data Size: Current core subsystem library sizes are shown 16517below. These are the code and data sizes for the acpica.lib 16518produced by the Microsoft Visual C++ 6.0 compiler, and these 16519values do not include any ACPI driver or OSPM code. The debug 16520version of the code includes the debug output trace mechanism and 16521has a much larger code and data size. Note that these values will 16522vary depending on the efficiency of the compiler and the compiler 16523options used during generation. 16524 16525 Previous Release 16526 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16527 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16528 Current Release: 16529 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16530 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16531 16532 165332) Linux 16534 16535Fixed an oops on module insertion/removal (Matthew Tippett) 16536 16537(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16538 16539(2.5) Replace pr_debug (Randy Dunlap) 16540 16541(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16542 16543(Both) Eliminate spawning of thread from timer callback, in favor 16544of schedule_work() 16545 16546(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16547 16548(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16549 16550(Both) Add missing statics to button.c (Pavel Machek) 16551 16552Several changes have been made to the source code translation 16553utility that generates the Linux Code in order to make the code 16554more "Linux-like": 16555 16556All typedefs on structs and unions have been removed in keeping 16557with the Linux coding style. 16558 16559Removed the non-Linux SourceSafe module revision number from each 16560module header. 16561 16562Completed major overhaul of symbols to be lowercase for linux. 16563Doubled the number of symbols that are lowercase. 16564 16565Fixed a problem where identifiers within procedure headers and 16566within quotes were not fully lower cased (they were left with a 16567starting capital.) 16568 16569Some C macros whose only purpose is to allow the generation of 16- 16570bit code are now completely removed in the Linux code, increasing 16571readability and maintainability. 16572 16573---------------------------------------- 16574 1657512 December 2002. Summary of changes for version 20021212. 16576 16577 165781) ACPI CA Core Subsystem: 16579 16580Fixed a problem where the creation of a zero-length AML Buffer 16581would cause a fault. 16582 16583Fixed a problem where a Buffer object that pointed to a static AML 16584buffer (in an ACPI table) could inadvertently be deleted, causing 16585memory corruption. 16586 16587Fixed a problem where a user buffer (passed in to the external 16588ACPI CA interfaces) could be overwritten if the buffer was too 16589small to complete the operation, causing memory corruption. 16590 16591Fixed a problem in the Buffer-to-String conversion code where a 16592string of length one was always returned, regardless of the size 16593of the input Buffer object. 16594 16595Removed the NATIVE_CHAR data type across the entire source due to 16596lack of need and lack of consistent use. 16597 16598Code and Data Size: Current core subsystem library sizes are shown 16599below. These are the code and data sizes for the acpica.lib 16600produced by the Microsoft Visual C++ 6.0 compiler, and these 16601values do not include any ACPI driver or OSPM code. The debug 16602version of the code includes the debug output trace mechanism and 16603has a much larger code and data size. Note that these values will 16604vary depending on the efficiency of the compiler and the compiler 16605options used during generation. 16606 16607 Previous Release 16608 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16609 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16610 Current Release: 16611 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16612 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16613 16614 16615---------------------------------------- 1661605 December 2002. Summary of changes for version 20021205. 16617 166181) ACPI CA Core Subsystem: 16619 16620Fixed a problem where a store to a String or Buffer object could 16621cause corruption of the DSDT if the object type being stored was 16622the same as the target object type and the length of the object 16623being stored was equal to or smaller than the original (existing) 16624target object. This was seen to cause corruption of battery _BIF 16625buffers if the _BIF method modified the buffer on the fly. 16626 16627Fixed a problem where an internal error was generated if a control 16628method invocation was used in an OperationRegion, Buffer, or 16629Package declaration. This was caused by the deferred parsing of 16630the control method and thus the deferred creation of the internal 16631method object. The solution to this problem was to create the 16632internal method object at the moment the method is encountered in 16633the first pass - so that subsequent references to the method will 16634able to obtain the required parameter count and thus properly 16635parse the method invocation. This problem presented itself as an 16636AE_AML_INTERNAL during the pass 1 parse phase during table load. 16637 16638Fixed a problem where the internal String object copy routine did 16639not always allocate sufficient memory for the target String object 16640and caused memory corruption. This problem was seen to cause 16641"Allocation already present in list!" errors as memory allocation 16642became corrupted. 16643 16644Implemented a new function for the evaluation of namespace objects 16645that allows the specification of the allowable return object 16646types. This simplifies a lot of code that checks for a return 16647object of one or more specific objects returned from the 16648evaluation (such as _STA, etc.) This may become and external 16649function if it would be useful to ACPI-related drivers. 16650 16651Completed another round of prefixing #defines with "ACPI_" for 16652clarity. 16653 16654Completed additional code restructuring to allow more modular 16655linking for iASL compiler and AcpiExec. Several files were split 16656creating new files. New files: nsparse.c dsinit.c evgpe.c 16657 16658Implemented an abort mechanism to terminate an executing control 16659method via the AML debugger. This feature is useful for debugging 16660control methods that depend (wait) for specific hardware 16661responses. 16662 16663Code and Data Size: Current core subsystem library sizes are shown 16664below. These are the code and data sizes for the acpica.lib 16665produced by the Microsoft Visual C++ 6.0 compiler, and these 16666values do not include any ACPI driver or OSPM code. The debug 16667version of the code includes the debug output trace mechanism and 16668has a much larger code and data size. Note that these values will 16669vary depending on the efficiency of the compiler and the compiler 16670options used during generation. 16671 16672 Previous Release 16673 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16674 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16675 Current Release: 16676 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16677 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16678 16679 166802) iASL Compiler/Disassembler 16681 16682Fixed a compiler code generation problem for "Interrupt" Resource 16683Descriptors. If specified in the ASL, the optional "Resource 16684Source Index" and "Resource Source" fields were not inserted into 16685the correct location within the AML resource descriptor, creating 16686an invalid descriptor. 16687 16688Fixed a disassembler problem for "Interrupt" resource descriptors. 16689The optional "Resource Source Index" and "Resource Source" fields 16690were ignored. 16691 16692 16693---------------------------------------- 1669422 November 2002. Summary of changes for version 20021122. 16695 16696 166971) ACPI CA Core Subsystem: 16698 16699Fixed a reported problem where an object stored to a Method Local 16700or Arg was not copied to a new object during the store - the 16701object pointer was simply copied to the Local/Arg. This caused 16702all subsequent operations on the Local/Arg to also affect the 16703original source of the store operation. 16704 16705Fixed a problem where a store operation to a Method Local or Arg 16706was not completed properly if the Local/Arg contained a reference 16707(from RefOf) to a named field. The general-purpose store-to- 16708namespace-node code is now used so that this case is handled 16709automatically. 16710 16711Fixed a problem where the internal object copy routine would cause 16712a protection fault if the object being copied was a Package and 16713contained either 1) a NULL package element or 2) a nested sub- 16714package. 16715 16716Fixed a problem with the GPE initialization that resulted from an 16717ambiguity in the ACPI specification. One section of the 16718specification states that both the address and length of the GPE 16719block must be zero if the block is not supported. Another section 16720implies that only the address need be zero if the block is not 16721supported. The code has been changed so that both the address and 16722the length must be non-zero to indicate a valid GPE block (i.e., 16723if either the address or the length is zero, the GPE block is 16724invalid.) 16725 16726Code and Data Size: Current core subsystem library sizes are shown 16727below. These are the code and data sizes for the acpica.lib 16728produced by the Microsoft Visual C++ 6.0 compiler, and these 16729values do not include any ACPI driver or OSPM code. The debug 16730version of the code includes the debug output trace mechanism and 16731has a much larger code and data size. Note that these values will 16732vary depending on the efficiency of the compiler and the compiler 16733options used during generation. 16734 16735 Previous Release 16736 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16737 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16738 Current Release: 16739 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16740 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16741 16742 167432) Linux 16744 16745Cleaned up EC driver. Exported an external EC read/write 16746interface. By going through this, other drivers (most notably 16747sonypi) will be able to serialize access to the EC. 16748 16749 167503) iASL Compiler/Disassembler 16751 16752Implemented support to optionally generate include files for both 16753ASM and C (the -i switch). This simplifies BIOS development by 16754automatically creating include files that contain external 16755declarations for the symbols that are created within the 16756 16757(optionally generated) ASM and C AML source files. 16758 16759 16760---------------------------------------- 1676115 November 2002. Summary of changes for version 20021115. 16762 167631) ACPI CA Core Subsystem: 16764 16765Fixed a memory leak problem where an error during resolution of 16766 16767method arguments during a method invocation from another method 16768failed to cleanup properly by deleting all successfully resolved 16769argument objects. 16770 16771Fixed a problem where the target of the Index() operator was not 16772correctly constructed if the source object was a package. This 16773problem has not been detected because the use of a target operand 16774with Index() is very rare. 16775 16776Fixed a problem with the Index() operator where an attempt was 16777made to delete the operand objects twice. 16778 16779Fixed a problem where an attempt was made to delete an operand 16780twice during execution of the CondRefOf() operator if the target 16781did not exist. 16782 16783Implemented the first of perhaps several internal create object 16784functions that create and initialize a specific object type. This 16785consolidates duplicated code wherever the object is created, thus 16786shrinking the size of the subsystem. 16787 16788Implemented improved debug/error messages for errors that occur 16789during nested method invocations. All executing method pathnames 16790are displayed (with the error) as the call stack is unwound - thus 16791simplifying debug. 16792 16793Fixed a problem introduced in the 10/02 release that caused 16794premature deletion of a buffer object if a buffer was used as an 16795ASL operand where an integer operand is required (Thus causing an 16796implicit object conversion from Buffer to Integer.) The change in 16797the 10/02 release was attempting to fix a memory leak (albeit 16798incorrectly.) 16799 16800Code and Data Size: Current core subsystem library sizes are shown 16801below. These are the code and data sizes for the acpica.lib 16802produced by the Microsoft Visual C++ 6.0 compiler, and these 16803values do not include any ACPI driver or OSPM code. The debug 16804version of the code includes the debug output trace mechanism and 16805has a much larger code and data size. Note that these values will 16806vary depending on the efficiency of the compiler and the compiler 16807options used during generation. 16808 16809 Previous Release 16810 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16811 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16812 Current Release: 16813 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16814 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16815 16816 168172) Linux 16818 16819Changed the implementation of the ACPI semaphores to use down() 16820instead of down_interruptable(). It is important that the 16821execution of ACPI control methods not be interrupted by signals. 16822Methods must run to completion, or the system may be left in an 16823unknown/unstable state. 16824 16825Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16826(Shawn Starr) 16827 16828 168293) iASL Compiler/Disassembler 16830 16831 16832Changed the default location of output files. All output files 16833are now placed in the current directory by default instead of in 16834the directory of the source file. This change may affect some 16835existing makefiles, but it brings the behavior of the compiler in 16836line with other similar tools. The location of the output files 16837can be overridden with the -p command line switch. 16838 16839 16840---------------------------------------- 1684111 November 2002. Summary of changes for version 20021111. 16842 16843 168440) ACPI Specification 2.0B is released and is now available at: 16845http://www.acpi.info/index.html 16846 16847 168481) ACPI CA Core Subsystem: 16849 16850Implemented support for the ACPI 2.0 SMBus Operation Regions. 16851This includes the early detection and handoff of the request to 16852the SMBus region handler (avoiding all of the complex field 16853support code), and support for the bidirectional return packet 16854from an SMBus write operation. This paves the way for the 16855development of SMBus drivers in each host operating system. 16856 16857Fixed a problem where the semaphore WAIT_FOREVER constant was 16858defined as 32 bits, but must be 16 bits according to the ACPI 16859specification. This had the side effect of causing ASL 16860Mutex/Event timeouts even though the ASL code requested a wait 16861forever. Changed all internal references to the ACPI timeout 16862parameter to 16 bits to prevent future problems. Changed the name 16863of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16864 16865Code and Data Size: Current core subsystem library sizes are shown 16866below. These are the code and data sizes for the acpica.lib 16867produced by the Microsoft Visual C++ 6.0 compiler, and these 16868values do not include any ACPI driver or OSPM code. The debug 16869version of the code includes the debug output trace mechanism and 16870has a much larger code and data size. Note that these values will 16871vary depending on the efficiency of the compiler and the compiler 16872options used during generation. 16873 16874 Previous Release 16875 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16876 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16877 Current Release: 16878 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16879 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16880 16881 168822) Linux 16883 16884Module loading/unloading fixes (John Cagle) 16885 16886 168873) iASL Compiler/Disassembler 16888 16889Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16890 16891Implemented support for the disassembly of all SMBus protocol 16892keywords (SMBQuick, SMBWord, etc.) 16893 16894---------------------------------------- 1689501 November 2002. Summary of changes for version 20021101. 16896 16897 168981) ACPI CA Core Subsystem: 16899 16900Fixed a problem where platforms that have a GPE1 block but no GPE0 16901block were not handled correctly. This resulted in a "GPE 16902overlap" error message. GPE0 is no longer required. 16903 16904Removed code added in the previous release that inserted nodes 16905into the namespace in alphabetical order. This caused some side- 16906effects on various machines. The root cause of the problem is 16907still under investigation since in theory, the internal ordering 16908of the namespace nodes should not matter. 16909 16910 16911Enhanced error reporting for the case where a named object is not 16912found during control method execution. The full ACPI namepath 16913(name reference) of the object that was not found is displayed in 16914this case. 16915 16916Note: as a result of the overhaul of the namespace object types in 16917the previous release, the namespace nodes for the predefined 16918scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16919instead of ACPI_TYPE_ANY. This simplifies the namespace 16920management code but may affect code that walks the namespace tree 16921looking for specific object types. 16922 16923Code and Data Size: Current core subsystem library sizes are shown 16924below. These are the code and data sizes for the acpica.lib 16925produced by the Microsoft Visual C++ 6.0 compiler, and these 16926values do not include any ACPI driver or OSPM code. The debug 16927version of the code includes the debug output trace mechanism and 16928has a much larger code and data size. Note that these values will 16929vary depending on the efficiency of the compiler and the compiler 16930options used during generation. 16931 16932 Previous Release 16933 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16934 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16935 Current Release: 16936 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16937 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16938 16939 169402) Linux 16941 16942Fixed a problem introduced in the previous release where the 16943Processor and Thermal objects were not recognized and installed in 16944/proc. This was related to the scope type change described above. 16945 16946 169473) iASL Compiler/Disassembler 16948 16949Implemented the -g option to get all of the required ACPI tables 16950from the registry and save them to files (Windows version of the 16951compiler only.) The required tables are the FADT, FACS, and DSDT. 16952 16953Added ACPI table checksum validation during table disassembly in 16954order to catch corrupted tables. 16955 16956 16957---------------------------------------- 1695822 October 2002. Summary of changes for version 20021022. 16959 169601) ACPI CA Core Subsystem: 16961 16962Implemented a restriction on the Scope operator that the target 16963must already exist in the namespace at the time the operator is 16964encountered (during table load or method execution). In other 16965words, forward references are not allowed and Scope() cannot 16966create a new object. This changes the previous behavior where the 16967interpreter would create the name if not found. This new behavior 16968correctly enables the search-to-root algorithm during namespace 16969lookup of the target name. Because of this upsearch, this fixes 16970the known Compaq _SB_.OKEC problem and makes both the AML 16971interpreter and iASL compiler compatible with other ACPI 16972implementations. 16973 16974Completed a major overhaul of the internal ACPI object types for 16975the ACPI Namespace and the associated operand objects. Many of 16976these types had become obsolete with the introduction of the two- 16977pass namespace load. This cleanup simplifies the code and makes 16978the entire namespace load mechanism much clearer and easier to 16979understand. 16980 16981Improved debug output for tracking scope opening/closing to help 16982diagnose scoping issues. The old scope name as well as the new 16983scope name are displayed. Also improved error messages for 16984problems with ASL Mutex objects and error messages for GPE 16985problems. 16986 16987Cleaned up the namespace dump code, removed obsolete code. 16988 16989All string output (for all namespace/object dumps) now uses the 16990common ACPI string output procedure which handles escapes properly 16991and does not emit non-printable characters. 16992 16993Fixed some issues with constants in the 64-bit version of the 16994local C library (utclib.c) 16995 16996 169972) Linux 16998 16999EC Driver: No longer attempts to acquire the Global Lock at 17000interrupt level. 17001 17002 170033) iASL Compiler/Disassembler 17004 17005Implemented ACPI 2.0B grammar change that disallows all Type 1 and 170062 opcodes outside of a control method. This means that the 17007"executable" operators (versus the "namespace" operators) cannot 17008be used at the table level; they can only be used within a control 17009method. 17010 17011Implemented the restriction on the Scope() operator where the 17012target must already exist in the namespace at the time the 17013operator is encountered (during ASL compilation). In other words, 17014forward references are not allowed and Scope() cannot create a new 17015object. This makes the iASL compiler compatible with other ACPI 17016implementations and makes the Scope() implementation adhere to the 17017ACPI specification. 17018 17019Fixed a problem where namepath optimization for the Alias operator 17020was optimizing the wrong path (of the two namepaths.) This caused 17021a "Missing alias link" error message. 17022 17023Fixed a problem where an "unknown reserved name" warning could be 17024incorrectly generated for names like "_SB" when the trailing 17025underscore is not used in the original ASL. 17026 17027Fixed a problem where the reserved name check did not handle 17028NamePaths with multiple NameSegs correctly. The first nameseg of 17029the NamePath was examined instead of the last NameSeg. 17030 17031 17032---------------------------------------- 17033 1703402 October 2002. Summary of changes for this release. 17035 17036 170371) ACPI CA Core Subsystem version 20021002: 17038 17039Fixed a problem where a store/copy of a string to an existing 17040string did not always set the string length properly in the String 17041object. 17042 17043Fixed a reported problem with the ToString operator where the 17044behavior was identical to the ToHexString operator instead of just 17045simply converting a raw buffer to a string data type. 17046 17047Fixed a problem where CopyObject and the other "explicit" 17048conversion operators were not updating the internal namespace node 17049type as part of the store operation. 17050 17051Fixed a memory leak during implicit source operand conversion 17052where the original object was not deleted if it was converted to a 17053new object of a different type. 17054 17055Enhanced error messages for all problems associated with namespace 17056lookups. Common procedure generates and prints the lookup name as 17057well as the formatted status. 17058 17059Completed implementation of a new design for the Alias support 17060within the namespace. The existing design did not handle the case 17061where a new object was assigned to one of the two names due to the 17062use of an explicit conversion operator, resulting in the two names 17063pointing to two different objects. The new design simply points 17064the Alias name to the original name node - not to the object. 17065This results in a level of indirection that must be handled in the 17066name resolution mechanism. 17067 17068Code and Data Size: Current core subsystem library sizes are shown 17069below. These are the code and data sizes for the acpica.lib 17070produced by the Microsoft Visual C++ 6.0 compiler, and these 17071values do not include any ACPI driver or OSPM code. The debug 17072version of the code includes the debug output trace mechanism and 17073has a larger code and data size. Note that these values will vary 17074depending on the efficiency of the compiler and the compiler 17075options used during generation. 17076 17077 Previous Release 17078 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17079 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17080 Current Release: 17081 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 17082 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 17083 17084 170852) Linux 17086 17087Initialize thermal driver's timer before it is used. (Knut 17088Neumann) 17089 17090Allow handling negative celsius values. (Kochi Takayoshi) 17091 17092Fix thermal management and make trip points. R/W (Pavel Machek) 17093 17094Fix /proc/acpi/sleep. (P. Christeas) 17095 17096IA64 fixes. (David Mosberger) 17097 17098Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 17099 17100Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 17101Brodowski) 17102 17103 171043) iASL Compiler/Disassembler 17105 17106Clarified some warning/error messages. 17107 17108 17109---------------------------------------- 1711018 September 2002. Summary of changes for this release. 17111 17112 171131) ACPI CA Core Subsystem version 20020918: 17114 17115Fixed a reported problem with reference chaining (via the Index() 17116and RefOf() operators) in the ObjectType() and SizeOf() operators. 17117The definition of these operators includes the dereferencing of 17118all chained references to return information on the base object. 17119 17120Fixed a problem with stores to indexed package elements - the 17121existing code would not complete the store if an "implicit 17122conversion" was not performed. In other words, if the existing 17123object (package element) was to be replaced completely, the code 17124didn't handle this case. 17125 17126Relaxed typechecking on the ASL "Scope" operator to allow the 17127target name to refer to an object of type Integer, String, or 17128Buffer, in addition to the scoping object types (Device, 17129predefined Scopes, Processor, PowerResource, and ThermalZone.) 17130This allows existing AML code that has workarounds for a bug in 17131Windows to function properly. A warning is issued, however. This 17132affects both the AML interpreter and the iASL compiler. Below is 17133an example of this type of ASL code: 17134 17135 Name(DEB,0x00) 17136 Scope(DEB) 17137 { 17138 17139Fixed some reported problems with 64-bit integer support in the 17140local implementation of C library functions (clib.c) 17141 17142 171432) Linux 17144 17145Use ACPI fix map region instead of IOAPIC region, since it is 17146undefined in non-SMP. 17147 17148Ensure that the SCI has the proper polarity and trigger, even on 17149systems that do not have an interrupt override entry in the MADT. 17150 171512.5 big driver reorganization (Pat Mochel) 17152 17153Use early table mapping code from acpitable.c (Andi Kleen) 17154 17155New blacklist entries (Andi Kleen) 17156 17157Blacklist improvements. Split blacklist code out into a separate 17158file. Move checking the blacklist to very early. Previously, we 17159would use ACPI tables, and then halfway through init, check the 17160blacklist -- too late. Now, it's early enough to completely fall- 17161back to non-ACPI. 17162 17163 171643) iASL Compiler/Disassembler version 20020918: 17165 17166Fixed a problem where the typechecking code didn't know that an 17167alias could point to a method. In other words, aliases were not 17168being dereferenced during typechecking. 17169 17170 17171---------------------------------------- 1717229 August 2002. Summary of changes for this release. 17173 171741) ACPI CA Core Subsystem Version 20020829: 17175 17176If the target of a Scope() operator already exists, it must be an 17177object type that actually opens a scope -- such as a Device, 17178Method, Scope, etc. This is a fatal runtime error. Similar error 17179check has been added to the iASL compiler also. 17180 17181Tightened up the namespace load to disallow multiple names in the 17182same scope. This previously was allowed if both objects were of 17183the same type. (i.e., a lookup was the same as entering a new 17184name). 17185 17186 171872) Linux 17188 17189Ensure that the ACPI interrupt has the proper trigger and 17190polarity. 17191 17192local_irq_disable is extraneous. (Matthew Wilcox) 17193 17194Make "acpi=off" actually do what it says, and not use the ACPI 17195interpreter *or* the tables. 17196 17197Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 17198Takayoshi) 17199 17200 172013) iASL Compiler/Disassembler Version 20020829: 17202 17203Implemented namepath optimization for name declarations. For 17204example, a declaration like "Method (\_SB_.ABCD)" would get 17205optimized to "Method (ABCD)" if the declaration is within the 17206\_SB_ scope. This optimization is in addition to the named 17207reference path optimization first released in the previous 17208version. This would seem to complete all possible optimizations 17209for namepaths within the ASL/AML. 17210 17211If the target of a Scope() operator already exists, it must be an 17212object type that actually opens a scope -- such as a Device, 17213Method, Scope, etc. 17214 17215Implemented a check and warning for unreachable code in the same 17216block below a Return() statement. 17217 17218Fixed a problem where the listing file was not generated if the 17219compiler aborted if the maximum error count was exceeded (200). 17220 17221Fixed a problem where the typechecking of method return values was 17222broken. This includes the check for a return value when the 17223method is invoked as a TermArg (a return value is expected.) 17224 17225Fixed a reported problem where EOF conditions during a quoted 17226string or comment caused a fault. 17227 17228 17229---------------------------------------- 1723015 August 2002. Summary of changes for this release. 17231 172321) ACPI CA Core Subsystem Version 20020815: 17233 17234Fixed a reported problem where a Store to a method argument that 17235contains a reference did not perform the indirect store correctly. 17236This problem was created during the conversion to the new 17237reference object model - the indirect store to a method argument 17238code was not updated to reflect the new model. 17239 17240Reworked the ACPI mode change code to better conform to ACPI 2.0, 17241handle corner cases, and improve code legibility (Kochi Takayoshi) 17242 17243Fixed a problem with the pathname parsing for the carat (^) 17244prefix. The heavy use of the carat operator by the new namepath 17245optimization in the iASL compiler uncovered a problem with the AML 17246interpreter handling of this prefix. In the case where one or 17247more carats precede a single nameseg, the nameseg was treated as 17248standalone and the search rule (to root) was inadvertently 17249applied. This could cause both the iASL compiler and the 17250interpreter to find the wrong object or to miss the error that 17251should occur if the object does not exist at that exact pathname. 17252 17253Found and fixed the problem where the HP Pavilion DSDT would not 17254load. This was a relatively minor tweak to the table loading code 17255(a problem caused by the unexpected encounter with a method 17256invocation not within a control method), but it does not solve the 17257overall issue of the execution of AML code at the table level. 17258This investigation is still ongoing. 17259 17260Code and Data Size: Current core subsystem library sizes are shown 17261below. These are the code and data sizes for the acpica.lib 17262produced by the Microsoft Visual C++ 6.0 compiler, and these 17263values do not include any ACPI driver or OSPM code. The debug 17264version of the code includes the debug output trace mechanism and 17265has a larger code and data size. Note that these values will vary 17266depending on the efficiency of the compiler and the compiler 17267options used during generation. 17268 17269 Previous Release 17270 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17271 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17272 Current Release: 17273 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17274 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17275 17276 172772) Linux 17278 17279Remove redundant slab.h include (Brad Hards) 17280 17281Fix several bugs in thermal.c (Herbert Nachtnebel) 17282 17283Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 17284 17285Change acpi_system_suspend to use updated irq functions (Pavel 17286Machek) 17287 17288Export acpi_get_firmware_table (Matthew Wilcox) 17289 17290Use proper root proc entry for ACPI (Kochi Takayoshi) 17291 17292Fix early-boot table parsing (Bjorn Helgaas) 17293 17294 172953) iASL Compiler/Disassembler 17296 17297Reworked the compiler options to make them more consistent and to 17298use two-letter options where appropriate. We were running out of 17299sensible letters. This may break some makefiles, so check the 17300current options list by invoking the compiler with no parameters. 17301 17302Completed the design and implementation of the ASL namepath 17303optimization option for the compiler. This option optimizes all 17304references to named objects to the shortest possible path. The 17305first attempt tries to utilize a single nameseg (4 characters) and 17306the "search-to-root" algorithm used by the interpreter. If that 17307cannot be used (because either the name is not in the search path 17308or there is a conflict with another object with the same name), 17309the pathname is optimized using the carat prefix (usually a 17310shorter string than specifying the entire path from the root.) 17311 17312Implemented support to obtain the DSDT from the Windows registry 17313(when the disassembly option is specified with no input file). 17314Added this code as the implementation for AcpiOsTableOverride in 17315the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 17316utility) to scan memory for the DSDT to the AcpiOsTableOverride 17317function in the DOS OSL to make the disassembler truly OS 17318independent. 17319 17320Implemented a new option to disassemble and compile in one step. 17321When used without an input filename, this option will grab the 17322DSDT from the local machine, disassemble it, and compile it in one 17323step. 17324 17325Added a warning message for invalid escapes (a backslash followed 17326by any character other than the allowable escapes). This catches 17327the quoted string error "\_SB_" (which should be "\\_SB_" ). 17328 17329Also, there are numerous instances in the ACPI specification where 17330this error occurs. 17331 17332Added a compiler option to disable all optimizations. This is 17333basically the "compatibility mode" because by using this option, 17334the AML code will come out exactly the same as other ASL 17335compilers. 17336 17337Added error messages for incorrectly ordered dependent resource 17338functions. This includes: missing EndDependentFn macro at end of 17339dependent resource list, nested dependent function macros (both 17340start and end), and missing StartDependentFn macro. These are 17341common errors that should be caught at compile time. 17342 17343Implemented _OSI support for the disassembler and compiler. _OSI 17344must be included in the namespace for proper disassembly (because 17345the disassembler must know the number of arguments.) 17346 17347Added an "optimization" message type that is optional (off by 17348default). This message is used for all optimizations - including 17349constant folding, integer optimization, and namepath optimization. 17350 17351---------------------------------------- 1735225 July 2002. Summary of changes for this release. 17353 17354 173551) ACPI CA Core Subsystem Version 20020725: 17356 17357The AML Disassembler has been enhanced to produce compilable ASL 17358code and has been integrated into the iASL compiler (see below) as 17359well as the single-step disassembly for the AML debugger and the 17360disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 17361resource templates and macros are fully supported. The 17362disassembler has been tested on over 30 different AML files, 17363producing identical AML when the resulting disassembled ASL file 17364is recompiled with the same ASL compiler. 17365 17366Modified the Resource Manager to allow zero interrupts and zero 17367dma channels during the GetCurrentResources call. This was 17368causing problems on some platforms. 17369 17370Added the AcpiOsRedirectOutput interface to the OSL to simplify 17371output redirection for the AcpiOsPrintf and AcpiOsVprintf 17372interfaces. 17373 17374Code and Data Size: Current core subsystem library sizes are shown 17375below. These are the code and data sizes for the acpica.lib 17376produced by the Microsoft Visual C++ 6.0 compiler, and these 17377values do not include any ACPI driver or OSPM code. The debug 17378version of the code includes the debug output trace mechanism and 17379has a larger code and data size. Note that these values will vary 17380depending on the efficiency of the compiler and the compiler 17381options used during generation. 17382 17383 Previous Release 17384 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17385 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17386 Current Release: 17387 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17388 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17389 17390 173912) Linux 17392 17393Fixed a panic in the EC driver (Dominik Brodowski) 17394 17395Implemented checksum of the R/XSDT itself during Linux table scan 17396(Richard Schaal) 17397 17398 173993) iASL compiler 17400 17401The AML disassembler is integrated into the compiler. The "-d" 17402option invokes the disassembler to completely disassemble an 17403input AML file, producing as output a text ASL file with the 17404extension ".dsl" (to avoid name collisions with existing .asl 17405source files.) A future enhancement will allow the disassembler 17406to obtain the BIOS DSDT from the registry under Windows. 17407 17408Fixed a problem with the VendorShort and VendorLong resource 17409descriptors where an invalid AML sequence was created. 17410 17411Implemented a fix for BufferData term in the ASL parser. It was 17412inadvertently defined twice, allowing invalid syntax to pass and 17413causing reduction conflicts. 17414 17415Fixed a problem where the Ones opcode could get converted to a 17416value of zero if "Ones" was used where a byte, word or dword value 17417was expected. The 64-bit value is now truncated to the correct 17418size with the correct value. 17419 17420 17421 17422---------------------------------------- 1742302 July 2002. Summary of changes for this release. 17424 17425 174261) ACPI CA Core Subsystem Version 20020702: 17427 17428The Table Manager code has been restructured to add several new 17429features. Tables that are not required by the core subsystem 17430(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 17431validated in any way and are returned from AcpiGetFirmwareTable if 17432requested. The AcpiOsTableOverride interface is now called for 17433each table that is loaded by the subsystem in order to allow the 17434host to override any table it chooses. Previously, only the DSDT 17435could be overridden. Added one new files, tbrsdt.c and 17436tbgetall.c. 17437 17438Fixed a problem with the conversion of internal package objects to 17439external objects (when a package is returned from a control 17440method.) The return buffer length was set to zero instead of the 17441proper length of the package object. 17442 17443Fixed a reported problem with the use of the RefOf and DeRefOf 17444operators when passing reference arguments to control methods. A 17445new type of Reference object is used internally for references 17446produced by the RefOf operator. 17447 17448Added additional error messages in the Resource Manager to explain 17449AE_BAD_DATA errors when they occur during resource parsing. 17450 17451Split the AcpiEnableSubsystem into two primitives to enable a 17452finer granularity initialization sequence. These two calls should 17453be called in this order: AcpiEnableSubsystem (flags), 17454AcpiInitializeObjects (flags). The flags parameter remains the 17455same. 17456 17457 174582) Linux 17459 17460Updated the ACPI utilities module to understand the new style of 17461fully resolved package objects that are now returned from the core 17462subsystem. This eliminates errors of the form: 17463 17464 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 17465 acpi_utils-0430 [145] acpi_evaluate_reference: 17466 Invalid element in package (not a device reference) 17467 17468The method evaluation utility uses the new buffer allocation 17469scheme instead of calling AcpiEvaluate Object twice. 17470 17471Added support for ECDT. This allows the use of the Embedded 17472 17473Controller before the namespace has been fully initialized, which 17474is necessary for ACPI 2.0 support, and for some laptops to 17475initialize properly. (Laptops using ECDT are still rare, so only 17476limited testing was performed of the added functionality.) 17477 17478Fixed memory leaks in the EC driver. 17479 17480Eliminated a brittle code structure in acpi_bus_init(). 17481 17482Eliminated the acpi_evaluate() helper function in utils.c. It is 17483no longer needed since acpi_evaluate_object can optionally 17484allocate memory for the return object. 17485 17486Implemented fix for keyboard hang when getting battery readings on 17487some systems (Stephen White) 17488 17489PCI IRQ routing update (Dominik Brodowski) 17490 17491Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17492support 17493 17494---------------------------------------- 1749511 June 2002. Summary of changes for this release. 17496 17497 174981) ACPI CA Core Subsystem Version 20020611: 17499 17500Fixed a reported problem where constants such as Zero and One 17501appearing within _PRT packages were not handled correctly within 17502the resource manager code. Originally reported against the ASL 17503compiler because the code generator now optimizes integers to 17504their minimal AML representation (i.e. AML constants if possible.) 17505The _PRT code now handles all AML constant opcodes correctly 17506(Zero, One, Ones, Revision). 17507 17508Fixed a problem with the Concatenate operator in the AML 17509interpreter where a buffer result object was incorrectly marked as 17510not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17511 17512All package sub-objects are now fully resolved before they are 17513returned from the external ACPI interfaces. This means that name 17514strings are resolved to object handles, and constant operators 17515(Zero, One, Ones, Revision) are resolved to Integers. 17516 17517Implemented immediate resolution of the AML Constant opcodes 17518(Zero, One, Ones, Revision) to Integer objects upon detection 17519within the AML stream. This has simplified and reduced the 17520generated code size of the subsystem by eliminating about 10 17521switch statements for these constants (which previously were 17522contained in Reference objects.) The complicating issues are that 17523the Zero opcode is used as a "placeholder" for unspecified 17524optional target operands and stores to constants are defined to be 17525no-ops. 17526 17527Code and Data Size: Current core subsystem library sizes are shown 17528below. These are the code and data sizes for the acpica.lib 17529produced by the Microsoft Visual C++ 6.0 compiler, and these 17530values do not include any ACPI driver or OSPM code. The debug 17531version of the code includes the debug output trace mechanism and 17532has a larger code and data size. Note that these values will vary 17533depending on the efficiency of the compiler and the compiler 17534options used during generation. 17535 17536 Previous Release 17537 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17538 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17539 Current Release: 17540 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17541 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17542 17543 175442) Linux 17545 17546 17547Added preliminary support for obtaining _TRA data for PCI root 17548bridges (Bjorn Helgaas). 17549 17550 175513) iASL Compiler Version X2046: 17552 17553Fixed a problem where the "_DDN" reserved name was defined to be a 17554control method with one argument. There are no arguments, and 17555_DDN does not have to be a control method. 17556 17557Fixed a problem with the Linux version of the compiler where the 17558source lines printed with error messages were the wrong lines. 17559This turned out to be the "LF versus CR/LF" difference between 17560Windows and Unix. This appears to be the longstanding issue 17561concerning listing output and error messages. 17562 17563Fixed a problem with the Linux version of compiler where opcode 17564names within error messages were wrong. This was caused by a 17565slight difference in the output of the Flex tool on Linux versus 17566Windows. 17567 17568Fixed a problem with the Linux compiler where the hex output files 17569contained some garbage data caused by an internal buffer overrun. 17570 17571 17572---------------------------------------- 1757317 May 2002. Summary of changes for this release. 17574 17575 175761) ACPI CA Core Subsystem Version 20020517: 17577 17578Implemented a workaround to an BIOS bug discovered on the HP 17579OmniBook where the FADT revision number and the table size are 17580inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17581behavior is to fallback to using only the ACPI 1.0 fields of the 17582FADT if the table is too small to be a ACPI 2.0 table as claimed 17583by the revision number. Although this is a BIOS bug, this is a 17584case where the workaround is simple enough and with no side 17585effects, so it seemed prudent to add it. A warning message is 17586issued, however. 17587 17588Implemented minimum size checks for the fixed-length ACPI tables - 17589- the FADT and FACS, as well as consistency checks between the 17590revision number and the table size. 17591 17592Fixed a reported problem in the table override support where the 17593new table pointer was incorrectly treated as a physical address 17594instead of a logical address. 17595 17596Eliminated the use of the AE_AML_ERROR exception and replaced it 17597with more descriptive codes. 17598 17599Fixed a problem where an exception would occur if an ASL Field was 17600defined with no named Field Units underneath it (used by some 17601index fields). 17602 17603Code and Data Size: Current core subsystem library sizes are shown 17604below. These are the code and data sizes for the acpica.lib 17605produced by the Microsoft Visual C++ 6.0 compiler, and these 17606values do not include any ACPI driver or OSPM code. The debug 17607version of the code includes the debug output trace mechanism and 17608has a larger code and data size. Note that these values will vary 17609depending on the efficiency of the compiler and the compiler 17610options used during generation. 17611 17612 Previous Release 17613 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17614 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17615 Current Release: 17616 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17617 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17618 17619 17620 176212) Linux 17622 17623Much work done on ACPI init (MADT and PCI IRQ routing support). 17624(Paul D. and Dominik Brodowski) 17625 17626Fix PCI IRQ-related panic on boot (Sam Revitch) 17627 17628Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17629 17630Fix "MHz" typo (Dominik Brodowski) 17631 17632Fix RTC year 2000 issue (Dominik Brodowski) 17633 17634Preclude multiple button proc entries (Eric Brunet) 17635 17636Moved arch-specific code out of include/platform/aclinux.h 17637 176383) iASL Compiler Version X2044: 17639 17640Implemented error checking for the string used in the EISAID macro 17641(Usually used in the definition of the _HID object.) The code now 17642strictly enforces the PnP format - exactly 7 characters, 3 17643uppercase letters and 4 hex digits. 17644 17645If a raw string is used in the definition of the _HID object 17646(instead of the EISAID macro), the string must contain all 17647alphanumeric characters (e.g., "*PNP0011" is not allowed because 17648of the asterisk.) 17649 17650Implemented checking for invalid use of ACPI reserved names for 17651most of the name creation operators (Name, Device, Event, Mutex, 17652OperationRegion, PowerResource, Processor, and ThermalZone.) 17653Previously, this check was only performed for control methods. 17654 17655Implemented an additional check on the Name operator to emit an 17656error if a reserved name that must be implemented in ASL as a 17657control method is used. We know that a reserved name must be a 17658method if it is defined with input arguments. 17659 17660The warning emitted when a namespace object reference is not found 17661during the cross reference phase has been changed into an error. 17662The "External" directive should be used for names defined in other 17663modules. 17664 17665 176664) Tools and Utilities 17667 17668The 16-bit tools (adump16 and aexec16) have been regenerated and 17669tested. 17670 17671Fixed a problem with the output of both acpidump and adump16 where 17672the indentation of closing parentheses and brackets was not 17673 17674aligned properly with the parent block. 17675 17676 17677---------------------------------------- 1767803 May 2002. Summary of changes for this release. 17679 17680 176811) ACPI CA Core Subsystem Version 20020503: 17682 17683Added support a new OSL interface that allows the host operating 17684 17685system software to override the DSDT found in the firmware - 17686AcpiOsTableOverride. With this interface, the OSL can examine the 17687version of the firmware DSDT and replace it with a different one 17688if desired. 17689 17690Added new external interfaces for accessing ACPI registers from 17691device drivers and other system software - AcpiGetRegister and 17692AcpiSetRegister. This was simply an externalization of the 17693existing AcpiHwBitRegister interfaces. 17694 17695Fixed a regression introduced in the previous build where the 17696ASL/AML CreateField operator always returned an error, 17697"destination must be a NS Node". 17698 17699Extended the maximum time (before failure) to successfully enable 17700ACPI mode to 3 seconds. 17701 17702Code and Data Size: Current core subsystem library sizes are shown 17703below. These are the code and data sizes for the acpica.lib 17704produced by the Microsoft Visual C++ 6.0 compiler, and these 17705values do not include any ACPI driver or OSPM code. The debug 17706version of the code includes the debug output trace mechanism and 17707has a larger code and data size. Note that these values will vary 17708depending on the efficiency of the compiler and the compiler 17709options used during generation. 17710 17711 Previous Release 17712 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17713 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17714 Current Release: 17715 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17716 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17717 17718 177192) Linux 17720 17721Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17722free. While 3 out of 4 of our in-house systems work fine, the last 17723one still hangs when testing the LAPIC timer. 17724 17725Renamed many files in 2.5 kernel release to omit "acpi_" from the 17726name. 17727 17728Added warning on boot for Presario 711FR. 17729 17730Sleep improvements (Pavel Machek) 17731 17732ACPI can now be built without CONFIG_PCI enabled. 17733 17734IA64: Fixed memory map functions (JI Lee) 17735 17736 177373) iASL Compiler Version X2043: 17738 17739Added support to allow the compiler to be integrated into the MS 17740VC++ development environment for one-button compilation of single 17741files or entire projects -- with error-to-source-line mapping. 17742 17743Implemented support for compile-time constant folding for the 17744Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17745specification. This allows the ASL writer to use expressions 17746instead of Integer/Buffer/String constants in terms that must 17747evaluate to constants at compile time and will also simplify the 17748emitted AML in any such sub-expressions that can be folded 17749(evaluated at compile-time.) This increases the size of the 17750compiler significantly because a portion of the ACPI CA AML 17751interpreter is included within the compiler in order to pre- 17752evaluate constant expressions. 17753 17754 17755Fixed a problem with the "Unicode" ASL macro that caused the 17756compiler to fault. (This macro is used in conjunction with the 17757_STR reserved name.) 17758 17759Implemented an AML opcode optimization to use the Zero, One, and 17760Ones opcodes where possible to further reduce the size of integer 17761constants and thus reduce the overall size of the generated AML 17762code. 17763 17764Implemented error checking for new reserved terms for ACPI version 177652.0A. 17766 17767Implemented the -qr option to display the current list of ACPI 17768reserved names known to the compiler. 17769 17770Implemented the -qc option to display the current list of ASL 17771operators that are allowed within constant expressions and can 17772therefore be folded at compile time if the operands are constants. 17773 17774 177754) Documentation 17776 17777Updated the Programmer's Reference for new interfaces, data types, 17778and memory allocation model options. 17779 17780Updated the iASL Compiler User Reference to apply new format and 17781add information about new features and options. 17782 17783---------------------------------------- 1778419 April 2002. Summary of changes for this release. 17785 177861) ACPI CA Core Subsystem Version 20020419: 17787 17788The source code base for the Core Subsystem has been completely 17789cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17790versions. The Lint option files used are included in the 17791/acpi/generate/lint directory. 17792 17793Implemented enhanced status/error checking across the entire 17794Hardware manager subsystem. Any hardware errors (reported from 17795the OSL) are now bubbled up and will abort a running control 17796method. 17797 17798 17799Fixed a problem where the per-ACPI-table integer width (32 or 64) 17800was stored only with control method nodes, causing a fault when 17801non-control method code was executed during table loading. The 17802solution implemented uses a global variable to indicate table 17803width across the entire ACPI subsystem. Therefore, ACPI CA does 17804not support mixed integer widths across different ACPI tables 17805(DSDT, SSDT). 17806 17807Fixed a problem where NULL extended fields (X fields) in an ACPI 178082.0 ACPI FADT caused the table load to fail. Although the 17809existing ACPI specification is a bit fuzzy on this topic, the new 17810behavior is to fall back on a ACPI 1.0 field if the corresponding 17811ACPI 2.0 X field is zero (even though the table revision indicates 17812a full ACPI 2.0 table.) The ACPI specification will be updated to 17813clarify this issue. 17814 17815Fixed a problem with the SystemMemory operation region handler 17816where memory was always accessed byte-wise even if the AML- 17817specified access width was larger than a byte. This caused 17818problems on systems with memory-mapped I/O. Memory is now 17819accessed with the width specified. On systems that do not support 17820non-aligned transfers, a check is made to guarantee proper address 17821alignment before proceeding in order to avoid an AML-caused 17822alignment fault within the kernel. 17823 17824 17825Fixed a problem with the ExtendedIrq resource where only one byte 17826of the 4-byte Irq field was extracted. 17827 17828Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17829function was out of date and required a rewrite. 17830 17831Code and Data Size: Current core subsystem library sizes are shown 17832below. These are the code and data sizes for the acpica.lib 17833produced by the Microsoft Visual C++ 6.0 compiler, and these 17834values do not include any ACPI driver or OSPM code. The debug 17835version of the code includes the debug output trace mechanism and 17836has a larger code and data size. Note that these values will vary 17837depending on the efficiency of the compiler and the compiler 17838options used during generation. 17839 17840 Previous Release 17841 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17842 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17843 Current Release: 17844 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17845 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17846 17847 178482) Linux 17849 17850PCI IRQ routing fixes (Dominik Brodowski) 17851 17852 178533) iASL Compiler Version X2042: 17854 17855Implemented an additional compile-time error check for a field 17856unit whose size + minimum access width would cause a run-time 17857access beyond the end-of-region. Previously, only the field size 17858itself was checked. 17859 17860The Core subsystem and iASL compiler now share a common parse 17861object in preparation for compile-time evaluation of the type 178623/4/5 ASL operators. 17863 17864 17865---------------------------------------- 17866Summary of changes for this release: 03_29_02 17867 178681) ACPI CA Core Subsystem Version 20020329: 17869 17870Implemented support for late evaluation of TermArg operands to 17871Buffer and Package objects. This allows complex expressions to be 17872used in the declarations of these object types. 17873 17874Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 178751.0, if the field was larger than 32 bits, it was returned as a 17876buffer - otherwise it was returned as an integer. In ACPI 2.0, 17877the field is returned as a buffer only if the field is larger than 1787864 bits. The TableRevision is now considered when making this 17879conversion to avoid incompatibility with existing ASL code. 17880 17881Implemented logical addressing for AcpiOsGetRootPointer. This 17882allows an RSDP with either a logical or physical address. With 17883this support, the host OS can now override all ACPI tables with 17884one logical RSDP. Includes implementation of "typed" pointer 17885support to allow a common data type for both physical and logical 17886pointers internally. This required a change to the 17887AcpiOsGetRootPointer interface. 17888 17889Implemented the use of ACPI 2.0 Generic Address Structures for all 17890GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17891mapped I/O for these ACPI features. 17892 17893Initialization now ignores not only non-required tables (All 17894tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17895not validate the table headers of unrecognized tables. 17896 17897Fixed a problem where a notify handler could only be 17898installed/removed on an object of type Device. All "notify" 17899 17900objects are now supported -- Devices, Processor, Power, and 17901Thermal. 17902 17903Removed most verbosity from the ACPI_DB_INFO debug level. Only 17904critical information is returned when this debug level is enabled. 17905 17906Code and Data Size: Current core subsystem library sizes are shown 17907below. These are the code and data sizes for the acpica.lib 17908produced by the Microsoft Visual C++ 6.0 compiler, and these 17909values do not include any ACPI driver or OSPM code. The debug 17910version of the code includes the debug output trace mechanism and 17911has a larger code and data size. Note that these values will vary 17912depending on the efficiency of the compiler and the compiler 17913options used during generation. 17914 17915 Previous Release 17916 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17917 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17918 Current Release: 17919 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17920 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17921 17922 179232) Linux: 17924 17925The processor driver (acpi_processor.c) now fully supports ACPI 179262.0-based processor performance control (e.g. Intel(R) 17927SpeedStep(TM) technology) Note that older laptops that only have 17928the Intel "applet" interface are not supported through this. The 17929'limit' and 'performance' interface (/proc) are fully functional. 17930[Note that basic policy for controlling performance state 17931transitions will be included in the next version of ospmd.] The 17932idle handler was modified to more aggressively use C2, and PIIX4 17933errata handling underwent a complete overhaul (big thanks to 17934Dominik Brodowski). 17935 17936Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17937based devices in the ACPI namespace are now dynamically bound 17938(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17939This allows, among other things, ACPI to resolve bus numbers for 17940subordinate PCI bridges. 17941 17942Enhanced PCI IRQ routing to get the proper bus number for _PRT 17943entries defined underneath PCI bridges. 17944 17945Added IBM 600E to bad bios list due to invalid _ADR value for 17946PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17947 17948In the process of adding full MADT support (e.g. IOAPIC) for IA32 17949(acpi.c, mpparse.c) -- stay tuned. 17950 17951Added back visual differentiation between fixed-feature and 17952control-method buttons in dmesg. Buttons are also subtyped (e.g. 17953button/power/PWRF) to simplify button identification. 17954 17955We no longer use -Wno-unused when compiling debug. Please ignore 17956any "_THIS_MODULE defined but not used" messages. 17957 17958Can now shut down the system using "magic sysrq" key. 17959 17960 179613) iASL Compiler version 2041: 17962 17963Fixed a problem where conversion errors for hex/octal/decimal 17964constants were not reported. 17965 17966Implemented a fix for the General Register template Address field. 17967This field was 8 bits when it should be 64. 17968 17969Fixed a problem where errors/warnings were no longer being emitted 17970within the listing output file. 17971 17972Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17973exactly 4 characters, alphanumeric only. 17974 17975 17976 17977 17978---------------------------------------- 17979Summary of changes for this release: 03_08_02 17980 17981 179821) ACPI CA Core Subsystem Version 20020308: 17983 17984Fixed a problem with AML Fields where the use of the "AccessAny" 17985keyword could cause an interpreter error due to attempting to read 17986or write beyond the end of the parent Operation Region. 17987 17988Fixed a problem in the SystemMemory Operation Region handler where 17989an attempt was made to map memory beyond the end of the region. 17990This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17991errors on some Linux systems. 17992 17993Fixed a problem where the interpreter/namespace "search to root" 17994algorithm was not functioning for some object types. Relaxed the 17995internal restriction on the search to allow upsearches for all 17996external object types as well as most internal types. 17997 17998 179992) Linux: 18000 18001We now use safe_halt() macro versus individual calls to sti | hlt. 18002 18003Writing to the processor limit interface should now work. "echo 1" 18004will increase the limit, 2 will decrease, and 0 will reset to the 18005 18006default. 18007 18008 180093) ASL compiler: 18010 18011Fixed segfault on Linux version. 18012 18013 18014---------------------------------------- 18015Summary of changes for this release: 02_25_02 18016 180171) ACPI CA Core Subsystem: 18018 18019 18020Fixed a problem where the GPE bit masks were not initialized 18021properly, causing erratic GPE behavior. 18022 18023Implemented limited support for multiple calling conventions. The 18024code can be generated with either the VPL (variable parameter 18025list, or "C") convention, or the FPL (fixed parameter list, or 18026"Pascal") convention. The core subsystem is about 3.4% smaller 18027when generated with FPL. 18028 18029 180302) Linux 18031 18032Re-add some /proc/acpi/event functionality that was lost during 18033the rewrite 18034 18035Resolved issue with /proc events for fixed-feature buttons showing 18036up as the system device. 18037 18038Fixed checks on C2/C3 latencies to be inclusive of maximum values. 18039 18040Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 18041 18042Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 18043 18044Fixed limit interface & usage to fix bugs with passive cooling 18045hysterisis. 18046 18047Restructured PRT support. 18048 18049 18050---------------------------------------- 18051Summary of changes for this label: 02_14_02 18052 18053 180541) ACPI CA Core Subsystem: 18055 18056Implemented support in AcpiLoadTable to allow loading of FACS and 18057FADT tables. 18058 18059Support for the now-obsolete interim 0.71 64-bit ACPI tables has 18060been removed. All 64-bit platforms should be migrated to the ACPI 180612.0 tables. The actbl71.h header has been removed from the source 18062tree. 18063 18064All C macros defined within the subsystem have been prefixed with 18065"ACPI_" to avoid collision with other system include files. 18066 18067Removed the return value for the two AcpiOsPrint interfaces, since 18068it is never used and causes lint warnings for ignoring the return 18069value. 18070 18071Added error checking to all internal mutex acquire and release 18072calls. Although a failure from one of these interfaces is 18073probably a fatal system error, these checks will cause the 18074immediate abort of the currently executing method or interface. 18075 18076Fixed a problem where the AcpiSetCurrentResources interface could 18077fault. This was a side effect of the deployment of the new memory 18078allocation model. 18079 18080Fixed a couple of problems with the Global Lock support introduced 18081in the last major build. The "common" (1.0/2.0) internal FACS was 18082being overwritten with the FACS signature and clobbering the 18083Global Lock pointer. Also, the actual firmware FACS was being 18084unmapped after construction of the "common" FACS, preventing 18085access to the actual Global Lock field within it. The "common" 18086internal FACS is no longer installed as an actual ACPI table; it 18087is used simply as a global. 18088 18089Code and Data Size: Current core subsystem library sizes are shown 18090below. These are the code and data sizes for the acpica.lib 18091produced by the Microsoft Visual C++ 6.0 compiler, and these 18092values do not include any ACPI driver or OSPM code. The debug 18093version of the code includes the debug output trace mechanism and 18094has a larger code and data size. Note that these values will vary 18095depending on the efficiency of the compiler and the compiler 18096options used during generation. 18097 18098 Previous Release (02_07_01) 18099 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18100 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18101 Current Release: 18102 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18103 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18104 18105 181062) Linux 18107 18108Updated Linux-specific code for core macro and OSL interface 18109changes described above. 18110 18111Improved /proc/acpi/event. It now can be opened only once and has 18112proper poll functionality. 18113 18114Fixed and restructured power management (acpi_bus). 18115 18116Only create /proc "view by type" when devices of that class exist. 18117 18118Fixed "charging/discharging" bug (and others) in acpi_battery. 18119 18120Improved thermal zone code. 18121 18122 181233) ASL Compiler, version X2039: 18124 18125 18126Implemented the new compiler restriction on ASL String hex/octal 18127escapes to non-null, ASCII values. An error results if an invalid 18128value is used. (This will require an ACPI 2.0 specification 18129change.) 18130 18131AML object labels that are output to the optional C and ASM source 18132are now prefixed with both the ACPI table signature and table ID 18133to help guarantee uniqueness within a large BIOS project. 18134 18135 18136---------------------------------------- 18137Summary of changes for this label: 02_01_02 18138 181391) ACPI CA Core Subsystem: 18140 18141ACPI 2.0 support is complete in the entire Core Subsystem and the 18142ASL compiler. All new ACPI 2.0 operators are implemented and all 18143other changes for ACPI 2.0 support are complete. With 18144simultaneous code and data optimizations throughout the subsystem, 18145ACPI 2.0 support has been implemented with almost no additional 18146cost in terms of code and data size. 18147 18148Implemented a new mechanism for allocation of return buffers. If 18149the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 18150be allocated on behalf of the caller. Consolidated all return 18151buffer validation and allocation to a common procedure. Return 18152buffers will be allocated via the primary OSL allocation interface 18153since it appears that a separate pool is not needed by most users. 18154If a separate pool is required for these buffers, the caller can 18155still use the original mechanism and pre-allocate the buffer(s). 18156 18157Implemented support for string operands within the DerefOf 18158operator. 18159 18160Restructured the Hardware and Event managers to be table driven, 18161simplifying the source code and reducing the amount of generated 18162code. 18163 18164Split the common read/write low-level ACPI register bitfield 18165procedure into a separate read and write, simplifying the code 18166considerably. 18167 18168Obsoleted the AcpiOsCallocate OSL interface. This interface was 18169used only a handful of times and didn't have enough critical mass 18170for a separate interface. Replaced with a common calloc procedure 18171in the core. 18172 18173Fixed a reported problem with the GPE number mapping mechanism 18174that allows GPE1 numbers to be non-contiguous with GPE0. 18175Reorganized the GPE information and shrunk a large array that was 18176originally large enough to hold info for all possible GPEs (256) 18177to simply large enough to hold all GPEs up to the largest GPE 18178number on the machine. 18179 18180Fixed a reported problem with resource structure alignment on 64- 18181bit platforms. 18182 18183Changed the AcpiEnableEvent and AcpiDisableEvent external 18184interfaces to not require any flags for the common case of 18185enabling/disabling a GPE. 18186 18187Implemented support to allow a "Notify" on a Processor object. 18188 18189Most TBDs in comments within the source code have been resolved 18190and eliminated. 18191 18192 18193Fixed a problem in the interpreter where a standalone parent 18194prefix (^) was not handled correctly in the interpreter and 18195debugger. 18196 18197Removed obsolete and unnecessary GPE save/restore code. 18198 18199Implemented Field support in the ASL Load operator. This allows a 18200table to be loaded from a named field, in addition to loading a 18201table directly from an Operation Region. 18202 18203Implemented timeout and handle support in the external Global Lock 18204interfaces. 18205 18206Fixed a problem in the AcpiDump utility where pathnames were no 18207longer being generated correctly during the dump of named objects. 18208 18209Modified the AML debugger to give a full display of if/while 18210predicates instead of just one AML opcode at a time. (The 18211predicate can have several nested ASL statements.) The old method 18212was confusing during single stepping. 18213 18214Code and Data Size: Current core subsystem library sizes are shown 18215below. These are the code and data sizes for the acpica.lib 18216produced by the Microsoft Visual C++ 6.0 compiler, and these 18217values do not include any ACPI driver or OSPM code. The debug 18218version of the code includes the debug output trace mechanism and 18219has a larger code and data size. Note that these values will vary 18220depending on the efficiency of the compiler and the compiler 18221options used during generation. 18222 18223 Previous Release (12_18_01) 18224 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18225 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18226 Current Release: 18227 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18228 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18229 182302) Linux 18231 18232 Implemented fix for PIIX reverse throttling errata (Processor 18233driver) 18234 18235Added new Limit interface (Processor and Thermal drivers) 18236 18237New thermal policy (Thermal driver) 18238 18239Many updates to /proc 18240 18241Battery "low" event support (Battery driver) 18242 18243Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 18244 18245IA32 - IA64 initialization unification, no longer experimental 18246 18247Menuconfig options redesigned 18248 182493) ASL Compiler, version X2037: 18250 18251Implemented several new output features to simplify integration of 18252AML code into firmware: 1) Output the AML in C source code with 18253labels for each named ASL object. The original ASL source code 18254is interleaved as C comments. 2) Output the AML in ASM source code 18255with labels and interleaved ASL source. 3) Output the AML in 18256raw hex table form, in either C or ASM. 18257 18258Implemented support for optional string parameters to the 18259LoadTable operator. 18260 18261Completed support for embedded escape sequences within string 18262literals. The compiler now supports all single character escapes 18263as well as the Octal and Hex escapes. Note: the insertion of a 18264null byte into a string literal (via the hex/octal escape) causes 18265the string to be immediately terminated. A warning is issued. 18266 18267Fixed a problem where incorrect AML was generated for the case 18268where an ASL namepath consists of a single parent prefix ( 18269 18270) with no trailing name segments. 18271 18272The compiler has been successfully generated with a 64-bit C 18273compiler. 18274 18275 18276 18277 18278---------------------------------------- 18279Summary of changes for this label: 12_18_01 18280 182811) Linux 18282 18283Enhanced blacklist with reason and severity fields. Any table's 18284signature may now be used to identify a blacklisted system. 18285 18286Call _PIC control method to inform the firmware which interrupt 18287model the OS is using. Turn on any disabled link devices. 18288 18289Cleaned up busmgr /proc error handling (Andreas Dilger) 18290 18291 2) ACPI CA Core Subsystem: 18292 18293Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 18294while loop) 18295 18296Completed implementation of the ACPI 2.0 "Continue", 18297"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 18298operators. All new ACPI 2.0 operators are now implemented in both 18299the ASL compiler and the AML interpreter. The only remaining ACPI 183002.0 task is support for the String data type in the DerefOf 18301operator. Fixed a problem with AcquireMutex where the status code 18302was lost if the caller had to actually wait for the mutex. 18303 18304Increased the maximum ASL Field size from 64K bits to 4G bits. 18305 18306Completed implementation of the external Global Lock interfaces -- 18307AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 18308Handler parameters were added. 18309 18310Completed another pass at removing warnings and issues when 18311compiling with 64-bit compilers. The code now compiles cleanly 18312with the Intel 64-bit C/C++ compiler. Most notably, the pointer 18313add and subtract (diff) macros have changed considerably. 18314 18315 18316Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1831764-bit platforms, 32-bits on all others. This type is used 18318wherever memory allocation and/or the C sizeof() operator is used, 18319and affects the OSL memory allocation interfaces AcpiOsAllocate 18320and AcpiOsCallocate. 18321 18322Implemented sticky user breakpoints in the AML debugger. 18323 18324Code and Data Size: Current core subsystem library sizes are shown 18325below. These are the code and data sizes for the acpica.lib 18326produced by the Microsoft Visual C++ 6.0 compiler, and these 18327values do not include any ACPI driver or OSPM code. The debug 18328version of the code includes the debug output trace mechanism and 18329has a larger code and data size. Note that these values will vary 18330depending on the efficiency of the compiler and the compiler 18331options used during generation. 18332 18333 Previous Release (12_05_01) 18334 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18335 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18336 Current Release: 18337 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18338 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18339 18340 3) ASL Compiler, version X2034: 18341 18342Now checks for (and generates an error if detected) the use of a 18343Break or Continue statement without an enclosing While statement. 18344 18345 18346Successfully generated the compiler with the Intel 64-bit C 18347compiler. 18348 18349 ---------------------------------------- 18350Summary of changes for this label: 12_05_01 18351 18352 1) ACPI CA Core Subsystem: 18353 18354The ACPI 2.0 CopyObject operator is fully implemented. This 18355operator creates a new copy of an object (and is also used to 18356bypass the "implicit conversion" mechanism of the Store operator.) 18357 18358The ACPI 2.0 semantics for the SizeOf operator are fully 18359implemented. The change is that performing a SizeOf on a 18360reference object causes an automatic dereference of the object to 18361the actual value before the size is evaluated. This behavior was 18362undefined in ACPI 1.0. 18363 18364The ACPI 2.0 semantics for the Extended IRQ resource descriptor 18365have been implemented. The interrupt polarity and mode are now 18366independently set. 18367 18368Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 18369appearing in Package objects were not properly converted to 18370integers when the internal Package was converted to an external 18371object (via the AcpiEvaluateObject interface.) 18372 18373Fixed a problem with the namespace object deletion mechanism for 18374objects created by control methods. There were two parts to this 18375problem: 1) Objects created during the initialization phase method 18376parse were not being deleted, and 2) The object owner ID mechanism 18377to track objects was broken. 18378 18379Fixed a problem where the use of the ASL Scope operator within a 18380control method would result in an invalid opcode exception. 18381 18382Fixed a problem introduced in the previous label where the buffer 18383length required for the _PRT structure was not being returned 18384correctly. 18385 18386Code and Data Size: Current core subsystem library sizes are shown 18387below. These are the code and data sizes for the acpica.lib 18388produced by the Microsoft Visual C++ 6.0 compiler, and these 18389values do not include any ACPI driver or OSPM code. The debug 18390version of the code includes the debug output trace mechanism and 18391has a larger code and data size. Note that these values will vary 18392depending on the efficiency of the compiler and the compiler 18393options used during generation. 18394 18395 Previous Release (11_20_01) 18396 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18397 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18398 18399 Current Release: 18400 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18401 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18402 18403 2) Linux: 18404 18405Updated all files to apply cleanly against 2.4.16. 18406 18407Added basic PCI Interrupt Routing Table (PRT) support for IA32 18408(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 18409version supports both static and dynamic PRT entries, but dynamic 18410entries are treated as if they were static (not yet 18411reconfigurable). Architecture- specific code to use this data is 18412absent on IA32 but should be available shortly. 18413 18414Changed the initialization sequence to start the ACPI interpreter 18415(acpi_init) prior to initialization of the PCI driver (pci_init) 18416in init/main.c. This ordering is required to support PRT and 18417facilitate other (future) enhancement. A side effect is that the 18418ACPI bus driver and certain device drivers can no longer be loaded 18419as modules. 18420 18421Modified the 'make menuconfig' options to allow PCI Interrupt 18422Routing support to be included without the ACPI Bus and other 18423device drivers. 18424 18425 3) ASL Compiler, version X2033: 18426 18427Fixed some issues with the use of the new CopyObject and 18428DataTableRegion operators. Both are fully functional. 18429 18430 ---------------------------------------- 18431Summary of changes for this label: 11_20_01 18432 18433 20 November 2001. Summary of changes for this release. 18434 18435 1) ACPI CA Core Subsystem: 18436 18437Updated Index support to match ACPI 2.0 semantics. Storing a 18438Integer, String, or Buffer to an Index of a Buffer will store only 18439the least-significant byte of the source to the Indexed buffer 18440byte. Multiple writes are not performed. 18441 18442Fixed a problem where the access type used in an AccessAs ASL 18443operator was not recorded correctly into the field object. 18444 18445Fixed a problem where ASL Event objects were created in a 18446signalled state. Events are now created in an unsignalled state. 18447 18448The internal object cache is now purged after table loading and 18449initialization to reduce the use of dynamic kernel memory -- on 18450the assumption that object use is greatest during the parse phase 18451of the entire table (versus the run-time use of individual control 18452methods.) 18453 18454ACPI 2.0 variable-length packages are now fully operational. 18455 18456Code and Data Size: Code and Data optimizations have permitted new 18457feature development with an actual reduction in the library size. 18458Current core subsystem library sizes are shown below. These are 18459the code and data sizes for the acpica.lib produced by the 18460Microsoft Visual C++ 6.0 compiler, and these values do not include 18461any ACPI driver or OSPM code. The debug version of the code 18462includes the debug output trace mechanism and has a larger code 18463and data size. Note that these values will vary depending on the 18464efficiency of the compiler and the compiler options used during 18465generation. 18466 18467 Previous Release (11_09_01): 18468 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18469 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18470 18471 Current Release: 18472 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18473 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18474 18475 2) Linux: 18476 18477Enhanced the ACPI boot-time initialization code to allow the use 18478of Local APIC tables for processor enumeration on IA-32, and to 18479pave the way for a fully MPS-free boot (on SMP systems) in the 18480near future. This functionality replaces 18481arch/i386/kernel/acpitables.c, which was introduced in an earlier 184822.4.15-preX release. To enable this feature you must add 18483"acpi_boot=on" to the kernel command line -- see the help entry 18484for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 18485the works... 18486 18487Restructured the configuration options to allow boot-time table 18488parsing support without inclusion of the ACPI Interpreter (and 18489other) code. 18490 18491NOTE: This release does not include fixes for the reported events, 18492power-down, and thermal passive cooling issues (coming soon). 18493 18494 3) ASL Compiler: 18495 18496Added additional typechecking for Fields within restricted access 18497Operation Regions. All fields within EC and CMOS regions must be 18498declared with ByteAcc. All fields within SMBus regions must be 18499declared with the BufferAcc access type. 18500 18501Fixed a problem where the listing file output of control methods 18502no longer interleaved the actual AML code with the ASL source 18503code. 18504 18505 18506 18507 18508---------------------------------------- 18509Summary of changes for this label: 11_09_01 18510 185111) ACPI CA Core Subsystem: 18512 18513Implemented ACPI 2.0-defined support for writes to fields with a 18514Buffer, String, or Integer source operand that is smaller than the 18515target field. In these cases, the source operand is zero-extended 18516to fill the target field. 18517 18518Fixed a problem where a Field starting bit offset (within the 18519parent operation region) was calculated incorrectly if the 18520 18521alignment of the field differed from the access width. This 18522affected CreateWordField, CreateDwordField, CreateQwordField, and 18523possibly other fields that use the "AccessAny" keyword. 18524 18525Fixed a problem introduced in the 11_02_01 release where indirect 18526stores through method arguments did not operate correctly. 18527 185282) Linux: 18529 18530Implemented boot-time ACPI table parsing support 18531(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18532facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18533legacy BIOS interfaces (e.g. MPS) for the configuration of system 18534processors, memory, and interrupts during setup_arch(). Note that 18535this patch does not include the required architecture-specific 18536changes required to apply this information -- subsequent patches 18537will be posted for both IA32 and IA64 to achieve this. 18538 18539Added low-level sleep support for IA32 platforms, courtesy of Pat 18540Mochel. This allows IA32 systems to transition to/from various 18541sleeping states (e.g. S1, S3), although the lack of a centralized 18542driver model and power-manageable drivers will prevent its 18543(successful) use on most systems. 18544 18545Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18546submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18547tables" option, etc. 18548 18549Increased the default timeout for the EC driver from 1ms to 10ms 18550(1000 cycles of 10us) to try to address AE_TIME errors during EC 18551transactions. 18552 18553 ---------------------------------------- 18554Summary of changes for this label: 11_02_01 18555 185561) ACPI CA Core Subsystem: 18557 18558ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18559(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18560implemented. 18561 18562OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18563changes to support ACPI 2.0 Qword field access. Read/Write 18564PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18565accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18566the value parameter for the address space handler interface is now 18567an ACPI_INTEGER. OSL implementations of these interfaces must now 18568handle the case where the Width parameter is 64. 18569 18570Index Fields: Fixed a problem where unaligned bit assembly and 18571disassembly for IndexFields was not supported correctly. 18572 18573Index and Bank Fields: Nested Index and Bank Fields are now 18574supported. During field access, a check is performed to ensure 18575that the value written to an Index or Bank register is not out of 18576the range of the register. The Index (or Bank) register is 18577written before each access to the field data. Future support will 18578include allowing individual IndexFields to be wider than the 18579DataRegister width. 18580 18581Fields: Fixed a problem where the AML interpreter was incorrectly 18582attempting to write beyond the end of a Field/OpRegion. This was 18583a boundary case that occurred when a DWORD field was written to a 18584BYTE access OpRegion, forcing multiple writes and causing the 18585interpreter to write one datum too many. 18586 18587Fields: Fixed a problem with Field/OpRegion access where the 18588starting bit address of a field was incorrectly calculated if the 18589current access type was wider than a byte (WordAcc, DwordAcc, or 18590QwordAcc). 18591 18592Fields: Fixed a problem where forward references to individual 18593FieldUnits (individual Field names within a Field definition) were 18594not resolved during the AML table load. 18595 18596Fields: Fixed a problem where forward references from a Field 18597definition to the parent Operation Region definition were not 18598resolved during the AML table load. 18599 18600Fields: Duplicate FieldUnit names within a scope are now detected 18601during AML table load. 18602 18603Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18604returned an incorrect name for the root node. 18605 18606Code and Data Size: Code and Data optimizations have permitted new 18607feature development with an actual reduction in the library size. 18608Current core subsystem library sizes are shown below. These are 18609the code and data sizes for the acpica.lib produced by the 18610Microsoft Visual C++ 6.0 compiler, and these values do not include 18611any ACPI driver or OSPM code. The debug version of the code 18612includes the debug output trace mechanism and has a larger code 18613and data size. Note that these values will vary depending on the 18614efficiency of the compiler and the compiler options used during 18615generation. 18616 18617 Previous Release (10_18_01): 18618 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18619 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18620 18621 Current Release: 18622 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18623 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18624 18625 2) Linux: 18626 18627Improved /proc processor output (Pavel Machek) Re-added 18628MODULE_LICENSE("GPL") to all modules. 18629 18630 3) ASL Compiler version X2030: 18631 18632Duplicate FieldUnit names within a scope are now detected and 18633flagged as errors. 18634 18635 4) Documentation: 18636 18637Programmer Reference updated to reflect OSL and address space 18638handler interface changes described above. 18639 18640---------------------------------------- 18641Summary of changes for this label: 10_18_01 18642 18643ACPI CA Core Subsystem: 18644 18645Fixed a problem with the internal object reference count mechanism 18646that occasionally caused premature object deletion. This resolves 18647all of the outstanding problem reports where an object is deleted 18648in the middle of an interpreter evaluation. Although this problem 18649only showed up in rather obscure cases, the solution to the 18650problem involved an adjustment of all reference counts involving 18651objects attached to namespace nodes. 18652 18653Fixed a problem with Field support in the interpreter where 18654writing to an aligned field whose length is an exact multiple (2 18655or greater) of the field access granularity would cause an attempt 18656to write beyond the end of the field. 18657 18658The top level AML opcode execution functions within the 18659interpreter have been renamed with a more meaningful and 18660consistent naming convention. The modules exmonad.c and 18661exdyadic.c were eliminated. New modules are exoparg1.c, 18662exoparg2.c, exoparg3.c, and exoparg6.c. 18663 18664Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18665 18666Fixed a problem where the AML debugger was causing some internal 18667objects to not be deleted during subsystem termination. 18668 18669Fixed a problem with the external AcpiEvaluateObject interface 18670where the subsystem would fault if the named object to be 18671evaluated referred to a constant such as Zero, Ones, etc. 18672 18673Fixed a problem with IndexFields and BankFields where the 18674subsystem would fault if the index, data, or bank registers were 18675not defined in the same scope as the field itself. 18676 18677Added printf format string checking for compilers that support 18678this feature. Corrected more than 50 instances of issues with 18679format specifiers within invocations of ACPI_DEBUG_PRINT 18680throughout the core subsystem code. 18681 18682The ASL "Revision" operator now returns the ACPI support level 18683implemented in the core - the value "2" since the ACPI 2.0 support 18684is more than 50% implemented. 18685 18686Enhanced the output of the AML debugger "dump namespace" command 18687to output in a more human-readable form. 18688 18689Current core subsystem library code sizes are shown below. These 18690 18691are the code and data sizes for the acpica.lib produced by the 18692Microsoft Visual C++ 6.0 compiler, and these values do not include 18693any ACPI driver or OSPM code. The debug version of the code 18694includes the full debug trace mechanism -- leading to a much 18695 18696larger code and data size. Note that these values will vary 18697depending on the efficiency of the compiler and the compiler 18698options used during generation. 18699 18700 Previous Label (09_20_01): 18701 Non-Debug Version: 65K Code, 5K Data, 70K Total 18702 Debug Version: 138K Code, 58K Data, 196K Total 18703 18704 This Label: 18705 18706 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18707 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18708 18709Linux: 18710 18711Implemented a "Bad BIOS Blacklist" to track machines that have 18712known ASL/AML problems. 18713 18714Enhanced the /proc interface for the thermal zone driver and added 18715support for _HOT (the critical suspend trip point). The 'info' 18716file now includes threshold/policy information, and allows setting 18717of _SCP (cooling preference) and _TZP (polling frequency) values 18718to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18719frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18720preference to the passive/quiet mode (if supported by the ASL). 18721 18722Implemented a workaround for a gcc bug that resuted in an OOPs 18723when loading the control method battery driver. 18724 18725 ---------------------------------------- 18726Summary of changes for this label: 09_20_01 18727 18728 ACPI CA Core Subsystem: 18729 18730The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18731modified to allow individual GPE levels to be flagged as wake- 18732enabled (i.e., these GPEs are to remain enabled when the platform 18733sleeps.) 18734 18735The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18736support wake-enabled GPEs. This means that upon entering the 18737sleep state, all GPEs that are not wake-enabled are disabled. 18738When leaving the sleep state, these GPEs are re-enabled. 18739 18740A local double-precision divide/modulo module has been added to 18741enhance portability to OS kernels where a 64-bit math library is 18742not available. The new module is "utmath.c". 18743 18744Several optimizations have been made to reduce the use of CPU 18745stack. Originally over 2K, the maximum stack usage is now below 187462K at 1860 bytes (1.82k) 18747 18748Fixed a problem with the AcpiGetFirmwareTable interface where the 18749root table pointer was not mapped into a logical address properly. 18750 18751Fixed a problem where a NULL pointer was being dereferenced in the 18752interpreter code for the ASL Notify operator. 18753 18754Fixed a problem where the use of the ASL Revision operator 18755returned an error. This operator now returns the current version 18756of the ACPI CA core subsystem. 18757 18758Fixed a problem where objects passed as control method parameters 18759to AcpiEvaluateObject were always deleted at method termination. 18760However, these objects may end up being stored into the namespace 18761by the called method. The object reference count mechanism was 18762applied to these objects instead of a force delete. 18763 18764Fixed a problem where static strings or buffers (contained in the 18765AML code) that are declared as package elements within the ASL 18766code could cause a fault because the interpreter would attempt to 18767delete them. These objects are now marked with the "static 18768object" flag to prevent any attempt to delete them. 18769 18770Implemented an interpreter optimization to use operands directly 18771from the state object instead of extracting the operands to local 18772variables. This reduces stack use and code size, and improves 18773performance. 18774 18775The module exxface.c was eliminated as it was an unnecessary extra 18776layer of code. 18777 18778Current core subsystem library code sizes are shown below. These 18779are the code and data sizes for the acpica.lib produced by the 18780Microsoft Visual C++ 6.0 compiler, and these values do not include 18781any ACPI driver or OSPM code. The debug version of the code 18782includes the full debug trace mechanism -- leading to a much 18783larger code and data size. Note that these values will vary 18784depending on the efficiency of the compiler and the compiler 18785options used during generation. 18786 18787 Non-Debug Version: 65K Code, 5K Data, 70K Total 18788(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18789Total (Previously 195K) 18790 18791Linux: 18792 18793Support for ACPI 2.0 64-bit integers has been added. All ACPI 18794Integer objects are now 64 bits wide 18795 18796All Acpi data types and structures are now in lower case. Only 18797Acpi macros are upper case for differentiation. 18798 18799 Documentation: 18800 18801Changes to the external interfaces as described above. 18802 18803 ---------------------------------------- 18804Summary of changes for this label: 08_31_01 18805 18806 ACPI CA Core Subsystem: 18807 18808A bug with interpreter implementation of the ASL Divide operator 18809was found and fixed. The implicit function return value (not the 18810explicit store operands) was returning the remainder instead of 18811the quotient. This was a longstanding bug and it fixes several 18812known outstanding issues on various platforms. 18813 18814The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18815been further optimized for size. There are 700 invocations of the 18816DEBUG_PRINT macro alone, so each optimization reduces the size of 18817the debug version of the subsystem significantly. 18818 18819A stack trace mechanism has been implemented. The maximum stack 18820usage is about 2K on 32-bit platforms. The debugger command "stat 18821stack" will display the current maximum stack usage. 18822 18823All public symbols and global variables within the subsystem are 18824now prefixed with the string "Acpi". This keeps all of the 18825symbols grouped together in a kernel map, and avoids conflicts 18826with other kernel subsystems. 18827 18828Most of the internal fixed lookup tables have been moved into the 18829code segment via the const operator. 18830 18831Several enhancements have been made to the interpreter to both 18832reduce the code size and improve performance. 18833 18834Current core subsystem library code sizes are shown below. These 18835are the code and data sizes for the acpica.lib produced by the 18836Microsoft Visual C++ 6.0 compiler, and these values do not include 18837any ACPI driver or OSPM code. The debug version of the code 18838includes the full debug trace mechanism which contains over 700 18839invocations of the DEBUG_PRINT macro, 500 function entry macro 18840invocations, and over 900 function exit macro invocations -- 18841leading to a much larger code and data size. Note that these 18842values will vary depending on the efficiency of the compiler and 18843the compiler options used during generation. 18844 18845 Non-Debug Version: 64K Code, 5K Data, 69K Total 18846Debug Version: 137K Code, 58K Data, 195K Total 18847 18848 Linux: 18849 18850Implemented wbinvd() macro, pending a kernel-wide definition. 18851 18852Fixed /proc/acpi/event to handle poll() and short reads. 18853 18854 ASL Compiler, version X2026: 18855 18856Fixed a problem introduced in the previous label where the AML 18857 18858code emitted for package objects produced packages with zero 18859length. 18860 18861 ---------------------------------------- 18862Summary of changes for this label: 08_16_01 18863 18864ACPI CA Core Subsystem: 18865 18866The following ACPI 2.0 ASL operators have been implemented in the 18867AML interpreter (These are already supported by the Intel ASL 18868compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18869ToBuffer. Support for 64-bit AML constants is implemented in the 18870AML parser, debugger, and disassembler. 18871 18872The internal memory tracking mechanism (leak detection code) has 18873been upgraded to reduce the memory overhead (a separate tracking 18874block is no longer allocated for each memory allocation), and now 18875supports all of the internal object caches. 18876 18877The data structures and code for the internal object caches have 18878been coelesced and optimized so that there is a single cache and 18879memory list data structure and a single group of functions that 18880implement generic cache management. This has reduced the code 18881size in both the debug and release versions of the subsystem. 18882 18883The DEBUG_PRINT macro(s) have been optimized for size and replaced 18884by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18885different, because it generates a single call to an internal 18886function. This results in a savings of about 90 bytes per 18887invocation, resulting in an overall code and data savings of about 1888816% in the debug version of the subsystem. 18889 18890 Linux: 18891 18892Fixed C3 disk corruption problems and re-enabled C3 on supporting 18893machines. 18894 18895Integrated low-level sleep code by Patrick Mochel. 18896 18897Further tweaked source code Linuxization. 18898 18899Other minor fixes. 18900 18901 ASL Compiler: 18902 18903Support for ACPI 2.0 variable length packages is fixed/completed. 18904 18905Fixed a problem where the optional length parameter for the ACPI 189062.0 ToString operator. 18907 18908Fixed multiple extraneous error messages when a syntax error is 18909detected within the declaration line of a control method. 18910 18911 ---------------------------------------- 18912Summary of changes for this label: 07_17_01 18913 18914ACPI CA Core Subsystem: 18915 18916Added a new interface named AcpiGetFirmwareTable to obtain any 18917ACPI table via the ACPI signature. The interface can be called at 18918any time during kernel initialization, even before the kernel 18919virtual memory manager is initialized and paging is enabled. This 18920allows kernel subsystems to obtain ACPI tables very early, even 18921before the ACPI CA subsystem is initialized. 18922 18923Fixed a problem where Fields defined with the AnyAcc attribute 18924could be resolved to the incorrect address under the following 18925conditions: 1) the field width is larger than 8 bits and 2) the 18926parent operation region is not defined on a DWORD boundary. 18927 18928Fixed a problem where the interpreter is not being locked during 18929namespace initialization (during execution of the _INI control 18930methods), causing an error when an attempt is made to release it 18931later. 18932 18933ACPI 2.0 support in the AML Interpreter has begun and will be 18934ongoing throughout the rest of this year. In this label, The Mod 18935operator is implemented. 18936 18937Added a new data type to contain full PCI addresses named 18938ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18939and Function values. 18940 18941 Linux: 18942 18943Enhanced the Linux version of the source code to change most 18944capitalized ACPI type names to lowercase. For example, all 18945instances of ACPI_STATUS are changed to acpi_status. This will 18946result in a large diff, but the change is strictly cosmetic and 18947aligns the CA code closer to the Linux coding standard. 18948 18949OSL Interfaces: 18950 18951The interfaces to the PCI configuration space have been changed to 18952add the PCI Segment number and to split the single 32-bit combined 18953DeviceFunction field into two 16-bit fields. This was 18954accomplished by moving the four values that define an address in 18955PCI configuration space (segment, bus, device, and function) to 18956the new ACPI_PCI_ID structure. 18957 18958The changes to the PCI configuration space interfaces led to a 18959reexamination of the complete set of address space access 18960interfaces for PCI, I/O, and Memory. The previously existing 18 18961interfaces have proven difficult to maintain (any small change 18962must be propagated across at least 6 interfaces) and do not easily 18963allow for future expansion to 64 bits if necessary. Also, on some 18964systems, it would not be appropriate to demultiplex the access 18965width (8, 16, 32,or 64) before calling the OSL if the 18966corresponding native OS interfaces contain a similar access width 18967parameter. For these reasons, the 18 address space interfaces 18968have been replaced by these 6 new ones: 18969 18970AcpiOsReadPciConfiguration 18971AcpiOsWritePciConfiguration 18972AcpiOsReadMemory 18973AcpiOsWriteMemory 18974AcpiOsReadPort 18975AcpiOsWritePort 18976 18977Added a new interface named AcpiOsGetRootPointer to allow the OSL 18978to perform the platform and/or OS-specific actions necessary to 18979obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18980interface will simply call down to the CA core to perform the low- 18981memory search for the table. On IA-64, the RSDP is obtained from 18982EFI. Migrating this interface to the OSL allows the CA core to 18983 18984remain OS and platform independent. 18985 18986Added a new interface named AcpiOsSignal to provide a generic 18987"function code and pointer" interface for various miscellaneous 18988signals and notifications that must be made to the host OS. The 18989first such signals are intended to support the ASL Fatal and 18990Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18991interface has been obsoleted. 18992 18993The definition of the AcpiFormatException interface has been 18994changed to simplify its use. The caller no longer must supply a 18995buffer to the call; A pointer to a const string is now returned 18996directly. This allows the call to be easily used in printf 18997statements, etc. since the caller does not have to manage a local 18998buffer. 18999 19000 19001 ASL Compiler, Version X2025: 19002 19003The ACPI 2.0 Switch/Case/Default operators have been implemented 19004and are fully functional. They will work with all ACPI 1.0 19005interpreters, since the operators are simply translated to If/Else 19006pairs. 19007 19008The ACPI 2.0 ElseIf operator is implemented and will also work 19009with 1.0 interpreters, for the same reason. 19010 19011Implemented support for ACPI 2.0 variable-length packages. These 19012packages have a separate opcode, and their size is determined by 19013the interpreter at run-time. 19014 19015Documentation The ACPI CA Programmer Reference has been updated to 19016reflect the new interfaces and changes to existing interfaces. 19017 19018 ------------------------------------------ 19019Summary of changes for this label: 06_15_01 19020 19021 ACPI CA Core Subsystem: 19022 19023Fixed a problem where a DWORD-accessed field within a Buffer 19024object would get its byte address inadvertently rounded down to 19025the nearest DWORD. Buffers are always Byte-accessible. 19026 19027 ASL Compiler, version X2024: 19028 19029Fixed a problem where the Switch() operator would either fault or 19030hang the compiler. Note however, that the AML code for this ACPI 190312.0 operator is not yet implemented. 19032 19033Compiler uses the new AcpiOsGetTimer interface to obtain compile 19034timings. 19035 19036Implementation of the CreateField operator automatically converts 19037a reference to a named field within a resource descriptor from a 19038byte offset to a bit offset if required. 19039 19040Added some missing named fields from the resource descriptor 19041support. These are the names that are automatically created by the 19042compiler to reference fields within a descriptor. They are only 19043valid at compile time and are not passed through to the AML 19044interpreter. 19045 19046Resource descriptor named fields are now typed as Integers and 19047subject to compile-time typechecking when used in expressions. 19048 19049 ------------------------------------------ 19050Summary of changes for this label: 05_18_01 19051 19052 ACPI CA Core Subsystem: 19053 19054Fixed a couple of problems in the Field support code where bits 19055from adjacent fields could be returned along with the proper field 19056bits. Restructured the field support code to improve performance, 19057readability and maintainability. 19058 19059New DEBUG_PRINTP macro automatically inserts the procedure name 19060into the output, saving hundreds of copies of procedure name 19061strings within the source, shrinking the memory footprint of the 19062debug version of the core subsystem. 19063 19064 Source Code Structure: 19065 19066The source code directory tree was restructured to reflect the 19067current organization of the component architecture. Some files 19068and directories have been moved and/or renamed. 19069 19070 Linux: 19071 19072Fixed leaking kacpidpc processes. 19073 19074Fixed queueing event data even when /proc/acpi/event is not 19075opened. 19076 19077 ASL Compiler, version X2020: 19078 19079Memory allocation performance enhancement - over 24X compile time 19080improvement on large ASL files. Parse nodes and namestring 19081buffers are now allocated from a large internal compiler buffer. 19082 19083The temporary .SRC file is deleted unless the "-s" option is 19084specified 19085 19086The "-d" debug output option now sends all output to the .DBG file 19087instead of the console. 19088 19089"External" second parameter is now optional 19090 19091"ElseIf" syntax now properly allows the predicate 19092 19093Last operand to "Load" now recognized as a Target operand 19094 19095Debug object can now be used anywhere as a normal object. 19096 19097ResourceTemplate now returns an object of type BUFFER 19098 19099EISAID now returns an object of type INTEGER 19100 19101"Index" now works with a STRING operand 19102 19103"LoadTable" now accepts optional parameters 19104 19105"ToString" length parameter is now optional 19106 19107"Interrupt (ResourceType," parse error fixed. 19108 19109"Register" with a user-defined region space parse error fixed 19110 19111Escaped backslash at the end of a string ("\\") scan/parse error 19112fixed 19113 19114"Revision" is now an object of type INTEGER. 19115 19116 19117 19118------------------------------------------ 19119Summary of changes for this label: 05_02_01 19120 19121Linux: 19122 19123/proc/acpi/event now blocks properly. 19124 19125Removed /proc/sys/acpi. You can still dump your DSDT from 19126/proc/acpi/dsdt. 19127 19128 ACPI CA Core Subsystem: 19129 19130Fixed a problem introduced in the previous label where some of the 19131"small" resource descriptor types were not recognized. 19132 19133Improved error messages for the case where an ASL Field is outside 19134the range of the parent operation region. 19135 19136 ASL Compiler, version X2018: 19137 19138 19139Added error detection for ASL Fields that extend beyond the length 19140of the parent operation region (only if the length of the region 19141is known at compile time.) This includes fields that have a 19142minimum access width that is smaller than the parent region, and 19143individual field units that are partially or entirely beyond the 19144extent of the parent. 19145 19146 19147 19148------------------------------------------ 19149Summary of changes for this label: 04_27_01 19150 19151 ACPI CA Core Subsystem: 19152 19153Fixed a problem where the namespace mutex could be released at the 19154wrong time during execution of AcpiRemoveAddressSpaceHandler. 19155 19156Added optional thread ID output for debug traces, to simplify 19157debugging of multiple threads. Added context switch notification 19158when the debug code realizes that a different thread is now 19159executing ACPI code. 19160 19161Some additional external data types have been prefixed with the 19162string "ACPI_" for consistency. This may effect existing code. 19163The data types affected are the external callback typedefs - e.g., 19164 19165WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 19166 19167 Linux: 19168 19169Fixed an issue with the OSL semaphore implementation where a 19170thread was waking up with an error from receiving a SIGCHLD 19171signal. 19172 19173Linux version of ACPI CA now uses the system C library for string 19174manipulation routines instead of a local implementation. 19175 19176Cleaned up comments and removed TBDs. 19177 19178 ASL Compiler, version X2017: 19179 19180Enhanced error detection and reporting for all file I/O 19181operations. 19182 19183 Documentation: 19184 19185Programmer Reference updated to version 1.06. 19186 19187 19188 19189------------------------------------------ 19190Summary of changes for this label: 04_13_01 19191 19192 ACPI CA Core Subsystem: 19193 19194Restructured support for BufferFields and RegionFields. 19195BankFields support is now fully operational. All known 32-bit 19196limitations on field sizes have been removed. Both BufferFields 19197and (Operation) RegionFields are now supported by the same field 19198management code. 19199 19200Resource support now supports QWORD address and IO resources. The 1920116/32/64 bit address structures and the Extended IRQ structure 19202have been changed to properly handle Source Resource strings. 19203 19204A ThreadId of -1 is now used to indicate a "mutex not acquired" 19205condition internally and must never be returned by AcpiOsThreadId. 19206This reserved value was changed from 0 since Unix systems allow a 19207thread ID of 0. 19208 19209Linux: 19210 19211Driver code reorganized to enhance portability 19212 19213Added a kernel configuration option to control ACPI_DEBUG 19214 19215Fixed the EC driver to honor _GLK. 19216 19217ASL Compiler, version X2016: 19218 19219Fixed support for the "FixedHw" keyword. Previously, the FixedHw 19220address space was set to 0, not 0x7f as it should be. 19221 19222 ------------------------------------------ 19223Summary of changes for this label: 03_13_01 19224 19225 ACPI CA Core Subsystem: 19226 19227During ACPI initialization, the _SB_._INI method is now run if 19228present. 19229 19230Notify handler fix - notifies are deferred until the parent method 19231completes execution. This fixes the "mutex already acquired" 19232issue seen occasionally. 19233 19234Part of the "implicit conversion" rules in ACPI 2.0 have been 19235found to cause compatibility problems with existing ASL/AML. The 19236convert "result-to-target-type" implementation has been removed 19237for stores to method Args and Locals. Source operand conversion 19238is still fully implemented. Possible changes to ACPI 2.0 19239specification pending. 19240 19241Fix to AcpiRsCalculatePciRoutingTableLength to return correct 19242length. 19243 19244Fix for compiler warnings for 64-bit compiles. 19245 19246 Linux: 19247 19248/proc output aligned for easier parsing. 19249 19250Release-version compile problem fixed. 19251 19252New kernel configuration options documented in Configure.help. 19253 19254IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 19255context" message. 19256 19257 OSPM: 19258 19259Power resource driver integrated with bus manager. 19260 19261Fixed kernel fault during active cooling for thermal zones. 19262 19263Source Code: 19264 19265The source code tree has been restructured. 19266 19267 19268 19269------------------------------------------ 19270Summary of changes for this label: 03_02_01 19271 19272 Linux OS Services Layer (OSL): 19273 19274Major revision of all Linux-specific code. 19275 19276Modularized all ACPI-specific drivers. 19277 19278Added new thermal zone and power resource drivers. 19279 19280Revamped /proc interface (new functionality is under /proc/acpi). 19281 19282New kernel configuration options. 19283 19284 Linux known issues: 19285 19286New kernel configuration options not documented in Configure.help 19287yet. 19288 19289 19290Module dependencies not currently implemented. If used, they 19291should be loaded in this order: busmgr, power, ec, system, 19292processor, battery, ac_adapter, button, thermal. 19293 19294Modules will not load if CONFIG_MODVERSION is set. 19295 19296IBM 600E - entering S5 may reboot instead of shutting down. 19297 19298IBM 600E - Sleep button may generate "Invalid <NULL> context" 19299message. 19300 19301Some systems may fail with "execution mutex already acquired" 19302message. 19303 19304 ACPI CA Core Subsystem: 19305 19306Added a new OSL Interface, AcpiOsGetThreadId. This was required 19307for the deadlock detection code. Defined to return a non-zero, 32- 19308bit thread ID for the currently executing thread. May be a non- 19309zero constant integer on single-thread systems. 19310 19311Implemented deadlock detection for internal subsystem mutexes. We 19312may add conditional compilation for this code (debug only) later. 19313 19314ASL/AML Mutex object semantics are now fully supported. This 19315includes multiple acquires/releases by owner and support for the 19316 19317Mutex SyncLevel parameter. 19318 19319A new "Force Release" mechanism automatically frees all ASL 19320Mutexes that have been acquired but not released when a thread 19321exits the interpreter. This forces conformance to the ACPI spec 19322("All mutexes must be released when an invocation exits") and 19323prevents deadlocked ASL threads. This mechanism can be expanded 19324(later) to monitor other resource acquisitions if OEM ASL code 19325continues to misbehave (which it will). 19326 19327Several new ACPI exception codes have been added for the Mutex 19328support. 19329 19330Recursive method calls are now allowed and supported (the ACPI 19331spec does in fact allow recursive method calls.) The number of 19332recursive calls is subject to the restrictions imposed by the 19333SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 19334parameter. 19335 19336Implemented support for the SyncLevel parameter for control 19337methods (ACPI 2.0 feature) 19338 19339Fixed a deadlock problem when multiple threads attempted to use 19340the interpreter. 19341 19342Fixed a problem where the string length of a String package 19343element was not always set in a package returned from 19344AcpiEvaluateObject. 19345 19346Fixed a problem where the length of a String package element was 19347not always included in the length of the overall package returned 19348from AcpiEvaluateObject. 19349 19350Added external interfaces (Acpi*) to the ACPI debug memory 19351manager. This manager keeps a list of all outstanding 19352allocations, and can therefore detect memory leaks and attempts to 19353free memory blocks more than once. Useful for code such as the 19354power manager, etc. May not be appropriate for device drivers. 19355Performance with the debug code enabled is slow. 19356 19357The ACPI Global Lock is now an optional hardware element. 19358 19359 ASL Compiler Version X2015: 19360 19361Integrated changes to allow the compiler to be generated on 19362multiple platforms. 19363 19364Linux makefile added to generate the compiler on Linux 19365 19366 Source Code: 19367 19368All platform-specific headers have been moved to their own 19369subdirectory, Include/Platform. 19370 19371New source file added, Interpreter/ammutex.c 19372 19373New header file, Include/acstruct.h 19374 19375 Documentation: 19376 19377The programmer reference has been updated for the following new 19378interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 19379 19380 ------------------------------------------ 19381Summary of changes for this label: 02_08_01 19382 19383Core ACPI CA Subsystem: Fixed a problem where an error was 19384incorrectly returned if the return resource buffer was larger than 19385the actual data (in the resource interfaces). 19386 19387References to named objects within packages are resolved to the 19388 19389full pathname string before packages are returned directly (via 19390the AcpiEvaluateObject interface) or indirectly via the resource 19391interfaces. 19392 19393Linux OS Services Layer (OSL): 19394 19395Improved /proc battery interface. 19396 19397 19398Added C-state debugging output and other miscellaneous fixes. 19399 19400ASL Compiler Version X2014: 19401 19402All defined method arguments can now be used as local variables, 19403including the ones that are not actually passed in as parameters. 19404The compiler tracks initialization of the arguments and issues an 19405exception if they are used without prior assignment (just like 19406locals). 19407 19408The -o option now specifies a filename prefix that is used for all 19409output files, including the AML output file. Otherwise, the 19410default behavior is as follows: 1) the AML goes to the file 19411specified in the DSDT. 2) all other output files use the input 19412source filename as the base. 19413 19414 ------------------------------------------ 19415Summary of changes for this label: 01_25_01 19416 19417Core ACPI CA Subsystem: Restructured the implementation of object 19418store support within the interpreter. This includes support for 19419the Store operator as well as any ASL operators that include a 19420target operand. 19421 19422Partially implemented support for Implicit Result-to-Target 19423conversion. This is when a result object is converted on the fly 19424to the type of an existing target object. Completion of this 19425support is pending further analysis of the ACPI specification 19426concerning this matter. 19427 19428CPU-specific code has been removed from the subsystem (hardware 19429directory). 19430 19431New Power Management Timer functions added 19432 19433Linux OS Services Layer (OSL): Moved system state transition code 19434to the core, fixed it, and modified Linux OSL accordingly. 19435 19436Fixed C2 and C3 latency calculations. 19437 19438 19439We no longer use the compilation date for the version message on 19440initialization, but retrieve the version from AcpiGetSystemInfo(). 19441 19442Incorporated for fix Sony VAIO machines. 19443 19444Documentation: The Programmer Reference has been updated and 19445reformatted. 19446 19447 19448ASL Compiler: Version X2013: Fixed a problem where the line 19449numbering and error reporting could get out of sync in the 19450presence of multiple include files. 19451 19452 ------------------------------------------ 19453Summary of changes for this label: 01_15_01 19454 19455Core ACPI CA Subsystem: 19456 19457Implemented support for type conversions in the execution of the 19458ASL Concatenate operator (The second operand is converted to 19459match the type of the first operand before concatenation.) 19460 19461Support for implicit source operand conversion is partially 19462implemented. The ASL source operand types Integer, Buffer, and 19463String are freely interchangeable for most ASL operators and are 19464converted by the interpreter on the fly as required. Implicit 19465Target operand conversion (where the result is converted to the 19466target type before storing) is not yet implemented. 19467 19468Support for 32-bit and 64-bit BCD integers is implemented. 19469 19470Problem fixed where a field read on an aligned field could cause a 19471read past the end of the field. 19472 19473New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 19474does not return a value, but the caller expects one. (The ASL 19475compiler flags this as a warning.) 19476 19477ASL Compiler: 19478 19479Version X2011: 194801. Static typechecking of all operands is implemented. This 19481prevents the use of invalid objects (such as using a Package where 19482an Integer is required) at compile time instead of at interpreter 19483run-time. 194842. The ASL source line is printed with ALL errors and warnings. 194853. Bug fix for source EOF without final linefeed. 194864. Debug option is split into a parse trace and a namespace trace. 194875. Namespace output option (-n) includes initial values for 19488integers and strings. 194896. Parse-only option added for quick syntax checking. 194907. Compiler checks for duplicate ACPI name declarations 19491 19492Version X2012: 194931. Relaxed typechecking to allow interchangeability between 19494strings, integers, and buffers. These types are now converted by 19495the interpreter at runtime. 194962. Compiler reports time taken by each internal subsystem in the 19497debug output file. 19498 19499 19500 ------------------------------------------ 19501Summary of changes for this label: 12_14_00 19502 19503ASL Compiler: 19504 19505This is the first official release of the compiler. Since the 19506compiler requires elements of the Core Subsystem, this label 19507synchronizes everything. 19508 19509------------------------------------------ 19510Summary of changes for this label: 12_08_00 19511 19512 19513Fixed a problem where named references within the ASL definition 19514of both OperationRegions and CreateXXXFields did not work 19515properly. The symptom was an AE_AML_OPERAND_TYPE during 19516initialization of the region/field. This is similar (but not 19517related internally) to the problem that was fixed in the last 19518label. 19519 19520Implemented both 32-bit and 64-bit support for the BCD ASL 19521functions ToBCD and FromBCD. 19522 19523Updated all legal headers to include "2000" in the copyright 19524years. 19525 19526 ------------------------------------------ 19527Summary of changes for this label: 12_01_00 19528 19529Fixed a problem where method invocations within the ASL definition 19530of both OperationRegions and CreateXXXFields did not work 19531properly. The symptom was an AE_AML_OPERAND_TYPE during 19532initialization of the region/field: 19533 19534 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19535[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19536(0x3005) 19537 19538Fixed a problem where operators with more than one nested 19539subexpression would fail. The symptoms were varied, by mostly 19540AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19541problem that has gone unnoticed until now. 19542 19543 Subtract (Add (1,2), Multiply (3,4)) 19544 19545Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19546previous build (The prefix part of a relative path was handled 19547incorrectly). 19548 19549Fixed a problem where Operation Region initialization failed if 19550the operation region name was a "namepath" instead of a simple 19551"nameseg". Symptom was an AE_NO_OPERAND error. 19552 19553Fixed a problem where an assignment to a local variable via the 19554indirect RefOf mechanism only worked for the first such 19555assignment. Subsequent assignments were ignored. 19556 19557 ------------------------------------------ 19558Summary of changes for this label: 11_15_00 19559 19560ACPI 2.0 table support with backwards support for ACPI 1.0 and the 195610.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19562the AML interpreter does NOT have support for the new 2.0 ASL 19563grammar terms at this time. 19564 19565All ACPI hardware access is via the GAS structures in the ACPI 2.0 19566FADT. 19567 19568All physical memory addresses across all platforms are now 64 bits 19569wide. Logical address width remains dependent on the platform 19570(i.e., "void *"). 19571 19572AcpiOsMapMemory interface changed to a 64-bit physical address. 19573 19574The AML interpreter integer size is now 64 bits, as per the ACPI 195752.0 specification. 19576 19577For backwards compatibility with ACPI 1.0, ACPI tables with a 19578revision number less than 2 use 32-bit integers only. 19579 19580Fixed a problem where the evaluation of OpRegion operands did not 19581always resolve them to numbers properly. 19582 19583------------------------------------------ 19584Summary of changes for this label: 10_20_00 19585 19586Fix for CBN_._STA issue. This fix will allow correct access to 19587CBN_ OpRegions when the _STA returns 0x8. 19588 19589Support to convert ACPI constants (Ones, Zeros, One) to actual 19590values before a package object is returned 19591 19592Fix for method call as predicate to if/while construct causing 19593incorrect if/while behavior 19594 19595Fix for Else block package lengths sometimes calculated wrong (if 19596block > 63 bytes) 19597 19598Fix for Processor object length field, was always zero 19599 19600Table load abort if FACP sanity check fails 19601 19602Fix for problem with Scope(name) if name already exists 19603 19604Warning emitted if a named object referenced cannot be found 19605(resolved) during method execution. 19606 19607 19608 19609 19610 19611------------------------------------------ 19612Summary of changes for this label: 9_29_00 19613 19614New table initialization interfaces: AcpiInitializeSubsystem no 19615longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19616necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19617>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19618AcpiLoadTables 19619 19620Note: These interface changes require changes to all existing OSDs 19621 19622The PCI_Config default address space handler is always installed 19623at the root namespace object. 19624 19625------------------------------------------- 19626Summary of changes for this label: 09_15_00 19627 19628The new initialization architecture is implemented. New 19629interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19630AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19631 19632(Namespace is automatically loaded when a table is loaded) 19633 19634The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1963552 bytes to 32 bytes. There is usually one of these for every 19636namespace object, so the memory savings is significant. 19637 19638Implemented just-in-time evaluation of the CreateField operators. 19639 19640Bug fixes for IA-64 support have been integrated. 19641 19642Additional code review comments have been implemented 19643 19644The so-called "third pass parse" has been replaced by a final walk 19645through the namespace to initialize all operation regions (address 19646spaces) and fields that have not yet been initialized during the 19647execution of the various _INI and REG methods. 19648 19649New file - namespace/nsinit.c 19650 19651------------------------------------------- 19652Summary of changes for this label: 09_01_00 19653 19654Namespace manager data structures have been reworked to change the 19655primary object from a table to a single object. This has 19656resulted in dynamic memory savings of 3X within the namespace and 196572X overall in the ACPI CA subsystem. 19658 19659Fixed problem where the call to AcpiEvFindPciRootBuses was 19660inadvertently left commented out. 19661 19662Reduced the warning count when generating the source with the GCC 19663compiler. 19664 19665Revision numbers added to each module header showing the 19666SourceSafe version of the file. Please refer to this version 19667number when giving us feedback or comments on individual modules. 19668 19669The main object types within the subsystem have been renamed to 19670clarify their purpose: 19671 19672ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19673ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19674ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19675 19676NOTE: no changes to the initialization sequence are included in 19677this label. 19678 19679------------------------------------------- 19680Summary of changes for this label: 08_23_00 19681 19682Fixed problem where TerminateControlMethod was being called 19683multiple times per method 19684 19685Fixed debugger problem where single stepping caused a semaphore to 19686be oversignalled 19687 19688Improved performance through additional parse object caching - 19689added ACPI_EXTENDED_OP type 19690 19691------------------------------------------- 19692Summary of changes for this label: 08_10_00 19693 19694Parser/Interpreter integration: Eliminated the creation of 19695complete parse trees for ACPI tables and control methods. 19696Instead, parse subtrees are created and then deleted as soon as 19697they are processed (Either entered into the namespace or executed 19698by the interpreter). This reduces the use of dynamic kernel 19699memory significantly. (about 10X) 19700 19701Exception codes broken into classes and renumbered. Be sure to 19702recompile all code that includes acexcep.h. Hopefully we won't 19703have to renumber the codes again now that they are split into 19704classes (environment, programmer, AML code, ACPI table, and 19705internal). 19706 19707Fixed some additional alignment issues in the Resource Manager 19708subcomponent 19709 19710Implemented semaphore tracking in the AcpiExec utility, and fixed 19711several places where mutexes/semaphores were being unlocked 19712without a corresponding lock operation. There are no known 19713semaphore or mutex "leaks" at this time. 19714 19715Fixed the case where an ASL Return operator is used to return an 19716unnamed package. 19717 19718------------------------------------------- 19719Summary of changes for this label: 07_28_00 19720 19721Fixed a problem with the way addresses were calculated in 19722AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19723manifested itself when a Field was created with WordAccess or 19724DwordAccess, but the field unit defined within the Field was less 19725 19726than a Word or Dword. 19727 19728Fixed a problem in AmlDumpOperands() module's loop to pull 19729operands off of the operand stack to display information. The 19730problem manifested itself as a TLB error on 64-bit systems when 19731accessing an operand stack with two or more operands. 19732 19733Fixed a problem with the PCI configuration space handlers where 19734context was getting confused between accesses. This required a 19735change to the generic address space handler and address space 19736setup definitions. Handlers now get both a global handler context 19737(this is the one passed in by the user when executing 19738AcpiInstallAddressSpaceHandler() and a specific region context 19739that is unique to each region (For example, the _ADR, _SEG and 19740_BBN values associated with a specific region). The generic 19741function definitions have changed to the following: 19742 19743typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19744UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19745*HandlerContext, // This used to be void *Context void 19746*RegionContext); // This is an additional parameter 19747 19748typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19749RegionHandle, UINT32 Function, void *HandlerContext, void 19750**RegionContext); // This used to be **ReturnContext 19751 19752------------------------------------------- 19753Summary of changes for this label: 07_21_00 19754 19755Major file consolidation and rename. All files within the 19756interpreter have been renamed as well as most header files. This 19757was done to prevent collisions with existing files in the host 19758OSs -- filenames such as "config.h" and "global.h" seem to be 19759quite common. The VC project files have been updated. All 19760makefiles will require modification. 19761 19762The parser/interpreter integration continues in Phase 5 with the 19763implementation of a complete 2-pass parse (the AML is parsed 19764twice) for each table; This avoids the construction of a huge 19765parse tree and therefore reduces the amount of dynamic memory 19766required by the subsystem. Greater use of the parse object cache 19767means that performance is unaffected. 19768 19769Many comments from the two code reviews have been rolled in. 19770 19771The 64-bit alignment support is complete. 19772 19773------------------------------------------- 19774Summary of changes for this label: 06_30_00 19775 19776With a nod and a tip of the hat to the technology of yesteryear, 19777we've added support in the source code for 80 column output 19778devices. The code is now mostly constrained to 80 columns or 19779less to support environments and editors that 1) cannot display 19780or print more than 80 characters on a single line, and 2) cannot 19781disable line wrapping. 19782 19783A major restructuring of the namespace data structure has been 19784completed. The result is 1) cleaner and more 19785understandable/maintainable code, and 2) a significant reduction 19786in the dynamic memory requirement for each named ACPI object 19787(almost half). 19788 19789------------------------------------------- 19790Summary of changes for this label: 06_23_00 19791 19792Linux support has been added. In order to obtain approval to get 19793the ACPI CA subsystem into the Linux kernel, we've had to make 19794quite a few changes to the base subsystem that will affect all 19795users (all the changes are generic and OS- independent). The 19796effects of these global changes have been somewhat far reaching. 19797Files have been merged and/or renamed and interfaces have been 19798renamed. The major changes are described below. 19799 19800Osd* interfaces renamed to AcpiOs* to eliminate namespace 19801pollution/confusion within our target kernels. All OSD 19802interfaces must be modified to match the new naming convention. 19803 19804Files merged across the subsystem. A number of the smaller source 19805and header files have been merged to reduce the file count and 19806increase the density of the existing files. There are too many 19807to list here. In general, makefiles that call out individual 19808files will require rebuilding. 19809 19810Interpreter files renamed. All interpreter files now have the 19811prefix am* instead of ie* and is*. 19812 19813Header files renamed: The acapi.h file is now acpixf.h. The 19814acpiosd.h file is now acpiosxf.h. We are removing references to 19815the acronym "API" since it is somewhat windowsy. The new name is 19816"external interface" or xface or xf in the filenames.j 19817 19818 19819All manifest constants have been forced to upper case (some were 19820mixed case.) Also, the string "ACPI_" has been prepended to many 19821(not all) of the constants, typedefs, and structs. 19822 19823The globals "DebugLevel" and "DebugLayer" have been renamed 19824"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19825 19826All other globals within the subsystem are now prefixed with 19827"AcpiGbl_" Internal procedures within the subsystem are now 19828prefixed with "Acpi" (with only a few exceptions). The original 19829two-letter abbreviation for the subcomponent remains after "Acpi" 19830- for example, CmCallocate became AcpiCmCallocate. 19831 19832Added a source code translation/conversion utility. Used to 19833generate the Linux source code, it can be modified to generate 19834other types of source as well. Can also be used to cleanup 19835existing source by removing extraneous spaces and blank lines. 19836Found in tools/acpisrc/* 19837 19838OsdUnMapMemory was renamed to OsdUnmapMemory and then 19839AcpiOsUnmapMemory. (UnMap became Unmap). 19840 19841A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19842When set to one, this indicates that the caller wants to use the 19843 19844semaphore as a mutex, not a counting semaphore. ACPI CA uses 19845both types. However, implementers of this call may want to use 19846different OS primitives depending on the type of semaphore 19847requested. For example, some operating systems provide separate 19848 19849"mutex" and "semaphore" interfaces - where the mutex interface is 19850much faster because it doesn't have all the overhead of a full 19851semaphore implementation. 19852 19853Fixed a deadlock problem where a method that accesses the PCI 19854address space can block forever if it is the first access to the 19855space. 19856 19857------------------------------------------- 19858Summary of changes for this label: 06_02_00 19859 19860Support for environments that cannot handle unaligned data 19861accesses (e.g. firmware and OS environments devoid of alignment 19862handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19863been added (via configurable macros) in these three areas: - 19864Transfer of data from the raw AML byte stream is done via byte 19865moves instead of word/dword/qword moves. - External objects are 19866aligned within the user buffer, including package elements (sub- 19867objects). - Conversion of name strings to UINT32 Acpi Names is now 19868done byte-wise. 19869 19870The Store operator was modified to mimic Microsoft's 19871implementation when storing to a Buffer Field. 19872 19873Added a check of the BM_STS bit before entering C3. 19874 19875The methods subdirectory has been obsoleted and removed. A new 19876file, cmeval.c subsumes the functionality. 19877 19878A 16-bit (DOS) version of AcpiExec has been developed. The 19879makefile is under the acpiexec directory. 19880