1---------------------------------------- 228 June 2023. Summary of changes for version 20230628: 3 40) Global changes: 5 6Fixed 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. 7 8Added 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. 9 10Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5. 11 121) ACPICA kernel-resident subsystem: 13 14Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com. 15 16Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang@intel.com. 17 181) ACPICA kernel-resident subsystem: 19 20Fix 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. 21 22Also, 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. 23 242) iASL Compiler/Disassembler and ACPICA tools:. 25 26IASL/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. 27 28AcpiExec: 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. 29 30AcpiExec: 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. 31---------------------------------------- 3231 March 2023. Summary of changes for version 20230331: 33 34This release is available at https://acpica.org/downloads 35 360) Global changes: 37 38 39Update all copyright notices to the year 2023. This effects all source 40modules, as well as utility signons. 41Add OS-specific support for Zephyr RTOS. 42Fix miscellaneous code that accesses various objects. 43Remove some dead code. 44Add C ?Flexible Array? support. 45Add support for 64 bit LoongArch compilation. 46Add first batch of RISC-V related definitions. 47Performed a global automated update to remove tabs, fix indentation 48issues, etc. 49 501) ACPICA kernel-resident subsystem: 51 52hwvalid: Drop port I/O validation. 53 542) ACPICA tools and utilities: 55 56iASL: Added full macro support in the preprocessor. Example: 57#define ABCD(a,b,c,d) a+b+c-d 58 59Known macro support limitations (at this time): 60 No support for multi-line #define macros (backslash continuation 61lines) 62 No support for the C-style ternary operator 63 No support for the stringizing operator (#) 64 No support for the concatenation (token pasting) operator (##) 65 No support for variable number of macro arguments 66 67Add support for AMD Secure Processor Table (ASPT) version 1. 68Add support for Arm's MPAM ACPI table version 2. 69ACPI 6.5: MADT: add support for trace buffer extension in GICC. 70Headers: Delete bogus NodeArray array of pointers from AEST table. 71PHAT table support is still ongoing. 72 73 74---------------------------------------- 7520 October 2022. Summary of changes for version 20221020: 76 77This release is available at https://acpica.org/downloads 78 790) Global changes: 80 81Allow disabling of -Werror. For distro maintainers having `-Werror` can 82delay update of GCC. Since every GCC release might add new warnings that 83were not yet captured, it might break the build of packages. With this 84change, distros can now build with `NOWERROR=TRUE` instead of patching 85either the errors or the makefiles. The default behavior keeps on using 86`-Werror`. 87 881) ACPICA kernel-resident subsystem: 89 90Added support for FFH Operation Region special context data. FFH(Fixed 91Function Hardware) Opregion is approved to be added in ACPI 6.5 via code 92first approach[1]. It requires special context data similar to GPIO and 93Generic Serial Bus as it needs to know platform specific offset and 94length. 95 96Reverted this commit "executer/exsystem: Warn about sleeps greater than 9710 ms." Due to user complaints about valid sleeps greater than 10ms seen 98in some existing machines -- generating lots of warnings. 99 100Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that 101EBDA region must be at least 1KiB in size. Because this is not 102guaranteed, it might happen that while scanning the memory for RSDP 103pointer, the kernel touches memory above 640KiB. This is unwanted as the 104VGA memory range may not be decoded or even present when running under 105virtualization. 106 107Check that EBDA pointer is in valid memory. If the memory at 0x40e is 108uninitialized, the retrieved physical memory address of EBDA may be 109beyond the low memory (i.e. above 640K). If so, the kernel may 110unintentionally access the VGA memory, that might not be decoded or even 111present in case of virtualization. 112 1132) iASL Compiler/Disassembler and ACPICA tools: 114 115Completed the existing partial support for the CDAT "table". Although 116this isn't technically an ACPI table (It doesn't go into the XSDT), it is 117possible to support this table in the Data Table compiler. Created one 118new file, "utilities/utcksum.c", used to centralize checksum 119generation/validation into one location. Includes changes to makefiles 120and MSVC project files. 121 122Updated support for the IORT table - update to version E.e 123 124Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table 125 126iASL: Added CCEL table to both compiler/disassembler. 127 128iASL: NHLT table: Fixed compilation of optional undocumented fields 129 130iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 131("iASL: Add CCEL table to both compiler/disassembler") introduced the 132iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL 133table member reference. To fix it, change ACPI_TDEL_OFFSET with 134ACPI_CCEL_OFFSET. 135 136---------------------------------------- 13731 March 2022. Summary of changes for version 20220331: 138 1390) Global changes: 140 141Update all copyright notices to the year 2022. This effects all source 142modules, as well as utility signons. 143 144 1451) ACPICA kernel-resident subsystem: 146 147For the ASL Sleep() operator, issue a warning if the sleep value is 148greater than 10 Milliseconds. Quick boottime is important, so warn about 149sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 150ms, so excessive delays should be called out. 10 ms is chosen randomly, 151but three of such delays would already make up ten percent of the 152boottime. 153 154Namespace: Avoid attempting to walk the Namespace if the Namespace does 155not exist. 156 157AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the 158LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a 159pass/fail integer. Now load returns a pass/fail integer, as well as 160storing the return value in an optional 2nd argument. 161 162Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid 163"performing pointer subtraction with a null pointer has undefined 164behavior" compiler warnings, use uintptr_t and offsetof() that are always 165available during Linux kernel builds to define ACPI_UINTPTR_T and the 166ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code 167in the Linux kernel. 168 169Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted 170by superm1. 171 172executer/exsystem: Inform users about ACPI spec violation for the Stall() 173operator. Values greater than 100 microseconds violate the ACPI 174specification, so warn users about it. From the ACPI Specification 175version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: 176> The implementation of Stall is OS-specific, but must not relinquish 177> control of the processor. Because of this, delays longer than 100 178> microseconds must use Sleep instead of Stall. 179 180 1812) iASL Compiler/Disassembler and ACPICA tools: 182 183Data Table Compiler/Disassembler: Add support for the APMT table - ARM 184Performance Monitoring Unit table. Submitted by @bwicaksononv. 185 186Data Table Compiler/Disassembler: For MADT, add support for the OEM- 187defined subtables (Types 0x80-0x7F). 188 189Data Table Compiler: Fixed a problem with support for the SDEV table, 190where a subtable Length was not computed correctly. 191 192Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT 193Acpi table support. 194 195Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and 196add template. Submitted by MasterDrogo. 197 198Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: 199iASL/NHLT: Rename linux specific structures to DeviceInfo to improve 200readability of the code. 201iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. 202Undocumented bytes at the end of Endpoint Descriptor can be present 203independently of Linux-specific structures. Their size can also vary. 204iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 205bytes of size and then an amount of bytes specified by size. All of the 206terminators that I've seen had a size equal to 4, but theoretically it 207can vary. 208 209iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C). 210 211iASL: Remove a remark due to excessive output. Removed a remark for 212duplicate Offset() operators, due to a user complaint. 213 214---------------------------------------- 21517 December 2021. Summary of changes for version 20211217: 216 2171) ACPICA kernel-resident subsystem: 218 219Hardware: Do not flush CPU cache when entering S4 and S5. According to 220ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to 221S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of 222the sleep state. Blind cache flush on entering S5 causes problems for 223TDX. 224 225Avoid subobject buffer overflow when validating RSDP signature. Since the 226Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to 227it is only to a 4-char array, and so trying to read past the 4th 228character, as will be done when it is an RSDP, reads beyond the bounds of 229the accessed member. Contributed by jrtc27. 230 231Add support for PCC Opregion special context data. PCC Opregion added in 232ACPIC 6.3 requires special context data similar to GPIO and Generic 233Serial Bus as it needs to know the internal PCC buffer and its length as 234well as the PCC channel index when the opregion handler is being executed 235by the OSPM. Adds support for the special context data needed by PCC 236Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com> 237 2382) iASL Compiler/Disassembler and ACPICA tools: 239 240iASL: Completed compiler support for the NHLT ACPI table. 241 242iASL/NHLT table: Fixed a reported problem where a fault would occur 243during disassembly of a "Linux-Specific" section if the "Specific Data" 244part was not present. 245 246iASL: Added full support (compiler and disassembler) for the AGDI ACPI 247table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>. 248 249iASL: Added full support for the TDEL ACPI table. 250 251iASL table compiler: FADT support updates: 2521) Allow the 32-bit DSDT address to be zero. 2532) Issue error if both the 32-bit and 64-bit DSDT addresses are zero. 254 255iASL: Fix unaligned accesses to local cache allocations. Contributed by 256jrtc27. 257 258iASL: Open binary input files in binary mode, not text mode Affects 259binary input AML files, as well as binary data table files, for 260disassembly. 261 262---------------------------------------- 26330 September 2021. Summary of changes for version 20210930: 264 265This release is available at https://acpica.org/downloads 266 2671) ACPICA kernel-resident subsystem: 268 269Hardware: Avoid evaluating methods too early during system resume. During 270wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called 271and it tries to get memory from the OS in order to evaluate a control 272method, but if KFENCE is enabled in the Linux kernel, the memory 273allocation attempt causes an IRQ work to be queued and a self-IPI to be 274sent to the CPU running the code which requires the memory controller to 275be ready, so if that happens too early in the wakeup path, it doesn't 276work. 277 278Prevent that from taking place by calling AcpiGetSleepTypeData() for S0 279upfront, when preparing to enter a given sleep state, and saving the data 280obtained by it for later use during system wakeup. 281 282Added a new _OSI string, "Windows 2020". Posted by superm1. 283 2842) iASL Compiler/Disassembler and ACPICA tools: 285 286iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS 287objects: 288New/latest rules: Under a Device Object: 289 1) If _PRS is present, must have _CRS and _SRS 290 2) If _SRS is present, must have _PRS (_PRS requires _CRS and 291_SRS) 292 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS 293requires _CRS and _SRS) 294 4) If _SRS is present, probably should have a _DIS (Remark only) 295 296iASL table disassembler: Added disassembly support for the NHLT ACPI 297table. Note: support for Vendor-defined microphone arrays and SNR 298extensions are not supported at this time -- mostly due to a lack of 299example tables. Actual compiler support for NHLT is forthcoming. 300 301Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It 302uses the same subtable structure as the existing Generic Initiator 303Affinity type. 304 305Added the flag for online capable in the MADT, introduced in ACPI 6.3. 306Posted by superm1. 307 3083) ACPICA documentation: Updated the legal info (that appears at the 309start of the Documents) to clarify distribution rights that are granted. 310 311 312---------------------------------------- 31330 July 2021. Summary of changes for version 20210730: 314 315This release is available at https://acpica.org/downloads 316 3171) ACPICA kernel-resident subsystem: 318 3192) iASL Compiler/Disassembler and ACPICA tools: 320 321iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). 322 Under the Device Object: 323 1) If _DIS is present, must have a _CRS and _SRS 324 2) If _PRS is present, must have a _CRS, _DIS, and _SRS 325 3) If _SRS is present, must have a _CRS and _DIS 326A warning will be issued for each of these cases. 327Note: For existing ASL/projects, these warnings may be disabled by 328specifying this on the command line: 329"-vw 3141" 330 331iASL Table Disassembler/Table compiler: Fix for WPBT table with no 332command-line arguments. Handle the case where the Command-line 333Arguments table field does not exist (zero). 334 335Headers: Add new DBG2 Serial Port Subtypes 336The Microsoft Debug Port Table 2 (DBG2) specification revision 337September 21, 2020 comprises additional Serial Port Subtypes [1]. 338Reflect that in the actbl1.h header file. Submitted by: 339semihalf-wojtas-marcin 340 341iASL: Add full support for the AEST table (data compiler) 342Includes support in the table compiler and the disassembler. 343 344Add PRMT module header to facilitate parsing. 345This structure is used in to parse PRMT in other Operating Systems 346that relies on using subtable headers in order to parse ACPI tables. 347Although the PRMT doesn't have "subtables" it has a list of module 348information structures that act as subtables. 349 350iASL: Table disassembler: Add missing strings to decode subtable types. 351Includes the MADT and CEDT tables. 352 353 354---------------------------------------- 35504 June 2021. Summary of changes for version 20210604: 356 3571) ACPICA kernel-resident subsystem: 358 359Cleaned up (delete) the context mutex during local address handler object 360deletion. 361 362Fixed a memory leak caused by the _CID repair function. 363 364Added support for PlatformRtMechanism OperationRegion handler. Adds a new 365utility function, AcpiUtConvertUuidToString. Writing a buffer to a 366PlatformRtMechanism fieldunit invokes a bidirectional transaction. The 367input buffer contains 26 bytes containing 9 bytes of status, a command 368byte and a 16-byte UUID. This change will simply pass this incoming 369buffer to a handler registered by the OS. 370 3712) iASL Compiler/Disassembler and ACPICA tools: 372 373Added full support for the PRMT ACPI table (Platform Runtime Mechanism 374Table). Includes support in the iASL compiler, the disassembler, and the 375template generator. 376 377Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. 378 379Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI 380table. 381 382Added full support for the SVKL (Storage Volume Key Location Table) ACPI 383table. Header file support from Kuppuswamy Sathyanarayanan 384<sathyanarayanan.kuppuswamy@linux.intel.com>. 385 386Completed full support for the IVRS (I/O Virtualization Reporting 387Structure) ACPI table. Added compiler support for IVRS, updated 388disassembler support. Adds a new utility, UtIsIdInteger, to determine if 389a HID/CID is an integer or a string. 390 391Headers: Added more structs to the CEDT table: CXL fixed memory window 392structure. 393 394ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. 395 396---------------------------------------- 39731 March 2021. Summary of changes for version 20210331: 398 399This release is available at https://acpica.org/downloads, and includes 400all ACPI 6.4 support 401 4021) ACPICA kernel-resident subsystem: 403ACPI 6.4: iASL: deprecate DDBHandleObj keyword 404Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 405allocating an object using kmalloc(), but then frees it 406using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 407Fixed a race condition in generic serial bus operation region handler. 408Fixed by Hans de Goede. 409 4102) iASL Compiler/Disassembler and ACPICA tools: 411 412ACPI 6.4: NFIT: add Location Cookie field 413ACPI 6.4: HMAT: add new fields/flags 414ACPI 6.4: Add new flags in SRAT 415ACPI 6.4: add SDEV secure access components 416ACPI 6.4: add Csi2Bus resource template 417ACPI 6.4: add support for PHAT table 418ACPI 6.4: add support for PMTT table 419Add disassembly support for the IVRS table. Compilation of the table is 420not yet complete. 421Fixed a potential infinite loop due to type mismatch. The for-loop is 422using a UINT8 counter and comparing the upper 423limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 424the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 425will wrap around to zero and the loop will never exit. I suspect 426the AslGbl_ExpectedMessagesIndex is never that high, but fixing 427this does future proof the code and cleans up static analysis 428warnings.Colin King. 429iASL/TableCompiler: update it with IORT table E.b revision changes. From 430shamiali2008. 431iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 432off-by: Jean-Philippe Brucker. 433iASL/TableCompiler: Add compilation support for CEDT table. Also, update 434the CEDT template. 435 436---------------------------------------- 43705 January 2021. Summary of changes for version 20210105: 438 439This release is available at https://acpica.org/downloads 440 441 4421) ACPICA kernel-resident subsystem: 443 444Updated all copyrights to 2021. This affects all ACPICA source code 445modules. 446 4472) iASL Compiler/Disassembler and ACPICA tools: 448 449ASL test suite (ASLTS): Updated all copyrights to 2021. 450 451Tools and utilities: Updated all signon copyrights to 2021. 452 453iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 454MTMR. Al Stone. 455 456 457---------------------------------------- 45817 December 2020. Summary of changes for version 20201217: 459 460This release is available at https://acpica.org/downloads 461 462 4631) ACPICA kernel-resident subsystem: 464 465Note: The implementation of ACPI 6.4 is underway, and is expected to be 466mostly finished next month, when ACPI 6.4 is released. 467 468From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 469several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 470enable this. 471 472AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 473These included a few casts, as well as a null pointer check. 474 475Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 476implicit fallthrough, as well as __attribute__((__fallthrough__)) and 477comments to explicitly denote that cases of fallthrough were intentional. 478Clang also supports this warning and statement attribute, but not the 479comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 480of GCC. With assistance from @nickdesaulniers. 481 4822) iASL Compiler/Disassembler and ACPICA tools: 483 484Added improvement to method call analysis by saving the return type and 485relaxing certain cases of type checking. 486 487iASL Table Compiler: Improved info messages. Added a message to the -T 488option for when the default template (DSDT) is used. 489Also added a note for when multiple SSDTs are created with a DSDT that 490the SSDTs are created in the same file as the DSDT. 491 492 493---------------------------------------- 494 49513 November 2020. Summary of changes for version 20201113: 496 497This release is available at https://acpica.org/downloads 498 499 5001) ACPICA kernel-resident subsystem: 501 502Interpreter: fixed a memory leak by using use existing buffer in _HID 503repair. There was a memory leak that occurred when a _CID object is 504defined as a package containing string objects. When _CID is checked for 505any possible repairs, it calls a helper function to repair _HID (because 506_CID basically contains multiple _HID entries). The _HID repair function 507assumes that string objects are standalone objects that are not contained 508inside of any packages. The _HID repair function replaced the string 509object with a brand new object and attempted to delete the old object by 510decrementing the reference count of the old object. Strings inside of 511packages have a reference count of 2 so the _HID repair function leaves 512this object in a dangling state and causes a memory leak. Instead of 513allocating a brand new object and removing the old object, use the 514existing object when repairing the _HID object. 515 516Added function trace macros to improve namespace debugging. The namespace 517repair mechanism does not have function tracing macros. Add several trace 518macros to improve debuggability. 519 520Handle "orphan" _REG methods for GPIO OpRegions. Before this change 521AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 522matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 523Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 524The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 525UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 526to potential issues with checks for OpRegion availability, or in other 527words checks if _REG has been called for the OpRegion which the ACPI code 528wants to use. Except for the "orphan" EC handling, ACPICA core does not 529call _REG on an ACPI node which does not define an OpRegion matching the 530type being registered; and the reference design DSDT, from which most 531Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 532UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 533were assigned ACPI controlled functions in the reference design. Together 534this leads to the perfect storm, at least on the Cherry Trail based 535Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 536and has added the Cherry Trail specific UserDefined(0x93) opregion to its 537GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 538availability check for the standard GeneralPurposeIo OpRegion. This 539clearly is a bug in the DSDT, but this does work under Windows. This 540issue leads to the intel vbtn driver reporting the device always being in 541tablet-mode at boot, even if it is in laptop mode. Which in turn causes 542userspace to ignore touchpad events. So in other words, this issue causes 543the touchpad to not work at boot. This change fixes this by extending the 544"orphan" _REG method handling to also apply to GPIO address-space 545handlers. 546 547 5482) iASL Compiler/Disassembler and ACPICA tools: 549 550iASL: Added more info to namespace dump file (-ln option). In a separate 551section of the dump file (after the main namespace dump), emit the full 552pathname for each namespace node, its type, and the ASL filename and line 553number where it is declared. 554 555AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 556x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 557is omitted, all iASL exceptions are displayed. 558 559iASL: Use StringLiteral instead of StringData for some ASL macros. The 560use of the stringData rule allows for some "string" oriented opcodes 561(Such as ToString, ToHexString, etc.) None of which make sense with the 562macros in question. This change modifies the StringData part of the rule 563for these macros to a simple string literal - thus disallowing the use 564of ToString, ToHexString, etc. 565The following ASL operators (macros) are affected: 566EisaId 567Fprintf 568Printf 569ToUuid 570Unicode 571Note: The MS compiler requires the use of string literals for these 572operators also. 573 574iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 575the list of "known" UUIDs for the input to the ToUUID macro. 576 577Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 578NFIT table. 579 580 581---------------------------------------- 582 58325 September 2020. Summary of changes for version 20200925: 584 585This release is available at https://acpica.org/downloads 586 587 5881) ACPICA kernel-resident subsystem: 589 590Preserve memory opregion mappings. The ACPICA's strategy with respect to 591the handling of memory mappings associated with memory operation regions 592is to avoid mapping the entire region at once which may be problematic at 593least in principle (for example, it may lead to conflicts with 594overlapping mappings having different attributes created by drivers). It 595may also be wasteful, because memory opregions on some systems take up 596vastchunks of address space while the fields in those regions actually 597accessed by AML are sparsely distributed. 598 599For this reason, a one-page "window" is mapped for a given opregion on 600the first memory access through it and if that "window" does not cover an 601address range accessed through that opregion subsequently, it is unmapped 602and a new "window" is mapped to replace it. Next, if the new "window" is 603not sufficient to access memory through the opregion in question in the 604future, it will be replaced with yet another "window" and so on. That 605may lead to a suboptimal sequence of memory mapping and unmapping 606operations, for example if two fields in one opregion separated from each 607other by a sufficiently wide chunk of unused address space are accessed 608in an alternating pattern. 609 610Added support for 64 bit risc-v compilation. Useful for acpica tools and 611incorporating ACPICA into the Firmware Test Suite. Colin Ian King 612<colin.king@canonical.com>. 613 614Added support for SMBus predefined names (from SMBus Control Method 615Interface Specification, Version 1.0, December 10, 1999. New predefined 616names: 617 _SBA 618 _SBI 619 _SBR 620 _SBT 621 _SBW 622 623AML Disassembler: Added a new command, "All <NameSeg>". This command will 624evaluate all objects in the current namespace whose NameString contains 625the input NameSeg as the last element of the NameString. Useful for 626debugging. 627 628 6292) iASL Compiler/Disassembler and ACPICA tools: 630 631iASL: fixed a crash that occurred when predefined objects return packages 632with lengths that exceed the initializer list. 633 634iASL: added more detail to external resolution error message when 635compiling multiple definition blocks. 636 637iASL: added a remark for an attempt to create a nameseg or namestring 638containing lower-case letters. This should prevent declaring multiple 639namesegs or namestrings in an attempt to refer to different objects (with 640different cases), but actually refer to the same object(s). 641 642iASL: improve alias analysis by saving object type. If the alias is a 643method type, the parameter count is also recorded. 644 645AcpiExec: Increase the default loop timeout value. Was 1 second, is now 64610 seconds. Prevents unnecessary timeouts when executing control methods 647from the command line. 648 649AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 650list. Includes: 651 Memory Device 652 Generic Buttons Device 653 NVDIMM Root Device 654 Control Method Battery 655 Device Graphs for _DSD method 656 Hierarchical Data Extension 657....ARM CoreSight Graph 658 659---------------------------------------- 660 661 66217 July 2020. Summary of changes for version 20200717: 663 664This release is available at https://acpica.org/downloads 665 666 6671) ACPICA kernel-resident subsystem: 668 669Do not increment OperationRegion reference counts for field units. Recent 670server firmware has revealed that this reference count can overflow on 671large servers that declare many field units (thousands) under the same 672OperationRegion. This occurs because each field unit declaration will add 673a reference count to the source OperationRegion. This release solves the 674reference count overflow for OperationRegion objects by preventing 675fieldUnits from incrementing their parent OperationRegion's reference 676count. 677 678Replaced one-element arrays with flexible-arrays, which were introduced 679in C99. 680 681Restored the readme file containing the directions for generation of 682ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 683located at: generate/msvc2017/readme.txt 684 6852) iASL Compiler/Disassembler and ACPICA tools: 686 687iASL: Fixed a regression found in version 20200214. Prevent iASL from 688emitting an extra byte of garbage data when control methods declared a 689single parameter type without using braces. This extra byte is known to 690cause a blue screen on the Windows AML interpreter. 691 692iASL: Made a change to allow external declarations to specify the type of 693a named object even when some name segments are not defined. 694This change allows the following ASL code to compile (When DEV0 is not 695defined or not defined yet): 696 697 External (\_SB.DEV0.OBJ1, IntObj) 698 External (\_SB.DEV0, DeviceObj) 699 700iASL: Fixed a problem where method names in "Alias ()" statement could be 701misinterpreted. They are now interpreted correctly as method invocations. 702 703iASL: capture a method parameter count (Within the Method info segment, 704as well as the argument node) when using parameter type lists. 705 706---------------------------------------- 707 708 70928 May 2020. Summary of changes for version 20200528: 710 711 7121) ACPICA kernel-resident subsystem: 713 714Removed old/obsolete Visual Studio files which were used to build the 715Windows versions of the ACPICA tools. Since we have moved to Visual 716Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 717project files. The new subdirectory and solution file are located at: 718 719 acpica/generate/msvc2017/AcpiComponents.sln 720 721 7222) iASL Compiler/Disassembler and ACPICA tools: 723 724iASL: added support for a new OperationRegion Address Space (subtype): 725PlatformRtMechanism. Support for this new keyword is being released for 726early prototyping. It will appear in the next release of the ACPI 727specification. 728 729iASL: do not optimize the NameString parameter of the CondRefOf operator. 730In the previous iASL compiler release, the NameString parameter of the 731CondRefOf was optimized. There is evidence that some implementations of 732the AML interpreter do not perform the recursive search-to-parent search 733during the execution of the CondRefOf operator. Therefore, the CondRefOf 734operator behaves differently when the NameString parameter is a single 735name segment (a NameSeg) as opposed to a full NamePath (starting at the 736root scope) or a NameString containing parent prefixes. 737 738iASL: Prevent an inadvertent remark message. This change prevents a 739remark if within a control method the following exist: 7401) An Operation Region is defined, and 7412) A Field operator is defined that refers to the region. 742This happens because at the top level, the Field operator does not 743actually create a new named object, it simply references the operation 744region. 745 746Removed support for the acpinames utility. The acpinames was a simple 747utility used to populate and display the ACPI namespace without executing 748any AML code. However, ACPICA now supports executable opcodes outside of 749control methods. This means that executable AML opcodes such as If and 750Store opcodes need to be executed during table load. Therefore, acpinames 751would need to be updated to match the same behavior as the acpiexec 752utility and since acpiexec can already dump the entire namespace (via the 753'namespace' command), we no longer have the need to maintain acpinames. 754 755 In order to dump the contents of the ACPI namespace using acpiexec, 756execute the following command from the command line: 757 758 acpiexec -b "n" [aml files] 759 760---------------------------------------- 761 762 76330 April 2020. Summary of changes for version 20200430: 764 7651) ACPICA kernel-resident subsystem: 766 767Cleaned up the coding style of a couple of global variables 768(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 769AcpiProtocolLengths was made static, and the definition of 770AcpiGbl_NextCmdNum was moved to acglobal.h. 771 772 7732) iASL Compiler/Disassembler and ACPICA tools: 774 775iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 776associated with a field. 777 778Disassembler: has been made more resilient so that it will continue to 779parse AML even if the AML generates ACPI namespace errors. This enables 780iASL to disassemble some AML that may have been compiled using older 781versions of iASL that no longer compile with newer versions of iASL. 782 783iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 784was a mixup where _NIG required one parameter and _NIH required zero 785parameters. This change swaps these parameter requirements. Now it is 786required that _NIH must be called with one parameter and _NIG requires 787zero parameters. 788 789iASL: Allow use of undefined externals as long as they are protected by 790an if (CondRefOf (...)) block when compiling multiple definition blocks. 791 792iASL: Fixed the type override behavior of named objects that are declared 793as External. External declarations will no longer override the type of 794the actual definition if it already exists. 795 796AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 797command line wildcard support on Windows. Note: the AcpiNames utility is 798essentially redundant with the AcpiExec utility (using the "namespace" 799command) and is therefore deprecated. It will be removed in future 800releases of ACPICA. 801 802Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 803operators. The disassembler is intended to emit existing ASL code as-is. 804Therefore, error messages emitted during disassembly should be ignored or 805handled in a way such that the disassembler can continue to parse the 806AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 807parsing for create operators in order to complete parsing ASL termlists. 808 809iASL DataTable Compiler: IVRS table: fix potentially uninitialized 810variable warning. Some compilers catch potential uninitialized variables. 811This is done by examining branches of if/else statements. This change 812replaces an "else if" with an "else" to fix the uninitialized variable 813warning. 814 815 816---------------------------------------- 81726 March 2020. Summary of changes for version 20200326: 818 819 8201) ACPICA kernel-resident subsystem: 821 822Performed a code clean-up to prevent build errors on early versions of 823GCC-10. 824 825Added the NHLT table signature. iASL data table compiler/disassembler 826support for this table is coming soon. 827 828 8292) iASL Compiler/Disassembler and ACPICA tools: 830 831AcpiExec: Fixed several problems with the namespace initialization file 832(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 833errors, several seg faults, and enhancements to line parsing within the 834init file. In addition, each object found in the init file and it's new 835value is displayed, as well as any such entries that do not have a 836corresponding name in the namespace. For reference, the syntax for the 837various supported data types are presented below: 838 PCHG 0x777788889999BBBB // Integer 839 \DEV1.STR1 "XYZ" // String 840 BUF1 (88 99 AA) // Buffer 841 PKG1 [0x1111 0x2222] // Package 842 \BF1 0x7980 // BufferField 843 RCRV 0x0123456789ABCDEF // Field Unit 844 845iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 846can be used anywhere in a given ASL file to configure iASL to expect an 847iASL compiler error code on the line where this macro was placed. If the 848error code does not exist, an error is generated. This is intended to be 849used for ACPICA's ASL test suite, but can be used by ASL developers as 850well. 851 852iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 853IVRS table parsing supported only IVHD type 10h structures. Parsing an 854IVHD type 11h caused the iasl to report unknown subtable type. Add 855necessary structure definition for IVHD type 11h and apply correct 856parsing method based on subtable type. Micha? ?ygowski. 857 858iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 859According to AMD IOMMU Specification Revision 3.05 the reserved field 860should be IOMMU Feature Reporting. Change the name of the field to the 861correct one. Micha? ?ygowski. 862 863acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 864based on suggestions by David Seifert and Benjamin Berg. 865 866iASL: table compiler: removed an unused variable (DtCompilerParserResult) 867causing linking errors. Patch based on suggestions by David Seifert and 868Benjamin Berg. 869 870iASL: table compiler: make LexBuffer static to avoid linking errors in 871newer compilers. Patch based on suggestions by David Seifert and Benjamin 872Berg. 873 874iASL: fixed type matching between External and Named objects. External 875object types can only be expressed with ACPI object type values that are 876defined in the ACPI spec. However, iASL uses ACPI object type values that 877are local to ACPICA in addition to the values defined in the ACPI spec. 878This change implements type matching to map some object type values 879specific to ACPICA to ones that are defined in the ACPI spec. 880 881iASL: Dropped the type mismatch compiler error that can arise from 882External declarations to a warning. This warning can occur when there is 883a type difference between the external declaration and the actual object 884declaration (when compiling multiple files/modules simultaneously). 885 886iASL: removed an incorrect error message regarding externals. This change 887removes an incorrect error that is emitted when a duplicate external 888declaration does not contain a type that opens a scope. This is incorrect 889because the duplicate external with conflicting types are already caught 890by iASL and it doesn't make any sense to enforce what this conflicting 891type should be. 892 893AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 894surrounded by parens. Otherwise, a logical statement that applies a 895logical not operator to this macro could result in a computation that 896applies the operator to the left side of the logical and but not the 897right. Reported-by: John Levon <john.levon@joyent.com> 898 899Fixed a problem with the local version of sprint(): On 32-bit, the 900provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 901String + Size will wrap, meaning End < Start, and 902AcpiUtBoundStringOutput() will never output anything as a result. The 903symptom seen of this was acpixtract failing to output anything -- with a 904custom build that included utprint.c. Signed-off-by: John Levon 905<john.levon@joyent.com> 906 907iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 908ACPI specification. 909 910 911---------------------------------------- 91214 February 2020. Summary of changes for version 20200214: 913 914 9151) ACPICA kernel-resident subsystem: 916 917Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 918in a guest when it receives a sleep trigger from the hypervisor. When the 919guest resumes from this power state, it does not see the SleepEnabled 920bit. In other words, the sleepHibernation (S4) is triggered in a guest 921when it receives a sleep trigger from the hypervisor. When the guest 922resumes from this power state, it does not see the SleepEnabled bit. In 923other words, the sleep button is not enabled on waking from an S4 state. 924This causes subsequent invocation of sleep state to fail since the 925guest.button is not enabled on waking from an S4 state. This causes 926subsequent invocation of sleep state to fail in the guest. Fix this 927problem by enabling the sleep button in ACPI legacy wake. From Anchal 928Agarwal <anchalag@amazon.com>. 929 930Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 931for checking the status bits of all enabled GPEs in one go. It is needed 932to distinguish spurious SCIs from genuine ones when deciding whether or 933not to wake up the system from suspend-to-idle. 934 935Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 936using HOST in their environment to represent the host name for their 937machines. Avoid this problem by renaming this variable from HOST to 938ACPI_HOST. 939 940MSVC 2017 project files: Enable multiprocessor generation to improve 941build performance. 942 943Added a macro to get the byte width of a Generic Address structure. New 944ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 945ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 946 947 9482) iASL Compiler/Disassembler and ACPICA tools: 949 950iASL: Implemented full support for the (optional, rarely used) ReturnType 951and ParameterTypesList for the Method, Function, and External operators. 952For Method declarations, the number of individual ParameterTypes must 953match the declaration of the number of arguments (NumArgs). This also 954Fixes a problem with the External operator where extra/extraneous bytes 955were emitted in the AML code if the optional ReturnType/ParameterTypes 956were specified for a MethodObj declaration. 957New error message: 9581) Method NumArgs count does not match length of ParameterTypes list 959 960iASL: Implemented detection of type mismatches between External 961declarations and named object declarations. Also, detect type mismatches 962between multiple External declarations of the same Name. 963New error messages: 9641) Type mismatch between external declaration and actual object 965declaration detected 9662) Type mismatch between multiple external declarations detected 967 968iASL: Implemented new error messages for External operators that specify 969a ReturnType and/or ParameterTypesList for any object type other than 970control methods (MethodObj). 971New error messages: 9721) Return type is only allowed for Externals declared as MethodObj 9732) Parameter type is only allowed for Externals declared as MethodObj 974 975iASL: Implemented two new remark/warning messages for ASL code that 976creates named objects from within a control method. This is very 977inefficient since the named object must be created and deleted each time 978the method is executed. 979New messages: 9801) Creation of named objects within a method is highly inefficient, use 981globals or method local variables instead (remark) 9822) Static OperationRegion should be declared outside control method 983(warning) 984 985iASL: Improved illegal forward reference detection by adding support to 986detect forward-reference method invocations. 987 988iASL: Detect and issue an error message for NameStrings that contain too 989many individual NameSegs (>255). This is an AML limitation that is 990defined in the ACPI specification. 991New message: 9921) NameString contains too many NameSegs (>255) 993 994acpidump: windows: use GetSystemFirmwareTable API for all tables except 995SSDT. By using this API, acpidump is able to get all tables in the XSDT 996 997iASL: Removed unused parser file and updated msvc2017 project files. 998Removed the obsolete AslCompiler.y from the repository. 999 1000iASL: msvc2017: Fixed macros in the file dependency list to prevent 1001unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 1002 1003Disassembler: Prevent spilling error messages to the output file. All 1004errors are directed to the console instead. These error messages 1005prevented re-compilation of the resulting disassembled ASL output file 1006(.DSL). 1007 1008 1009---------------------------------------- 101010 January 2020. Summary of changes for version 20200110: 1011 1012 10131) ACPICA kernel-resident subsystem: 1014 1015Updated all copyrights to 2020. This affects all ACPICA source code 1016modules. 1017 1018 10192) iASL Compiler/Disassembler and ACPICA tools: 1020 1021ASL test suite (ASLTS): Updated all copyrights to 2020. 1022 1023Tools and utilities: Updated all signon copyrights to 2020. 1024 1025iASL: fix forward reference analysis for field declarations. Fixes 1026forward reference analysis for field declarations by searching the 1027parent scope for the named object when the object is not present in 1028the current scope. 1029 1030iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 1031full pathname of the name that already exists is printed. 1032 1033iASL: Enhance duplicate Case() detection for buffers. Add check for 1034buffers with no initializer list (these buffers will be filled with 1035zeros at runtime.) 1036 1037 1038---------------------------------------- 103913 December 2019. Summary of changes for version 20191213: 1040 1041 10421) ACPICA kernel-resident subsystem: 1043 1044Return a Buffer object for all fields created via the CreateField 1045operator. Previously, an Integer would be returned if the size of 1046the field was less than or equal to the current size of an Integer. 1047Although this goes against the ACPI specification, it provides 1048compatibility with other ACPI implementations. Also updated the 1049ASLTS test suite to reflect this new behavior. 1050 10512) iASL Compiler/Disassembler and ACPICA tools: 1052 1053iASL: Implemented detection of (and throw an error for) duplicate 1054values for Case statements within a single Switch statement. Duplicate 1055Integers, Strings, and Buffers are supported. 1056 1057iASL: Fix error logging issue during multiple file compilation -- 1058Switch to the correct input file during error node creation. 1059 1060iASL: For duplicate named object creation, now emit an error instead 1061of a warning - since this will cause a runtime error. 1062 1063AcpiSrc: Add unix line-ending support for non-Windows builds. 1064 1065iASL: Add an error condition for an attempt to create a NameString 1066with > 255 NameSegs (the max allowable via the AML definition). 1067 1068 1069---------------------------------------- 107018 October 2019. Summary of changes for version 20191018: 1071 1072 10731) ACPICA kernel-resident subsystem: 1074 1075Debugger: added a new command: ?Fields [address space ID]?. This command 1076dumps the contents of all field units that are defined within the 1077namespace with a particular address space ID. 1078 1079Modified the external interface AcpiLoadTable() to return a table index. 1080This table index can be used for unloading a table for debugging. 1081 ACPI_STATUS 1082 AcpiLoadTable ( 1083 ACPI_TABLE_HEADER *Table, 1084 UINT32 *TableIndex)) 1085 1086Implemented a new external interface: AcpiUnloadTable() This new function 1087takes a table index as an argument and unloads the table. Useful for 1088debugging only. 1089 ACPI_STATUS 1090 AcpiUnloadTable ( 1091 UINT32 TableIndex)) 1092 1093Ported the AcpiNames utility to use the new table initialization 1094sequence. The utility was broken before this change. Also, it was 1095required to include most of the AML interpreter into the utility in order 1096to process table initialization (module-level code execution.) 1097 1098Update for results from running Clang V8.0.1. This fixes all "dead 1099assignment" warnings. There are still several "Dereference of NULL 1100pointer" warnings, but these have been found to be false positive 1101warnings. 1102 1103 11042) iASL Compiler/Disassembler and ACPICA tools: 1105 1106iASL: numerous table compiler changes to ensure that the usage of 1107yacc/bison syntax is POSIX-compliant. 1108 1109iASL/disassembler: several simple bug fixes in the data table 1110disassembler. 1111 1112Acpiexec: expanded the initialization file (the -fi option) to initialize 1113strings, buffers, packages, and field units. 1114 1115 1116---------------------------------------- 111716 August 2019. Summary of changes for version 20190816: 1118 1119This release is available at https://acpica.org/downloads 1120 1121 11221) ACPICA kernel-resident subsystem: 1123 1124Modified the OwnerId mechanism to allow for more Owner Ids. The previous 1125limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 1126exceptions on machines with a large number of initialization threads, 1127many CPU cores and nested initialization control methods. 1128 1129Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 1130checking if the given GPE (as represented by a GPE device handle and a 1131GPE number) is currently active and dispatching it (if that's the case) 1132outside of interrupt context. 1133 1134Table load: exit the interpreter before initializing objects within the 1135new table This prevents re-acquiring the interpreter lock when loading 1136tables 1137 1138Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 1139uk Kim 1140 1141Macros: removed pointer math on a null pointer. Causes warnings on some 1142compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 1143instead of using arithmetic. 1144 1145Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 1146across all "printf-like" internal functions. Also, cleanup all calls to 1147such functions (both in 32-bit mode and 64-bit mode) now that they are 1148analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 1149 1150 11512) iASL Compiler/Disassembler and ACPICA tools: 1152 1153iASL: implemented a new data table compiler flex/bison front-end. This 1154change is internal and is not intended to result in changes to the 1155compiled code. This new compiler front-end can be invoked using the -tp 1156option for now, until the old mechanism is removed. 1157 1158ASLTS: Implemented a new data table compiler test suite. This test suite 1159generates all table templates and compile/disassemble/re-compile/binary- 1160compare each file. 1161 1162iASL: return -1 if AML files were not generated due to compiler errors 1163 1164iASL: added a warning on use of the now-legacy ASL Processor () keyword. 1165 1166iASL: added an error on _UID object declaration that returns a String 1167within a Processor () declaration. A _UID for a processor must be an 1168Integer. 1169 1170iASL: added a null terminator to name strings that consist only of 1171multiple parent prefixes (^) 1172 1173iASL: added support to compile both ASL and data table files in a single 1174command. 1175 1176Updated the tool generation project files that were recently migrated to 1177MSVC 2017 to eliminate all new warnings. The new project files appear in 1178the directory \acpica\generate\msvc2017. This change effectively 1179deprecates the older project files in \acpica\generate\msvc9. 1180 1181 1182---------------------------------------- 118303 July 2019. Summary of changes for version 20190703: 1184 1185 11861) ACPICA kernel-resident subsystem: 1187 1188Remove legacy module-level support code. There were still some remnants 1189of the legacy module-level code executions. Since we no longer support 1190this option, this is essentially dead code and has been removed from the 1191ACPICA source. 1192 1193iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1194scope. If these named objects are declared outside the root scope, they 1195will not be invoked by any host Operating System. 1196 1197Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 1198one) can be enabled in two situations. First, the GPEs with existing _Lxx 1199and _Exx methods are enabled implicitly by ACPICA during system 1200initialization. Second, the GPEs without these methods (like GPEs listed 1201by _PRW objects for wakeup devices) need to be enabled directly by the 1202code that is going to use them (e.g. ACPI power management or device 1203drivers). 1204 1205In the former case, if the status of a given GPE is set to start with, 1206its handler method (either _Lxx or _Exx) needs to be invoked to take care 1207of the events (possibly) signaled before the GPE was enabled. In the 1208latter case, however, the first caller of AcpiEnableGpe() for a given GPE 1209should not be expected to care about any events that might be signaled 1210through it earlier. In that case, it is better to clear the status of 1211the GPE before enabling it, to prevent stale events from triggering 1212unwanted actions (like spurious system resume, for example). 1213 1214For this reason, modify AcpiEvAddGpeReference() to take an additional 1215boolean argument indicating whether or not the GPE status needs to be 1216cleared when its reference counter changes from zero to one and make 1217AcpiEnableGpe() pass TRUE to it through that new argument. 1218 1219 12202) iASL Compiler/Disassembler and ACPICA tools: 1221 1222The tool generation process has been migrated to MSVC 2017, and all 1223project files have been upgraded. The new project files appear in the 1224directory \acpica\generate\msvc2017. This change effectively deprecates 1225the older project files in \acpica\generate\msvc9. 1226 1227iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1228scope. If these named objects are declared outside the root scope, they 1229will not be invoked by any host Operating System 1230 1231---------------------------------------- 123209 May 2019. Summary of changes for version 20190509: 1233 1234 12351) ACPICA kernel-resident subsystem: 1236 1237Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 1238them") that causes problems with Thunderbolt controllers to occur if a 1239dock device is connected at init time (the xhci_hcd and thunderbolt 1240modules crash which prevents peripherals connected through them from 1241working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 1242Dispatch active GPEs at init time") to get undone, so the problem 1243addressed by commit ecc1165b8b74 appears again as a result of it. 1244 1245 12462) iASL Compiler/Disassembler and ACPICA tools: 1247 1248Reverted iASL: Additional forward reference detection. This change 1249reverts forward reference detection for field declarations. The feature 1250unintentionally emitted AML bytecode with incorrect package lengths for 1251some ASL code related to Fields and OperationRegions. This malformed AML 1252can cause systems to crash 1253during boot. The malformed AML bytecode is emitted in iASL version 125420190329 and 20190405. 1255 1256iASL: improve forward reference detection. This change improves forward 1257reference detection for named objects inside of scopes. If a parse object 1258has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 1259a named object that is declared later in the AML bytecode. This is 1260allowed if the reference is inside of a method and the declaration is 1261outside of a method like so: 1262 1263DefinitionBlock(...) 1264{ 1265 Method (TEST) 1266 { 1267 Return (NUM0) 1268 } 1269 Name (NUM0,0) 1270} 1271 1272However, if the declaration and reference are both in the same method or 1273outside any methods, this is a forward reference and should be marked as 1274an error because it would result in runtime errors. 1275 1276DefinitionBlock(...) 1277{ 1278 Name (BUFF, Buffer (NUM0) {}) // Forward reference 1279 Name (NUM0, 0x0) 1280 1281 Method (TEST) 1282 { 1283 Local0 = NUM1 1284 Name (NUM1, 0x1) // Forward reference 1285 return (Local0) 1286 } 1287} 1288 1289iASL: Implemented additional buffer overflow analysis for BufferField 1290declarations. Check if a buffer index argument to a create buffer field 1291operation is beyond the end of the target buffer. 1292 1293This affects these AML operators: 1294 1295 AML_CREATE_FIELD_OP 1296 AML_CREATE_BIT_FIELD_OP 1297 AML_CREATE_BYTE_FIELD_OP 1298 AML_CREATE_WORD_FIELD_OP 1299 AML_CREATE_DWORD_FIELD_OP 1300 AML_CREATE_QWORD_FIELD_OP 1301 1302 There are three conditions that must be satisfied in order to allow this 1303validation at compile time: 1304 1305 1) The length of the target buffer must be an integer constant 1306 2) The index specified in the create* must be an integer constant 1307 3) For CreateField, the bit length argument must be non-zero. 1308 1309Example: 1310 Name (BUF1, Buffer() {1,2}) 1311 CreateField (BUF1, 7, 9, CF03) // 3: ERR 1312 1313dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 1314Error 6165 - ^ Buffer index beyond end of 1315target buffer 1316 1317 1318---------------------------------------- 131905 April 2019. Summary of changes for version 20190405: 1320 1321 13221) ACPICA kernel-resident subsystem: 1323 1324Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 1325unconditionally clearing ACPI IRQs during suspend/resume") was added 1326earlier to stop clearing of event status bits unconditionally on suspend 1327and resume paths. Though this change fixed an issue on suspend path, it 1328introduced regressions on several resume paths. In the case of S0ix, 1329events are enabled as part of device suspend path. If status bits for the 1330events are set when they are enabled, it could result in premature wake 1331from S0ix. If status is cleared for any event that is being enabled so 1332that any stale events are cleared out. In case of S0ix, events are 1333enabled as part of device suspend path. If status bits for the events are 1334set when they are enabled, it could result in premature wake from S0ix. 1335 1336This change ensures that status is cleared for any event that is being 1337enabled so that any stale events are cleared out. 1338 1339 13402) iASL Compiler/Disassembler and ACPICA tools: 1341 1342iASL: Implemented an enhanced multiple file compilation that combines 1343named objects from all input files to a single namespace. With this 1344feature, any unresolved external declarations as well as duplicate named 1345object declarations can be detected during compilation rather than 1346generating errors much later at runtime. The following commands are 1347examples that utilize this feature: 1348 iasl dsdt.asl ssdt.asl 1349 iasl dsdt.asl ssdt1.asl ssdt2.asl 1350 iasl dsdt.asl ssdt*.asl 1351 1352---------------------------------------- 135329 March 2019. Summary of changes for version 20190329: 1354 1355 13561) ACPICA kernel-resident subsystem: 1357 1358Namespace support: Remove the address nodes from global list after method 1359termination. The global address list contains pointers to namespace nodes 1360that represent Operation Regions. This change properly removes Operation 1361Region namespace nodes that are declared dynamically during method 1362execution. 1363 1364Linux: Use a different debug default than ACPICA. There was a divergence 1365between Linux and the ACPICA codebases. In order to resolve this 1366divergence, Linux now declares its own debug default in aclinux.h 1367 1368Renamed some internal macros to improve code understanding and 1369maintenance. The macros below all operate on single 4-character ACPI 1370NameSegs, not generic strings (old -> new): 1371 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 1372 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 1373 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 1374 1375Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 1376table. 1377 1378Test suite: Update makefiles, add PCC operation region support 1379 1380 13812) iASL Compiler/Disassembler and Tools: 1382 1383iASL: Implemented additional illegal forward reference detection. Now 1384detect and emit an error upon detection of a forward reference from a 1385Field to an Operation Region. This will fail at runtime if allowed to 1386pass the compiler. 1387 1388AcpiExec: Add an address list check for dynamic Operation Regions. This 1389feature performs a sanity test for each node the global address list. 1390This is done in order to ensure that all dynamic operation regions are 1391properly removed from the global address list and no dangling pointers 1392are left behind. 1393 1394Disassembler: Improved generation of resource pathnames. This change 1395improves the code that generates resource descriptor and resource tag 1396pathnames. The original code used a bunch of str* C library functions 1397that caused warnings on some compilers. 1398 1399iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1400function can overwrite buffers if the calling code is not very careful. 1401In the case of generating a module/table header, use of memmove is a 1402better implementation. 1403 1404 14053) Status of new features that have not been completed at this time: 1406 1407iASL: Implementing an enhanced multiple file compilation into a single 1408namespace feature (Status): This feature will be released soon, and 1409allows multiple ASL files to be compiled into the same single namespace. 1410By doing so, any unresolved external declarations as well as duplicate 1411named object declarations can be detected during compilation (rather than 1412later during runtime). The following commands are examples that utilize 1413this feature: 1414 iasl dsdt.asl ssdt.asl 1415 iasl dsdt.asl ssdt1.asl ssdt2.asl 1416 iasl dsdt.asl ssdt*.asl 1417 1418ASL tutorial status: Feedback is being gathered internally and the 1419current plan is to publish this tutorial on the ACPICA website after a 1420final review by a tech writer. 1421 1422---------------------------------------- 142315 February 2019. Summary of changes for version 20190215: 1424 1425 14260) Support for ACPI specification version 6.3: 1427 1428Add PCC operation region support for the AML interpreter. This adds PCC 1429operation region support in the AML interpreter and a default handler for 1430acpiexec. The change also renames the PCC region address space keyword to 1431PlatformCommChannel. 1432 1433Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1434These methods provide OSPM with health information and device boot 1435status. 1436 1437PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1438defines if the trigger needs to be invoked by OSPM before or at the end 1439of kernel crash dump processing/handling operation. 1440 1441SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1442is used for describing devices such as heterogeneous processors, 1443accelerators, GPUs, and IO devices with integrated compute or DMA 1444engines. 1445 1446MADT: Add support for statistical profiling in GICC. Statistical 1447profiling extension (SPE) is an architecture-specific feature for ARM. 1448 1449MADT: Add online capable flag. If this bit is set, system hardware 1450supports enabling this processor during OS runtime. 1451 1452New Error Disconnect Recover Notification value. There are a number of 1453scenarios where system Firmware in collaboration with hardware may 1454disconnect one or more devices from the rest of the system for purposes 1455of error containment. Firmware can use this new notification value to 1456alert OSPM of such a removal. 1457 1458PPTT: New additional fields in Processor Structure Flags. These flags 1459provide more information about processor topology. 1460 1461NFIT/Disassembler: Change a field name from "Address Range" to "Region 1462Type". 1463 1464HMAT updates: make several existing fields to be reserved as well as 1465rename subtable 0 to "memory proximity domain attributes". 1466 1467GTDT: Add support for new GTDT Revision 3. This revision adds information 1468for the EL2 timer. 1469 1470iASL: Update the HMAT example template for new fields. 1471 1472iASL: Add support for the new revision of the GTDT (Rev 3). 1473 1474 14751) ACPICA kernel-resident subsystem: 1476 1477AML Parser: fix the main AML parse loop to correctly skip erroneous 1478extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1479byte extended opcodes. If an error occurs during an AML table load, the 1480AML parser will continue loading the table by skipping the offending 1481opcode. This implements a "load table at any cost" philosophy. 1482 1483 14842) iASL Compiler/Disassembler and Tools: 1485 1486iASL: Add checks for illegal object references, such as a reference 1487outside of method to an object within a method. Such an object is only 1488temporary. 1489 1490iASL: Emit error for creation of a zero-length operation region. Such a 1491region is rather pointless. If encountered, a runtime error is also 1492implemented in the interpreter. 1493 1494Debugger: Fix a possible fault with the "test objects" command. 1495 1496iASL: Makefile: support parent directory filenames containing embedded 1497spaces. 1498 1499iASL: Update the TPM2 template to revision 4. 1500 1501iASL: Add the ability to report specific warnings or remarks as errors. 1502 1503Disassembler: Disassemble OEMx tables as actual AML byte code. 1504Previously, these tables were treated as "unknown table". 1505 1506iASL: Add definition and disassembly for TPM2 revision 3. 1507 1508iASL: Add support for TPM2 rev 3 compilation. 1509 1510 1511---------------------------------------- 151208 January 2019. Summary of changes for version 20190108: 1513 1514 15151) ACPICA kernel-resident subsystem: 1516 1517Updated all copyrights to 2019. This affects all source code modules. 1518 1519 15202) iASL Compiler/Disassembler and Tools: 1521 1522ASL test suite (ASLTS): Updated all copyrights to 2019. 1523 1524Tools: Updated all signon copyrights to 2019. 1525 1526AcpiExec: Added a new option to dump extra information concerning any 1527memory leaks detected by the internal object/cache tracking mechanism. - 1528va 1529 1530iASL: Updated the table template for the TPM2 table to the newest version 1531of the table (Revision 4) 1532 1533 1534---------------------------------------- 153513 December 2018. Summary of changes for version 20181213: 1536 1537 15381) ACPICA Kernel-resident Subsystem: 1539 1540Fixed some buffer length issues with the GenericSerialBus, related to two 1541of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1542which are rarely seen in the field. For these, the LEN field of the ASL 1543buffer is now ignored. Hans de Goede 1544 1545Implemented a new object evaluation trace mechanism for control methods 1546and data objects. This includes nested control methods. It is 1547particularly useful for examining the ACPI execution during system 1548initialization since the output is relatively terse. The flag below 1549enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1550 #define ACPI_LV_EVALUATION 0x00080000 1551 1552Examples: 1553 Enter evaluation : _SB.PCI0._INI (Method) 1554 Exit evaluation : _SB.PCI0._INI 1555 Enter evaluation : _OSI (Method) 1556 Exit evaluation : _OSI 1557 Enter evaluation : _SB.PCI0.TEST (Method) 1558 Nested method call : _SB.PCI0.NST1 1559 Exit nested method : _SB.PCI0.NST1 1560 Exit evaluation : _SB.PCI0.TEST 1561 1562Added two recently-defined _OSI strings. See 1563https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1564osi. 1565 "Windows 2018" 1566 "Windows 2018.2" 1567 1568Update for buffer-to-string conversions via the ToHexString ASL operator. 1569A "0x" is now prepended to each of the hex values in the output string. 1570This provides compatibility with other ACPI implementations. The ACPI 1571specification is somewhat vague on this issue. 1572 Example output string after conversion: 1573"0x01,0x02,0x03,0x04,0x05,0x06" 1574 1575Return a run-time error for TermArg expressions within individual package 1576elements. Although this is technically supported by the ASL grammar, 1577other ACPI implementations do not support this either. Also, this fixes a 1578fault if this type of construct is ever encountered (it never has been). 1579 1580 15812) iASL Compiler/Disassembler and Tools: 1582 1583iASL: Implemented a new compile option (-ww) that will promote individual 1584warnings and remarks to errors. This is intended to enhance the firmware 1585build process. 1586 1587AcpiExec: Implemented a new command-line option (-eo) to support the new 1588object evaluation trace mechanism described above. 1589 1590Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1591instead of a "unknown table" message. 1592 1593AcpiHelp: Improved support for the "special" predefined names such as 1594_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1595used for "xx" and "x". 1596 1597---------------------------------------- 159831 October 2018. Summary of changes for version 20181031: 1599 1600 1601An Operation Region regression was fixed by properly adding address 1602ranges to a global list during initialization. This allows OS to 1603accurately check for overlapping regions between native devices (such as 1604PCI) and Operation regions as well as checking for region conflicts 1605between two Operation Regions. 1606 1607Added support for the 2-byte extended opcodes in the code/feature that 1608attempts to continue parsing during the table load phase. Skip parsing 1609Device declarations (and other extended opcodes) when an error occurs 1610during parsing. Previously, only single-byte opcodes were supported. 1611 1612Cleanup: Simplified the module-level code support by eliminating a 1613useless global variable (AcpiGbl_GroupModuleLeveCode). 1614 1615 16162) iASL Compiler/Disassembler and Tools: 1617 1618iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1619could cause a fault in the preprocessor. This was an inadvertent side- 1620effect from moving more allocations/frees to the local cache/memory 1621mechanism. 1622 1623iASL: Enhanced error detection by validating that all NameSeg elements 1624within a NamePatch actually exist. The previous behavior was spotty at 1625best, and such errors could be improperly ignored at compiler time (never 1626at runtime, however. There are two new error messages, as shown in the 1627examples below: 1628 1629dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1630Error 6161 - ^ One or more objects within 1631the Pathname do not exist (TTTT.BXXX) 1632 1633dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1634Error 6160 - One or more prefix Scopes do not exist ^ 1635(BBBB.CBF1) 1636 1637iASL: Disassembler/table-compiler: Added support for the static data 1638table TPM2 revision 3 (an older version of TPM2). The support has been 1639added for the compiler and the disassembler. 1640 1641Fixed compilation of DOS format data table file on Unix/Linux systems. 1642iASL now properly detects line continuations (\) for DOS format data 1643table definition language files on when executing on Unix/Linux. 1644 1645---------------------------------------- 164603 October 2018. Summary of changes for version 20181003: 1647 1648 16492) iASL Compiler/Disassembler and Tools: 1650 1651Fixed a regression introduced in version 20180927 that could cause the 1652compiler to fault, especially with NamePaths containing one or more 1653carats (^). Such as: ^^_SB_PCI0 1654 1655Added a new remark for the Sleep() operator when the sleep time operand 1656is larger than one second. This is a very long time for the ASL/BIOS code 1657and may not be what was intended by the ASL writer. 1658 1659---------------------------------------- 166027 September 2018. Summary of changes for version 20180927: 1661 1662 16631) ACPICA kernel-resident subsystem: 1664 1665Updated the GPE support to clear the status of all ACPI events when 1666entering any/all sleep states in order to avoid premature wakeups. In 1667theory, this may cause some wakeup events to be missed, but the 1668likelihood of this is small. This change restores the original behavior 1669of the ACPICA code in order to fix a regression seen from the previous 1670"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1671This regression could cause some systems to incorrectly wake immediately. 1672 1673Updated the execution of the _REG methods during initialization and 1674namespace loading to bring the behavior into closer conformance to the 1675ACPI specification and other ACPI implementations: 1676 1677From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1678 "Control methods must assume all operation regions are inaccessible 1679until the _REG(RegionSpace, 1) method is executed" 1680 1681 "The exceptions to this rule are: 16821. OSPM must guarantee that the following operation regions are always 1683accessible: 1684 SystemIO operation regions. 1685 SystemMemory operation regions when accessing memory returned by the 1686System Address Map reporting interfaces." 1687 1688Since the state of both the SystemIO and SystemMemory address spaces are 1689defined by the specification to never change, this ACPICA change ensures 1690that now _REG is never called on them. This solves some problems seen in 1691the field and provides compatibility with other ACPI implementations. An 1692update to the upcoming new version of the ACPI specification will help 1693clarify this behavior. 1694 1695Updated the implementation of support for the Generic Serial Bus. For the 1696"bidirectional" protocols, the internal implementation now automatically 1697creates a return data buffer of the maximum size (255). This handles the 1698worst-case for data that is returned from the serial bus handler, and 1699fixes some problems seen in the field. This new buffer is directly 1700returned to the ASL. As such, there is no true "bidirectional" buffer, 1701which matches the ACPI specification. This is the reason for the "double 1702store" seen in the example ASL code in the specification, shown below: 1703 1704Word Process Call (AttribProcessCall): 1705 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1706 Field(TOP1, BufferAcc, NoLock, Preserve) 1707 { 1708 FLD1, 8, // Virtual register at command value 1. 1709 } 1710 1711 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1712 // as BUFF 1713 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1714 1715 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1716 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1717transaction 1718 // This is the "double store". The write to 1719 // FLD1 returns a new buffer, which is stored 1720 // back into BUFF with the second Store. 1721 1722 17232) iASL Compiler/Disassembler and Tools: 1724 1725iASL: Implemented detection of extraneous/redundant uses of the Offset() 1726operator within a Field Unit list. A remark is now issued for these. For 1727example, the first two of the Offset() operators below are extraneous. 1728Because both the compiler and the interpreter track the offsets 1729automatically, these Offsets simply refer to the current offset and are 1730unnecessary. Note, when optimization is enabled, the iASL compiler will 1731in fact remove the redundant Offset operators and will not emit any AML 1732code for them. 1733 1734 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1735 Field (OPR1) 1736 { 1737 Offset (0), // Never needed 1738 FLD1, 32, 1739 Offset (4), // Redundant, offset is already 4 (bytes) 1740 FLD2, 8, 1741 Offset (64), // OK use of Offset. 1742 FLD3, 16, 1743 } 1744dsdt.asl 14: Offset (0), 1745Remark 2158 - ^ Unnecessary/redundant use of Offset 1746operator 1747 1748dsdt.asl 16: Offset (4), 1749Remark 2158 - ^ Unnecessary/redundant use of Offset 1750operator 1751 1752---------------------------------------- 175310 August 2018. Summary of changes for version 20180810: 1754 1755 17561) ACPICA kernel-resident subsystem: 1757 1758Initial ACPI table loading: Attempt to continue loading ACPI tables 1759regardless of malformed AML. Since migrating table initialization to the 1760new module-level code support, the AML interpreter rejected tables upon 1761any ACPI error encountered during table load. This is a problem because 1762non-serious ACPI errors during table load do not necessarily mean that 1763the entire definition block (DSDT or SSDT) is invalid. This change 1764improves the table loading by ignoring some types of errors that can be 1765generated by incorrect AML. This can range from object type errors, scope 1766errors, and index errors. 1767 1768Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1769during suspend/resume. The status of ACPI events is no longer cleared 1770when entering the ACPI S5 system state (power off) which caused some 1771systems to power up immediately after turning off power in certain 1772situations. This was a functional regression. It was fixed by clearing 1773the status of all ACPI events again when entering S5 (for system-wide 1774suspend or hibernation the clearing of the status of all events is not 1775desirable, as it might cause the kernel to miss wakeup events sometimes). 1776Rafael Wysocki. 1777 1778 17792) iASL Compiler/Disassembler and Tools: 1780 1781AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1782elements listed in the initialization file were previously initialized 1783after the table load and before executing module-level code blocks. 1784Recent changes in the module-level code support means that the table load 1785becomes a large control method execution. If fields are used within 1786module-level code and we are executing with the -fi option, the 1787initialization values were used to initialize the namespace object(s) 1788only after the table was finished loading. This change Provides an early 1789initialization of objects specified in the initialization file so that 1790field unit values are populated during the table load (not after the 1791load). 1792 1793AcpiExec: Fixed a small memory leak regression that could result in 1794warnings during exit of the utility. These warnings were similar to 1795these: 1796 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1797 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1798 1799---------------------------------------- 180029 June 2018. Summary of changes for version 20180629: 1801 1802 18031) iASL Compiler/Disassembler and Tools: 1804 1805iASL: Fixed a regression related to the use of the ASL External 1806statement. Error checking for the use of the External() statement has 1807been relaxed. Previously, a restriction on the use of External meant that 1808the referenced named object was required to be defined in a different 1809table (an SSDT). Thus it would be an error to declare an object as an 1810external and then define the same named object in the same table. For 1811example: 1812 DefinitionBlock (...) 1813 { 1814 External (DEV1) 1815 Device (DEV1){...} // This was an error 1816 } 1817However, this behavior has caused regressions in some existing ASL code, 1818because there is code that depends on named objects and externals (with 1819the same name) being declared in the same table. This change will allow 1820the ASL code above to compile without errors or warnings. 1821 1822iASL: Implemented ASL language extensions for four operators to make some 1823of their arguments optional instead of required: 1824 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1825 2) BankField (RegionName, BankName, BankValue, 1826 AccessType, LockRule, UpdateRule) 1827 3) IndexField (IndexName, DataName, 1828 AccessType, LockRule, UpdateRule) 1829For the Field operators above, the AccessType, LockRule, and UpdateRule 1830are now optional arguments. The default values are: 1831 AccessType: AnyAcc 1832 LockRule: NoLock 1833 UpdateRule: Preserve 1834 4) Mutex (MutexName, SyncLevel) 1835For this operator, the SyncLevel argument is now optional. This argument 1836is rarely used in any meaningful way by ASL code, and thus it makes sense 1837to make it optional. The default value is: 1838 SyncLevel: 0 1839 1840iASL: Attempted use of the ASL Unload() operator now results in the 1841following warning: 1842 "Unload is not supported by all operating systems" 1843This is in fact very true, and the Unload operator may be completely 1844deprecated in the near future. 1845 1846AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1847file. Recent changes in the ACPICA module-level code support altered the 1848table load/initialization sequence . This means that the table load has 1849become a large method execution of the table itself. If Operation Region 1850Fields are used within any module-level code and the -fi option was 1851specified, the initialization values were populated only after the table 1852had completely finished loading (and thus the module-level code had 1853already been executed). This change moves the initialization of objects 1854listed in the initialization file to before the table is executed as a 1855method. Field unit values are now initialized before the table execution 1856is performed. 1857 1858---------------------------------------- 185931 May 2018. Summary of changes for version 20180531: 1860 1861 18621) ACPICA kernel-resident Subsystem: 1863 1864Implemented additional support to help ensure that a DSDT or SSDT is 1865fully loaded even if errors are incurred during the load. The majority of 1866the problems that are seen is the failure of individual AML operators 1867that occur during execution of any module-level code (MLC) existing in 1868the table. This support adds a mechanism to abort the current ASL 1869statement (AML opcode), emit an error message, and to simply move on to 1870the next opcode -- instead of aborting the entire table load. This is 1871different than the execution of a control method where the entire method 1872is aborted upon any error. The goal is to perform a very "best effort" to 1873load the ACPI tables. The most common MLC errors that have been seen in 1874the field are direct references to unresolved ASL/AML symbols (referenced 1875directly without the use of the CondRefOf operator to validate the 1876symbol). This new ACPICA behavior is now compatible with other ACPI 1877implementations. 1878 1879Interpreter: The Unload AML operator is no longer supported for the 1880reasons below. An AE_NOT_IMPLEMENTED exception is returned. 18811) A correct implementation on at least some hosts may not be possible. 18822) Other ACPI implementations do not correctly/fully support it. 18833) It requires host device driver support which is not known to exist. 1884 (To properly support namespace unload out from underneath.) 18854) This AML operator has never been seen in the field. 1886 1887Parser: Added a debug option to dump AML parse sub-trees as they are 1888being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 1889ACPI_DB_PARSE_TREES. 1890 1891Debugger: Reduced the verbosity for errors incurred during table load and 1892module-level code execution. 1893 1894Completed an investigation into adding a namespace node "owner list" 1895instead of the current "owner ID" associated with namespace nodes. This 1896list would link together all nodes that are owned by an individual 1897control method. The purpose would be to enhance control method execution 1898by speeding up cleanup during method exit (all namespace nodes created by 1899a method are deleted upon method termination.) Currently, the entire 1900namespace must be searched for matching owner IDs if (and only if) the 1901method creates named objects outside of the local scope. However, by far 1902the most common case is that methods create objects locally, not outside 1903the method scope. There is already an ACPICA optimization in place that 1904only searches the entire namespace in the rare case of a method creating 1905objects elsewhere in the namespace. Therefore, it is felt that the 1906overhead of adding an additional pointer to each namespace node to 1907implement the owner list makes this feature unnecessary. 1908 1909 19102) iASL Compiler/Disassembler and Tools: 1911 1912iASL, Disassembler, and Template generator: Implemented support for 1913Revision D of the IORT table. Adds a new subtable that is used to specify 1914SMMUv3 PMCGs. rmurphy-arm. 1915 1916Disassembler: Restored correct table header validation for the "special" 1917ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 1918table header and must be special-cased. This was a regression that has 1919been present for apparently a long time. 1920 1921AcpiExec: Reduced verbosity of the local exception handler implemented 1922within acpiexec. This handler is invoked by ACPICA upon any exceptions 1923generated during control method execution. A new option was added: -vh 1924restores the original verbosity level if desired. 1925 1926AcpiExec: Changed the default base from decimal to hex for the -x option 1927(set debug level). This simplifies the use of this option and matches the 1928behavior of the corresponding iASL -x option. 1929 1930AcpiExec: Restored a force-exit on multiple control-c (sigint) 1931interrupts. This allows program termination even if other issues cause 1932the control-c to fail. 1933 1934ASL test suite (ASLTS): Added tests for the recently implemented package 1935element resolution mechanism that allows forward references to named 1936objects from individual package elements (this mechanism provides 1937compatibility with other ACPI implementations.) 1938 1939 1940---------------------------------------- 19418 May 2018. Summary of changes for version 20180508: 1942 1943 19441) ACPICA kernel-resident subsystem: 1945 1946Completed the new (recently deployed) package resolution mechanism for 1947the Load and LoadTable ASL/AML operators. This fixes a regression that 1948was introduced in version 20180209 that could result in an 1949AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 1950(SSDT) that contains package objects. 1951 1952 19532) iASL Compiler/Disassembler and Tools: 1954 1955AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 19561 MB. This change allows for table offsets within the acpidump file to be 1957up to 8 characters. These changes are backwards compatible with existing 1958acpidump files. 1959 1960 1961---------------------------------------- 196227 April 2018. Summary of changes for version 20180427: 1963 1964 19651) ACPICA kernel-resident subsystem: 1966 1967Debugger: Added support for Package objects in the "Test Objects" 1968command. This command walks the entire namespace and evaluates all named 1969data objects (Integers, Strings, Buffers, and now Packages). 1970 1971Improved error messages for the namespace root node. Originally, the root 1972was referred to by the confusing string "\___". This has been replaced by 1973"Namespace Root" for clarification. 1974 1975Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 1976Ian King <colin.king@canonical.com>. 1977 1978 19792) iASL Compiler/Disassembler and Tools: 1980 1981iASL: Implemented support to detect and flag illegal forward references. 1982For compatibility with other ACPI implementations, these references are 1983now illegal at the root level of the DSDT or SSDTs. Forward references 1984have always been illegal within control methods. This change should not 1985affect existing ASL/AML code because of the fact that these references 1986have always been illegal in the other ACPI implementation. 1987 1988iASL: Added error messages for the case where a table OEM ID and OEM 1989TABLE ID strings are longer than the ACPI-defined length. Previously, 1990these strings were simply silently truncated. 1991 1992iASL: Enhanced the -tc option (which creates an AML hex file in C, 1993suitable for import into a firmware project): 1994 1) Create a unique name for the table, to simplify use of multiple 1995SSDTs. 1996 2) Add a protection #ifdef in the file, similar to a .h header file. 1997With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 1998evan.lloyd@arm.com 1999 2000AcpiExec: Added a new option, -df, to disable the local fault handler. 2001This is useful during debugging, where it may be desired to drop into a 2002debugger on a fault. 2003 2004---------------------------------------- 200513 March 2018. Summary of changes for version 20180313: 2006 2007 20081) ACPICA kernel-resident subsystem: 2009 2010Implemented various improvements to the GPE support: 2011 20121) Dispatch all active GPEs at initialization time so that no GPEs are 2013lost. 20142) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 2015before devices are enumerated. 20163) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 2017IRQs are not lost. 20184) Add parallel GPE handling to eliminate the possibility of dispatching 2019the same GPE twice. 20205) Dispatch any pending GPEs after enabling for the first time. 2021 2022AcpiGetObjectInfo - removed support for the _STA method. This was causing 2023problems on some platforms. 2024 2025Added a new _OSI string, "Windows 2017.2". 2026 2027Cleaned up and simplified the module-level code support. These changes 2028are in preparation for the eventual removal of the legacy MLC support 2029(deferred execution), replaced by the new MLC architecture which executes 2030the MLC as a table is loaded (DSDT/SSDTs). 2031 2032Changed a compile-time option to a runtime option. Changes the option to 2033ignore ACPI table load-time package resolution errors into a runtime 2034option. Used only for platforms that generate many AE_NOT_FOUND errors 2035during boot. AcpiGbl_IgnorePackageResolutionErrors. 2036 2037Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 2038ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 2039compilation errors from unused variables (seen with some compilers). 2040 2041 20422) iASL Compiler/Disassembler and Tools: 2043 2044ASLTS: parallelized execution in order to achieve an (approximately) 2X 2045performance increase. 2046 2047ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 2048error reporting. 2049 2050---------------------------------------- 205109 February 2018. Summary of changes for version 20180209: 2052 2053 20541) ACPICA kernel-resident subsystem: 2055 2056Completed the final integration of the recent changes to Package Object 2057handling and the module-level AML code support. This allows forward 2058references from individual package elements when the package object is 2059declared from within module-level code blocks. Provides compatibility 2060with other ACPI implementations. 2061 2062The new architecture for the AML module-level code has been completed and 2063is now the default for the ACPICA code. This new architecture executes 2064the module-level code in-line as the ACPI table is loaded/parsed instead 2065of the previous architecture which deferred this code until after the 2066table was fully loaded. This solves some ASL code ordering issues and 2067provides compatibility with other ACPI implementations. At this time, 2068there is an option to fallback to the earlier architecture, but this 2069support is deprecated and is planned to be completely removed later this 2070year. 2071 2072Added a compile-time option to ignore AE_NOT_FOUND exceptions during 2073resolution of named reference elements within Package objects. Although 2074this is potentially a serious problem, it can generate a lot of 2075noise/errors on platforms whose firmware carries around a bunch of unused 2076Package objects. To disable these errors, define 2077ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 2078errors are always reported for ACPICA applications such as AcpiExec. 2079 2080Fixed a regression related to the explicit type-conversion AML operators 2081(ToXXXX). The regression was introduced early in 2017 but was not seen 2082until recently because these operators are not fully supported by other 2083ACPI implementations and are thus rarely used by firmware developers. The 2084operators are defined by the ACPI specification to not implement the 2085"implicit result object conversion". The regression incorrectly 2086introduced this object conversion for the following explicit conversion 2087operators: 2088 ToInteger 2089 ToString 2090 ToBuffer 2091 ToDecimalString 2092 ToHexString 2093 ToBCD 2094 FromBCD 2095 2096 20972) iASL Compiler/Disassembler and Tools: 2098 2099iASL: Fixed a problem with the compiler constant folding feature as 2100related to the ToXXXX explicit conversion operators. These operators do 2101not support the "implicit result object conversion" by definition. Thus, 2102ASL expressions that use these operators cannot be folded to a simple 2103Store operator because Store implements the implicit conversion. This 2104change uses the CopyObject operator for the ToXXXX operator folding 2105instead. CopyObject is defined to not implement implicit result 2106conversions and is thus appropriate for folding the ToXXXX operators. 2107 2108iASL: Changed the severity of an error condition to a simple warning for 2109the case where a symbol is declared both locally and as an external 2110symbol. This accommodates existing ASL code. 2111 2112AcpiExec: The -ep option to enable the new architecture for module-level 2113code has been removed. It is replaced by the -dp option which instead has 2114the opposite effect: it disables the new architecture (the default) and 2115enables the legacy architecture. When the legacy code is removed in the 2116future, the -dp option will be removed also. 2117 2118---------------------------------------- 211905 January 2018. Summary of changes for version 20180105: 2120 2121 21221) ACPICA kernel-resident subsystem: 2123 2124Updated all copyrights to 2018. This affects all source code modules. 2125 2126Fixed a possible build error caused by an unresolved reference to the 2127AcpiUtSafeStrncpy function. 2128 2129Removed NULL pointer arithmetic in the various pointer manipulation 2130macros. All "(void *) NULL" constructs are converted to "(void *) 0". 2131This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 2132 2133Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 2134Mittal. 2135 2136 21372) iASL Compiler/Disassembler and Tools: 2138 2139ASLTS: Updated all copyrights to 2018. 2140 2141Tools: Updated all signon copyrights to 2018. 2142 2143AcpiXtract: Fixed a regression related to ACPI table signatures where the 2144signature was truncated to 3 characters (instead of 4). 2145 2146AcpiExec: Restore the original terminal mode after the use of the -v and 2147-vd options. 2148 2149ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 2150 2151---------------------------------------- 215214 December 2017. Summary of changes for version 20171214: 2153 2154 21551) ACPICA kernel-resident subsystem: 2156 2157Fixed a regression in the external (public) AcpiEvaluateObjectTyped 2158interface where the optional "pathname" argument had inadvertently become 2159a required argument returning an error if omitted (NULL pointer 2160argument). 2161 2162Fixed two possible memory leaks related to the recently developed "late 2163resolution" of reference objects within ASL Package Object definitions. 2164 2165Added two recently defined _OSI strings: "Windows 2016" and "Windows 21662017". Mario Limonciello. 2167 2168Implemented and deployed a safer version of the C library function 2169strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 2170creation of unterminated strings as a possible result of a standard 2171strncpy. 2172 2173Cleaned up and restructured the global variable file (acglobal.h). There 2174are many changes, but no functional changes. 2175 2176 21772) iASL Compiler/Disassembler and Tools: 2178 2179iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 2180optional OemData field at the end of the table was incorrectly required 2181for proper compilation. It is now correctly an optional field. 2182 2183ASLTS: The entire suite was converted from standard ASL to the ASL+ 2184language, using the ASL-to-ASL+ converter which is integrated into the 2185iASL compiler. A binary compare of all output files has verified the 2186correctness of the conversion. 2187 2188iASL: Fixed the source code build for platforms where "char" is unsigned. 2189This affected the iASL lexer only. Jung-uk Kim. 2190 2191---------------------------------------- 219210 November 2017. Summary of changes for version 20171110: 2193 2194 21951) ACPICA kernel-resident subsystem: 2196 2197This release implements full support for ACPI 6.2A: 2198 NFIT - Added a new subtable, "Platform Capabilities Structure" 2199No other changes to ACPICA were required, since ACPI 6.2A is primarily an 2200errata release of the specification. 2201 2202Other ACPI table changes: 2203 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 2204 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 2205Linton 2206 2207Utilities: Modified the string/integer conversion functions to use 2208internal 64-bit divide support instead of a native divide. On 32-bit 2209platforms, a 64-bit divide typically requires a library function which 2210may not be present in the build (kernel or otherwise). 2211 2212Implemented a targeted error message for timeouts returned from the 2213Embedded Controller device driver. This is seen frequently enough to 2214special-case an AE_TIME returned from an EC operation region access: 2215 "Timeout from EC hardware or EC device driver" 2216 2217Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 2218runtime error messages have the identical prefix. 2219 2220 22212) iASL Compiler/Disassembler and Tools: 2222 2223AcpiXtract: Fixed a problem with table header detection within the 2224acpidump file. Processing a table could be ended early if a 0x40 (@) 2225appears in the original binary table, resulting in the @ symbol appearing 2226in the decoded ASCII field at the end of the acpidump text line. The 2227symbol caused acpixtract to incorrectly think it had reached the end of 2228the current table and the beginning of a new table. 2229 2230AcpiXtract: Added an option (-f) to ignore some errors during table 2231extraction. This initial implementation ignores non-ASCII and non- 2232printable characters found in the acpidump text file. 2233 2234TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 2235for ASLTS. This feature is used to track memory allocations from 2236different memory caches within the ACPICA code. At the end of an ASLTS 2237run, these memory statistics are recorded and stored in a log file. 2238 2239Debugger (user-space version): Implemented a simple "Background" command. 2240Creates a new thread to execute a control method in the background, while 2241control returns to the debugger prompt to allow additional commands. 2242 Syntax: Background <Namepath> [Arguments] 2243 2244---------------------------------------- 224529 September 2017. Summary of changes for version 20170929: 2246 2247 22481) ACPICA kernel-resident subsystem: 2249 2250Redesigned and implemented an improved ASL While() loop timeout 2251mechanism. This mechanism is used to prevent infinite loops in the kernel 2252AML interpreter caused by either non-responsive hardware or incorrect AML 2253code. The new implementation uses AcpiOsGetTimer instead of a simple 2254maximum loop count, and is thus more accurate and constant across 2255different machines. The default timeout is currently 30 seconds, but this 2256may be adjusted later. 2257 2258Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 2259better reflect the new implementation of the loop timeout mechanism. 2260 2261Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 2262and to fix an off-by-one error. Jung-uk Kim. 2263 2264Fixed an EFI build problem by updating the makefiles to for a new file 2265that was added, utstrsuppt.c 2266 2267 22682) iASL Compiler/Disassembler and Tools: 2269 2270Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 2271includes support in the table disassembler, compiler, and template 2272generator. 2273 2274iASL: Added an exception for an illegal type of recursive method 2275invocation. If a method creates named objects, the first recursive call 2276will fail at runtime. This change adds an error detection at compile time 2277to catch the problem up front. Note: Marking such a method as 2278"serialized" will not help with this problem, because the same thread can 2279acquire the method mutex more than once. Example compiler and runtime 2280output: 2281 2282 Method (MTH1) 2283 { 2284 Name (INT1, 1) 2285 MTH1 () 2286 } 2287 2288 dsdt.asl 22: MTH1 () 2289 Error 6152 - ^ Illegal recursive call to method 2290 that creates named objects (MTH1) 2291 2292Previous runtime exception: 2293 ACPI Error: [INT1] Namespace lookup failure, 2294 AE_ALREADY_EXISTS (20170831/dswload2-465) 2295 2296iASL: Updated support for External() opcodes to improve namespace 2297management and error detection. These changes are related to issues seen 2298with multiple-segment namespace pathnames within External declarations, 2299such as below: 2300 2301 External(\_SB.PCI0.GFX0, DeviceObj) 2302 External(\_SB.PCI0.GFX0.ALSI) 2303 2304iASL: Implemented support for multi-line error/warning messages. This 2305enables more detailed and helpful error messages as below, from the 2306initial deployment for the duplicate names error: 2307 2308 DSDT.iiii 1692: Device(PEG2) { 2309 Error 6074 - ^ Name already exists in scope 2310(PEG2) 2311 2312 Original name creation/declaration below: 2313 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 2314 2315AcpiXtract: Added additional flexibility to support differing input hex 2316dump formats. Specifically, hex dumps that contain partial disassembly 2317and/or comments within the ACPI table data definition. There exist some 2318dump utilities seen in the field that create this type of hex dump (such 2319as Simics). For example: 2320 2321 DSDT @ 0xdfffd0c0 (10999 bytes) 2322 Signature DSDT 2323 Length 10999 2324 Revision 1 2325 Checksum 0xf3 (Ok) 2326 OEM_ID BXPC 2327 OEM_table_id BXDSDT 2328 OEM_revision 1 2329 Creator_id 1280593481 2330 Creator_revision 537399345 2331 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 2332 ... 2333 2af0: 5f 4c 30 46 00 a4 01 2334 2335Test suite: Miscellaneous changes/fixes: 2336 More cleanup and simplification of makefiles 2337 Continue compilation of test cases after a compile failure 2338 Do not perform binary compare unless both files actually exist 2339 2340iASL: Performed some code/module restructuring. Moved all memory 2341allocation functions to new modules. Two new files, aslallocate.c and 2342aslcache.c 2343 2344---------------------------------------- 234531 August 2017. Summary of changes for version 20170831: 2346 2347 23481) ACPICA kernel-resident subsystem: 2349 2350Implemented internal support for full 64-bit addresses that appear in all 2351Generic Address Structure (GAS) structures. Previously, only the lower 32 2352bits were used. Affects the use of GAS structures in the FADT and other 2353tables, as well as the GAS structures passed to the AcpiRead and 2354AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 2355 2356Added header support for the PDTT ACPI table (Processor Debug Trigger 2357Table). Full support in the iASL Data Table Compiler and disassembler is 2358forthcoming. 2359 2360 23612) iASL Compiler/Disassembler and Tools: 2362 2363iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 2364Properties Topology Table) where a flag bit was specified in the wrong 2365bit position ("Line Size Valid", bit 6). 2366 2367iASL: Implemented support for Octal integer constants as defined by the 2368ASL language grammar, per the ACPI specification. Any integer constant 2369that starts with a zero is an octal constant. For example, 2370 Store (037777, Local0) /* Octal constant */ 2371 Store (0x3FFF, Local0) /* Hex equivalent */ 2372 Store (16383, Local0) /* Decimal equivalent */ 2373 2374iASL: Improved overflow detection for 64-bit string conversions during 2375compilation of integer constants. "Overflow" in this case means a string 2376that represents an integer that is too large to fit into a 64-bit value. 2377Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 2378the low-order 32 bits with a warning, as previously implemented. Several 2379new exceptions are defined that indicate a 64-bit overflow, as well as 2380the base (radix) that was used during the attempted conversion. Examples: 2381 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 2382 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 2383 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 2384 2385iASL: Added a warning for the case where a ResourceTemplate is declared 2386with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 2387this case, the resulting template is created with a single END_TAG 2388descriptor, which is essentially useless. 2389 2390iASL: Expanded the -vw option (ignore specific warnings/remarks) to 2391include compilation error codes as well. 2392 2393---------------------------------------- 239428 July 2017. Summary of changes for version 20170728: 2395 2396 23971) ACPICA kernel-resident subsystem: 2398 2399Fixed a regression seen with small resource descriptors that could cause 2400an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2401 2402AML interpreter: Implemented a new feature that allows forward references 2403from individual named references within package objects that are 2404contained within blocks of "module-level code". This provides 2405compatibility with other ACPI implementations and supports existing 2406firmware that depends on this feature. Example: 2407 2408 Name (ABCD, 1) 2409 If (ABCD) /* An If() at module-level */ 2410 { 2411 Name (PKG1, Package() 2412 { 2413 INT1 /* Forward reference to object INT1 2414*/ 2415 }) 2416 Name (INT1, 0x1234) 2417 } 2418 2419AML Interpreter: Fixed a problem with the Alias() operator where aliases 2420to some ASL objects were not handled properly. Objects affected are: 2421Mutex, Event, and OperationRegion. 2422 2423AML Debugger: Enhanced to properly handle AML Alias objects. These 2424objects have one level of indirection which was not fully supported by 2425the debugger. 2426 2427Table Manager: Added support to detect and ignore duplicate SSDTs within 2428the XSDT/RSDT. This error in the XSDT has been seen in the field. 2429 2430EFI and EDK2 support: 2431 Enabled /WX flag for MSVC builds 2432 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2433 Added local support for 64-bit multiply and shift operations 2434 Added support to compile acpidump.efi on Windows 2435 Added OSL function stubs for interfaces not used under EFI 2436 2437Added additional support for the _DMA predefined name. _DMA returns a 2438buffer containing a resource template. This change add support within the 2439resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2440resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 2441 2442 24432) iASL Compiler/Disassembler and Tools: 2444 2445iASL: Fixed a problem where the internal input line buffer(s) could 2446overflow if there are very long lines in the input ASL source code file. 2447Implemented buffer management that automatically increases the size of 2448the buffers as necessary. 2449 2450iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2451errors. If the specified exception is not raised during compilation, the 2452compiler emits an error. This is intended to support the ASL test suite, 2453but may be useful in other contexts. 2454 2455iASL: Implemented a new predefined macro, __METHOD__, which returns a 2456string containing the name of the current control method that is being 2457compiled. 2458 2459iASL: Implemented debugger and table compiler support for the SDEI ACPI 2460table (Software Delegated Exception Interface). James Morse 2461<james.morse@arm.com> 2462 2463Unix/Linux makefiles: Added an option to disable compile optimizations. 2464The disable occurs when the NOOPT flag is set to TRUE. 2465theracermaster@gmail.com 2466 2467Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2468when there are different tables for 32-bit versus 64-bit. 2469 2470Enhanced error reporting for the ASL test suite (ASLTS) by removing 2471unnecessary/verbose text, and emit the actual line number where an error 2472has occurred. These changes are intended to improve the usefulness of the 2473test suite. 2474 2475---------------------------------------- 247629 June 2017. Summary of changes for version 20170629: 2477 2478 24791) ACPICA kernel-resident subsystem: 2480 2481Tables: Implemented a deferred ACPI table verification. This is useful 2482for operating systems where the tables cannot be verified in the early 2483initialization stage due to early memory mapping limitations on some 2484architectures. Lv Zheng. 2485 2486Tables: Removed the signature validation for dynamically loaded tables. 2487Provides compatibility with other ACPI implementations. Previously, only 2488SSDT tables were allowed, as per the ACPI specification. Now, any table 2489signature can be used via the Load() operator. Lv Zheng. 2490 2491Tables: Fixed several mutex issues that could cause errors during table 2492acquisition. Lv Zheng. 2493 2494Tables: Fixed a problem where an ACPI warning could be generated if a 2495null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2496 2497Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2498AcpiPutTable interfaces. This applies to the "late stage" table loading 2499when the use of AcpiPutTable is no longer required (since the system 2500memory manager is fully running and available). Lv Zheng. 2501 2502Fixed/Reverted a regression during processing of resource descriptors 2503that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2504exception in this case. 2505 2506Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2507I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 2508 2509Interpreter: Fixed a possible fault if an Alias operator with an invalid 2510or duplicate target is encountered during Alias creation in 2511AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 2512 2513Added an option to use designated initializers for function pointers. 2514Kees Cook <keescook@google.com> 2515 2516 25172) iASL Compiler/Disassembler and Tools: 2518 2519iASL: Allow compilation of External declarations with target pathnames 2520that refer to existing named objects within the table. Erik Schmauss. 2521 2522iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2523FieldUnit name also is declared via External in the same table. Erik 2524Schmauss. 2525 2526iASL: Allow existing scope names within pathnames used in External 2527statements. For example: 2528 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2529 Device (ABCD) 2530 2531iASL: IORT ACPI table: Implemented changes required to decode the new 2532Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2533compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 2534 2535Disassembler: Don't abort disassembly on errors from External() 2536statements. Erik Schmauss. 2537 2538Disassembler: fixed a possible fault when one of the Create*Field 2539operators references a Resource Template. ACPICA Bugzilla 1396. 2540 2541iASL: In the source code, resolved some naming inconsistences across the 2542parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2543Adds a new file, aslparseop.c 2544 2545---------------------------------------- 254631 May 2017. Summary of changes for version 20170531: 2547 2548 25490) ACPI 6.2 support: 2550 2551The ACPI specification version 6.2 has been released and is available at 2552http://uefi.org/specifications 2553 2554This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2555are summarized below. 2556 2557New ACPI tables (Table Compiler/Disassembler/Templates): 2558 HMAT (Heterogeneous Memory Attributes Table) 2559 WSMT (Windows SMM Security Mitigation Table) 2560 PPTT (Processor Properties Topology Table) 2561 2562New subtables for existing ACPI tables: 2563 HEST (New subtable, Arch-deferred machine check) 2564 SRAT (New subtable, Arch-specific affinity structure) 2565 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2566 2567Simple updates for existing ACPI tables: 2568 BGRT (two new flag bits) 2569 HEST (New bit defined for several subtables, GHES_ASSIST) 2570 2571New Resource Descriptors and Resource macros (Compiler/Disassembler): 2572 PinConfig() 2573 PinFunction() 2574 PinGroup() 2575 PinGroupConfig() 2576 PinGroupFunction() 2577 New type for hardware error notification (section 18.3.2.9) 2578 2579New predefined names/methods (Compiler/Interpreter): 2580 _HMA (Heterogeneous Memory Attributes) 2581 _LSI (Label Storage Information) 2582 _LSR (Label Storage Read) 2583 _LSW (Label Storage Write) 2584 2585ASL grammar/macro changes (Compiler): 2586 For() ASL macro, implemented with the AML while operator 2587 Extensions to Concatenate operator 2588 Support for multiple definition blocks in same ASL file 2589 Clarification for Buffer operator 2590 Allow executable AML code underneath all scopes (Devices, etc.) 2591 Clarification/change for the _OSI return value 2592 ASL grammar update for reference operators 2593 Allow a zero-length string for AML filename in DefinitionBlock 2594 2595Miscellaneous: 2596 New device object notification value 2597 Remove a notify value (0x0C) for graceful shutdown 2598 New UUIDs for processor/cache properties and 2599 physical package property 2600 New _HID, ACPI0014 (Wireless Power Calibration Device) 2601 2602 26031) ACPICA kernel-resident subsystem: 2604 2605Added support to disable ACPI events on hardware-reduced platforms. 2606Eliminates error messages of the form "Could not enable fixed event". Lv 2607Zheng 2608 2609Fixed a problem using Device/Thermal objects with the ObjectType and 2610DerefOf ASL operators. This support had not been fully/properly 2611implemented. 2612 2613Fixed a problem where if a Buffer object containing a resource template 2614was longer than the actual resource template, an error was generated -- 2615even though the AML is legal. This case has been seen in the field. 2616 2617Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2618The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2619 2620Added header file changes for the TPM2 ACPI table. Update to new version 2621of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2622 2623Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2624These interfaces are intended to be used only in conjunction with the 2625predefined _DLM method (Device Lock Method). "This object appears in a 2626device scope when AML access to the device must be synchronized with the 2627OS environment". 2628 2629Example Code and Data Size: These are the sizes for the OS-independent 2630acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2631debug version of the code includes the debug output trace mechanism and 2632has a much larger code and data size. 2633 2634 Current Release: 2635 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2636 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2637 Previous Release: 2638 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2639 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2640 2641 26422) iASL Compiler/Disassembler and Tools: 2643 2644iASL: Fixed a problem where an External() declaration could not refer to 2645a Field Unit. Erik Schmauss. 2646 2647Disassembler: Improved support for the Switch/Case operators. This 2648feature will disassemble AML code back to the original Switch operators 2649when possible, instead of an If..Else sequence. David Box 2650 2651iASL and disassembler: Improved the handling of multiple extraneous 2652parentheses for both ASL input and disassembled ASL output. 2653 2654Improved the behavior of the iASL compiler and disassembler to detect 2655improper use of external declarations 2656 2657Disassembler: Now aborts immediately upon detection of an unknown AML 2658opcode. The AML parser has no real way to recover from this, and can 2659result in the creation of an ill-formed parse tree that causes errors 2660later during the disassembly. 2661 2662All tools: Fixed a problem where the Unix application OSL did not handle 2663control-c correctly. For example, a control-c could incorrectly wake the 2664debugger. 2665 2666AcpiExec: Improved the Control-C handling and added a handler for 2667segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2668environments. 2669 2670Reduced the verbosity of the generic unix makefiles. Previously, each 2671compilation displayed the full set of compiler options. This has been 2672eliminated as the options are easily inspected within the makefiles. Each 2673compilation now results in a single line of output. 2674 2675---------------------------------------- 267603 March 2017. Summary of changes for version 20170303: 2677 2678 26790) ACPICA licensing: 2680 2681The licensing information at the start of each source code module has 2682been updated. In addition to the Intel license, the dual GPLv2/BSD 2683license has been added for completeness. Now, a single version of the 2684source code should be suitable for all ACPICA customers. This is the 2685major change for this release since it affects all source code modules. 2686 2687 26881) ACPICA kernel-resident subsystem: 2689 2690Fixed two issues with the common asltypes.h header that could cause 2691problems in some environments: (Kim Jung-uk) 2692 Removed typedef for YY_BUFFER_STATE ? 2693 Fixes an error with earlier versions of Flex. 2694 Removed use of FILE typedef (which is only defined in stdio.h) 2695 2696 26972) iASL Compiler/Disassembler and Tools: 2698 2699Disassembler: fixed a regression introduced in 20170224. A fix for a 2700memory leak related to resource descriptor tags (names) could fault when 2701the disassembler was generated with 64-bit compilers. 2702 2703The ASLTS test suite has been updated to implement a new testing 2704architecture. During generation of the suite from ASL source, both the 2705ASL and ASL+ compilers are now validated, as well as the disassembler 2706itself (Erik Schmauss). The architecture executes as follows: 2707 2708 For every ASL source module: 2709 Compile (legacy ASL compilation) 2710 Disassemble the resulting AML to ASL+ source code 2711 Compile the new ASL+ module 2712 Perform a binary compare on the legacy AML and the new ASL+ AML 2713 The ASLTS suite then executes normally using the AML binaries. 2714 2715---------------------------------------- 271624 February 2017. Summary of changes for version 20170224: 2717 2718 27191) ACPICA kernel-resident subsystem: 2720 2721Interpreter: Fixed two issues with the control method return value auto- 2722repair feature, where an attempt to double-delete an internal object 2723could result in an ACPICA warning (for _CID repair and others). No fault 2724occurs, however, because the attempted deletion (actually a release to an 2725internal cache) is detected and ignored via object poisoning. 2726 2727Debugger: Fixed an AML interpreter mutex issue during the single stepping 2728of control methods. If certain debugger commands are executed during 2729stepping, a mutex acquire/release error could occur. Lv Zheng. 2730 2731Fixed some issues generating ACPICA with the Intel C compiler by 2732restoring the original behavior and compiler-specific include file in 2733acenv.h. Lv Zheng. 2734 2735Example Code and Data Size: These are the sizes for the OS-independent 2736acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2737debug version of the code includes the debug output trace mechanism and 2738has a much larger code and data size. 2739 2740 Current Release: 2741 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2742 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2743 Previous Release: 2744 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2745 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2746 2747 27482) iASL Compiler/Disassembler and Tools: 2749 2750iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2751tool has been designed, implemented, and included in this release. The 2752key feature of this utility is that the original comments within the 2753input ASL file are preserved during the conversion process, and included 2754within the converted ASL+ file -- thus creating a transparent conversion 2755of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2756 2757 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2758converted code 2759 2760iASL/Disassembler: Improved the detection and correct disassembly of 2761Switch/Case operators. This feature detects sequences of if/elseif/else 2762operators that originated from ASL Switch/Case/Default operators and 2763emits the original operators. David Box. 2764 2765iASL: Improved the IORT ACPI table support in the following areas. Lv 2766Zheng: 2767 Clear MappingOffset if the MappingCount is zero. 2768 Fix the disassembly of the SMMU GSU interrupt offset. 2769 Update the template file for the IORT table. 2770 2771Disassembler: Enhanced the detection and disassembly of resource 2772template/descriptor within a Buffer object. An EndTag descriptor is now 2773required to have a zero second byte, since all known ASL compilers emit 2774this. This helps eliminate incorrect decisions when a buffer is 2775disassembled (false positives on resource templates). 2776 2777---------------------------------------- 277819 January 2017. Summary of changes for version 20170119: 2779 2780 27811) General ACPICA software: 2782 2783Entire source code base: Added the 2017 copyright to all source code 2784legal/licensing module headers and utility/tool signons. This includes 2785the standard Linux dual-license header. This affects virtually every file 2786in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2787the ACPICA test suite. 2788 2789 27902) iASL Compiler/Disassembler and Tools: 2791 2792iASL: Removed/fixed an inadvertent remark when a method argument 2793containing a reference is used as a target operand within the method (and 2794never used as a simple argument), as in the example below. Jeffrey Hugo. 2795 2796 dsdt.asl 1507: Store(0x1, Arg0) 2797 Remark 2146 - ^ Method Argument is never used (Arg0) 2798 2799All tools: Removed the bit width of the compiler that generated the tool 2800from the common signon for all user space tools. This proved to be 2801confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2802from the generic makefiles (Thomas Petazzoni). Example below. 2803 2804 Old: 2805 ASL+ Optimizing Compiler version 20170119-32 2806 ASL+ Optimizing Compiler version 20170119-64 2807 2808 New: 2809 ASL+ Optimizing Compiler version 20170119 2810 2811---------------------------------------- 281222 December 2016. Summary of changes for version 20161222: 2813 2814 28151) ACPICA kernel-resident subsystem: 2816 2817AML Debugger: Implemented a new mechanism to simplify and enhance 2818debugger integration into all environments, including kernel debuggers 2819and user-space utilities, as well as remote debug services. This 2820mechanism essentially consists of new OSL interfaces to support debugger 2821initialization/termination, as well as wait/notify interfaces to perform 2822the debugger handshake with the host. Lv Zheng. 2823 2824 New OSL interfaces: 2825 AcpiOsInitializeDebugger (void) 2826 AcpiOsTerminateDebugger (void) 2827 AcpiOsWaitCommandReady (void) 2828 AcpiOsNotifyCommandComplete (void) 2829 2830 New OS services layer: 2831 osgendbg.c -- Example implementation, and used for AcpiExec 2832 2833Update for Generic Address Space (GAS) support: Although the AccessWidth 2834and/or BitOffset fields of the GAS are not often used, this change now 2835fully supports these fields. This affects the internal support for FADT 2836registers, registers in other ACPI data tables, and the AcpiRead and 2837AcpiWrite public interfaces. Lv Zheng. 2838 2839Sleep support: In order to simplify integration of ACPI sleep for the 2840various host operating systems, a new OSL interface has been introduced. 2841AcpiOsEnterSleep allows the host to perform any required operations 2842before the final write to the sleep control register(s) is performed by 2843ACPICA. Lv Zheng. 2844 2845 New OSL interface: 2846 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2847 2848 Called from these internal interfaces: 2849 AcpiHwLegacySleep 2850 AcpiHwExtendedSleep 2851 2852EFI support: Added a very small EFI/ACPICA example application. Provides 2853a simple demo for EFI integration, as well as assisting with resolution 2854of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2855 2856 source/tools/efihello/efihello.c 2857 2858Local C library: Implemented several new functions to enhance ACPICA 2859portability, for environments where these clib functions are not 2860available (such as EFI). Lv Zheng: 2861 putchar 2862 getchar 2863 strpbrk 2864 strtok 2865 memmove 2866 2867Fixed a regression where occasionally a valid resource descriptor was 2868incorrectly detected as invalid at runtime, and a 2869AE_AML_NO_RESOURCE_END_TAG was returned. 2870 2871Fixed a problem with the recently implemented support that enables 2872control method invocations as Target operands to many ASL operators. 2873Warnings of this form: "Needed type [Reference], found [Processor]" were 2874seen at runtime for some method invocations. 2875 2876Example Code and Data Size: These are the sizes for the OS-independent 2877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2878debug version of the code includes the debug output trace mechanism and 2879has a much larger code and data size. 2880 2881 Current Release: 2882 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2883 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2884 Previous Release: 2885 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2886 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2887 2888 28892) iASL Compiler/Disassembler and Tools: 2890 2891Disassembler: Enhanced output by adding the capability to detect and 2892disassemble ASL Switch/Case statements back to the original ASL source 2893code instead of if/else blocks. David Box. 2894 2895AcpiHelp: Split a large file into separate files based upon 2896functionality/purpose. New files are: 2897 ahaml.c 2898 ahasl.c 2899 2900---------------------------------------- 290117 November 2016. Summary of changes for version 20161117: 2902 2903 29041) ACPICA kernel-resident subsystem: 2905 2906Table Manager: Fixed a regression introduced in 20160729, "FADT support 2907cleanup". This was an attempt to remove all references in the source to 2908the FADT version 2, which never was a legal version number. It was 2909skipped because it was an early version of 64-bit support that was 2910eventually abandoned for the current 64-bit support. 2911 2912Interpreter: Fixed a problem where runtime implicit conversion was 2913incorrectly disabled for the ASL operators below. This brings the 2914behavior into compliance with the ACPI specification: 2915 FromBCD 2916 ToBCD 2917 ToDecimalString 2918 ToHexString 2919 ToInteger 2920 ToBuffer 2921 2922Table Manager: Added a new public interface, AcpiPutTable, used to 2923release and free an ACPI table returned by AcpiGetTable and related 2924interfaces. Lv Zheng. 2925 2926Example Code and Data Size: These are the sizes for the OS-independent 2927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2928debug version of the code includes the debug output trace mechanism and 2929has a much larger code and data size. 2930 2931 Current Release: 2932 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2933 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 2934 Previous Release: 2935 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 2936 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 2937 2938 29392) iASL Compiler/Disassembler and Tools: 2940 2941Disassembler: Fixed a regression for disassembly of Resource Template. 2942Detection of templates in the AML stream missed some types of templates. 2943 2944iASL: Fixed a problem where an Access Size error was returned for the PCC 2945address space when the AccessSize of the GAS register is greater than a 2946DWORD. Hoan Tran. 2947 2948iASL: Implemented several grammar changes for the operators below. These 2949changes are slated for the next version of the ACPI specification: 2950 RefOf - Disallow method invocation as an operand 2951 CondRefOf - Disallow method invocation as an operand 2952 DerefOf - Disallow operands that use the result from operators 2953that 2954 do not return a reference (Changed TermArg to 2955SuperName). 2956 2957iASL: Control method invocations are now allowed for Target operands, as 2958per the ACPI specification. Removed error for using a control method 2959invocation as a Target operand. 2960 2961Disassembler: Improved detection of Resource Templates, Unicode, and 2962Strings within Buffer objects. These subtypes do not contain a specific 2963opcode to indicate the originating ASL code, and they must be detected by 2964other means within the disassembler. 2965 2966iASL: Implemented an optimization improvement for 32-bit ACPI tables 2967(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 2968only after 64-bit to 32-bit truncation. A truncation warning message is 2969still emitted, however. 2970 2971AcpiXtract: Implemented handling for both types of line terminators (LF 2972or CR/LF) so that it can accept AcpiDump output files from any system. 2973Peter Wu. 2974 2975AcpiBin: Added two new options for comparing AML files: 2976 -a: compare and display ALL mismatches 2977 -o: start compare at this offset into the second file 2978 2979---------------------------------------- 298030 September 2016. Summary of changes for version 20160930: 2981 2982 29831) ACPICA kernel-resident subsystem: 2984 2985Fixed a regression in the internal AcpiTbFindTable function where a non 2986AE_OK exception could inadvertently be returned even if the function did 2987not fail. This problem affects the following operators: 2988 DataTableRegion 2989 LoadTable 2990 2991Fixed a regression in the LoadTable operator where a load to any 2992namespace location other than the root no longer worked properly. 2993 2994Increased the maximum loop count value that will result in the 2995AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 2996prevent infinite loops within the AML interpreter and thus the host OS 2997kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 29981,048,575). 2999 3000Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 3001acpixf.h file. This allows hosts to easily configure the maximum loop 3002count at runtime. 3003 3004Removed an illegal character in the strtoul64.c file. This character 3005caused errors with some C compilers. 3006 3007Example Code and Data Size: These are the sizes for the OS-independent 3008acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3009debug version of the code includes the debug output trace mechanism and 3010has a much larger code and data size. 3011 3012 Current Release: 3013 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3014 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3015 Previous Release: 3016 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 3017 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3018 3019 30202) iASL Compiler/Disassembler and Tools: 3021 3022Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 3023the simpler ASL ElseIf keyword. During the conversion, a trailing If 3024block could be lost and missing from the disassembled output. 3025 3026iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 3027the missing rule caused a parse error when using the Index operator as an 3028operand to ObjectType. This construct now compiles properly. Example: 3029 ObjectType(PKG1[4]). 3030 3031iASL: Correctly handle unresolved symbols in the hardware map file (-lm 3032option). Previously, unresolved symbols could cause a protection fault. 3033Such symbols are now marked as unresolved in the map file. 3034 3035iASL: Implemented support to allow control method invocations as an 3036operand to the ASL DeRefOf operator. Example: 3037 DeRefOf(MTH1(Local0)) 3038 3039Disassembler: Improved support for the ToPLD ASL macro. Detection of a 3040possible _PLD buffer now includes examination of both the normal buffer 3041length (16 or 20) as well as the surrounding AML package length. 3042 3043Disassembler: Fixed a problem with the decoding of complex expressions 3044within the Divide operator for ASL+. For the case where both the quotient 3045and remainder targets are specified, the entire statement cannot be 3046disassembled. Previously, the output incorrectly contained a mix of ASL- 3047and ASL+ operators. This mixed statement causes a syntax error when 3048compiled. Example: 3049 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 3050disassembled to: 3051 Divide (INT1 + 6, 128, RSLT, QUOT) 3052 3053iASL/Tools: Added support to process AML and non-AML ACPI tables 3054consistently. For the disassembler and AcpiExec, allow all types of ACPI 3055tables (AML and data tables). For the iASL -e option, allow only AML 3056tables (DSDT/SSDT). 3057 3058---------------------------------------- 305931 August 2016. Summary of changes for version 20160831: 3060 3061 30621) ACPICA kernel-resident subsystem: 3063 3064Improve support for the so-called "module-level code", which is defined 3065to be math, logical and control AML opcodes that appear outside of any 3066control method. This change improves the support by adding more opcodes 3067that can be executed in the manner. Some other issues have been solved, 3068and the ASL grammar changes to support such code under all scope 3069operators (Device, etc.) are complete. Lv Zheng. 3070 3071UEFI support: these OSL functions have been implemented. This is an 3072additional step toward supporting the AcpiExec utility natively (with 3073full hardware access) under UEFI. Marcelo Ferreira. 3074 AcpiOsReadPciConfiguration 3075 AcpiOsWritePciConfiguration 3076 3077Fixed a possible mutex error during control method auto-serialization. Lv 3078Zheng. 3079 3080Updated support for the Generic Address Structure by fully implementing 3081all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 3082Zheng. 3083 3084Updated the return value for the internal _OSI method. Instead of 30850xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 3086for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 3087implementations, and will be reflected and clarified in the next version 3088of the ACPI specification. 3089 3090Implemented two new table events that can be passed to an ACPICA table 3091handler. These events are used to indicate a table installation or 3092uninstallation. These events are used in addition to existed table load 3093and unload events. Lv Zheng. 3094 3095Implemented a cleanup for all internal string-to-integer conversions. 3096Consolidate multiple versions of this functionality and limit possible 3097bases to either 10 or 16 to simplify the code. Adds a new file, 3098utstrtoul64. 3099 3100Cleanup the inclusion order of the various compiler-specific headers. 3101This simplifies build configuration management. The compiler-specific 3102headers are now split out from the host-specific headers. Lv Zheng. 3103 3104Example Code and Data Size: These are the sizes for the OS-independent 3105acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3106debug version of the code includes the debug output trace mechanism and 3107has a much larger code and data size. 3108 3109 Current Release: 3110 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 3111 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3112 3113 31142) iASL Compiler/Disassembler and Tools: 3115 3116iASL/AcpiExec: Added a command line option to display the build date/time 3117of the tool (-vd). This can be useful to verify that the correct version 3118of the tools are being used. 3119 3120AML Debugger: Implemented a new subcommand ("execute predef") to execute 3121all predefined control methods and names within the current namespace. 3122This can be useful for debugging problems with ACPI tables and the ACPI 3123namespace. 3124 3125---------------------------------------- 312629 July 2016. Summary of changes for version 20160729: 3127 3128 31291) ACPICA kernel-resident subsystem: 3130 3131Implemented basic UEFI support for the various ACPICA tools. This 3132includes: 31331) An OSL to implement the various AcpiOs* interfaces on UEFI. 31342) Support to obtain the ACPI tables on UEFI. 31353) Local implementation of required C library functions not available on 3136UEFI. 31374) A front-end (main) function for the tools for UEFI-related 3138initialization. 3139 3140The initial deployment of this support is the AcpiDump utility executing 3141as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 3142Current environments supported are Linux/Unix. MSVC generation is not 3143supported at this time. See the generate/efi/README file for build 3144instructions. Lv Zheng. 3145 3146Future plans include porting the AcpiExec utility to execute natively on 3147the platform with I/O and memory access. This will allow viewing/dump of 3148the platform namespace and native execution of ACPI control methods that 3149access the actual hardware. To fully implement this support, the OSL 3150functions below must be implemented with UEFI interfaces. Any community 3151help in the implementation of these functions would be appreciated: 3152 AcpiOsReadPort 3153 AcpiOsWritePort 3154 AcpiOsReadMemory 3155 AcpiOsWriteMemory 3156 AcpiOsReadPciConfiguration 3157 AcpiOsWritePciConfiguration 3158 3159Restructured and standardized the C library configuration for ACPICA, 3160resulting in the various configuration options below. This includes a 3161global restructuring of the compiler-dependent and platform-dependent 3162include files. These changes may affect the existing platform-dependent 3163configuration files on some hosts. Lv Zheng. 3164 3165The current C library configuration options appear below. For any issues, 3166it may be helpful to examine the existing compiler-dependent and 3167platform-dependent files as examples. Lv Zheng. 3168 31691) Linux kernel: 3170 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3171library. 3172 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 31732) Unix/Windows/BSD applications: 3174 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 3175library. 3176 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 31773) UEFI applications: 3178 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3179library. 3180 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 31814) UEFI applications (EDK2/StdLib): 3182 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 3183 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 3184 3185 3186AML interpreter: "module-level code" support. Allows for execution of so- 3187called "executable" AML code (math/logical operations, etc.) outside of 3188control methods not just at the module level (top level) but also within 3189any scope declared outside of a control method - Scope{}, Device{}, 3190Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 3191 3192Simplified the configuration of the "maximum AML loops" global option by 3193adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 3194modified at runtime. 3195 3196 3197Example Code and Data Size: These are the sizes for the OS-independent 3198acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3199debug version of the code includes the debug output trace mechanism and 3200has a much larger code and data size. 3201 3202 Current Release: 3203 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 3204 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 3205 3206 32072) iASL Compiler/Disassembler and Tools: 3208 3209iASL: Add full support for the RASF ACPI table (RAS Features Table). 3210Includes disassembler, data table compiler, and header support. 3211 3212iASL Expand "module-level code" support. Allows for 3213compilation/disassembly of so-called "executable" AML code (math/logical 3214operations, etc.) outside of control methods not just at the module level 3215(top level) but also within any scope declared outside of a control 3216method - Scope{}, Device{}, Processor{}, PowerResource{}, and 3217ThermalZone{}. 3218 3219AcpiDump: Added support for dumping all SSDTs on newer versions of 3220Windows. These tables are now easily available -- SSDTs are not available 3221through the registry on older versions. 3222 3223---------------------------------------- 322427 May 2016. Summary of changes for version 20160527: 3225 3226 32271) ACPICA kernel-resident subsystem: 3228 3229Temporarily reverted the new arbitrary bit length/alignment support in 3230AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 3231a number of regressions with the new code that need to be fully resolved 3232and tested before this support can be finally integrated into ACPICA. 3233Apologies for any inconveniences these issues may have caused. 3234 3235The ACPI message macros are not configurable (ACPI_MSG_ERROR, 3236ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 3237and ACPI_MSG_BIOS_WARNING). Lv Zheng. 3238 3239Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 3240option. Adds a new return macro, return_STR. Junk-uk Kim. 3241 3242Example Code and Data Size: These are the sizes for the OS-independent 3243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3244debug version of the code includes the debug output trace mechanism and 3245has a much larger code and data size. 3246 3247 Current Release: 3248 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 3249 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3250 Previous Release: 3251 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3252 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 3253 3254---------------------------------------- 325522 April 2016. Summary of changes for version 20160422: 3256 32571) ACPICA kernel-resident subsystem: 3258 3259Fixed a regression in the GAS (generic address structure) arbitrary bit 3260support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 3261and incorrect return values. Lv Zheng. ACPICA BZ 1270. 3262 3263ACPI 6.0: Added support for new/renamed resource macros. One new argument 3264was added to each of these macros, and the original name has been 3265deprecated. The AML disassembler will always disassemble to the new 3266names. Support for the new macros was added to iASL, disassembler, 3267resource manager, and the acpihelp utility. ACPICA BZ 1274. 3268 3269 I2cSerialBus -> I2cSerialBusV2 3270 SpiSerialBus -> SpiSerialBusV2 3271 UartSerialBus -> UartSerialBusV2 3272 3273ACPI 6.0: Added support for a new integer field that was appended to the 3274package object returned by the _BIX method. This adds iASL compile-time 3275and AML runtime error checking. ACPICA BZ 1273. 3276 3277ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 3278Subspace Type2" (Headers, Disassembler, and data table compiler). 3279 3280Example Code and Data Size: These are the sizes for the OS-independent 3281acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3282debug version of the code includes the debug output trace mechanism and 3283has a much larger code and data size. 3284 3285 Current Release: 3286 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3287 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3288 Previous Release: 3289 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3290 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3291 3292 32932) iASL Compiler/Disassembler and Tools: 3294 3295iASL: Implemented an ASL grammar extension to allow/enable executable 3296"module-level code" to be created and executed under the various 3297operators that create new scopes. This type of AML code is already 3298supported in all known AML interpreters, and the grammar change will 3299appear in the next version of the ACPI specification. Simplifies the 3300conditional runtime creation of named objects under these object types: 3301 3302 Device 3303 PowerResource 3304 Processor 3305 Scope 3306 ThermalZone 3307 3308iASL: Implemented a new ASL extension, a "For" loop macro to add greater 3309ease-of-use to the ASL language. The syntax is similar to the 3310corresponding C operator, and is implemented with the existing AML While 3311opcode -- thus requiring no changes to existing AML interpreters. 3312 3313 For (Initialize, Predicate, Update) {TermList} 3314 3315Grammar: 3316 ForTerm := 3317 For ( 3318 Initializer // Nothing | TermArg => ComputationalData 3319 Predicate // Nothing | TermArg => ComputationalData 3320 Update // Nothing | TermArg => ComputationalData 3321 ) {TermList} 3322 3323 3324iASL: The _HID/_ADR detection and validation has been enhanced to search 3325under conditionals in order to allow these objects to be conditionally 3326created at runtime. 3327 3328iASL: Fixed several issues with the constant folding feature. The 3329improvement allows better detection and resolution of statements that can 3330be folded at compile time. ACPICA BZ 1266. 3331 3332iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 3333conversion to the ASL ElseIf operator where incorrect ASL code could be 3334generated. 3335 3336iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 3337sometimes an extra (and extraneous) set of parentheses were emitted for 3338some combinations of operators. Although this did not cause any problems 3339with recompilation of the disassembled code, it made the code more 3340difficult to read. David Box. ACPICA BZ 1231. 3341 3342iASL: Changed to ignore the unreferenced detection for predefined names 3343of resource descriptor elements, when the resource descriptor is 3344created/defined within a control method. 3345 3346iASL: Disassembler: Fix a possible fault with externally declared Buffer 3347objects. 3348 3349---------------------------------------- 335018 March 2016. Summary of changes for version 20160318: 3351 33521) ACPICA kernel-resident subsystem: 3353 3354Added support for arbitrary bit lengths and bit offsets for registers 3355defined by the Generic Address Structure. Previously, only aligned bit 3356lengths of 8/16/32/64 were supported. This was sufficient for many years, 3357but recently some machines have been seen that require arbitrary bit- 3358level support. ACPICA BZ 1240. Lv Zheng. 3359 3360Fixed an issue where the \_SB._INI method sometimes must be evaluated 3361before any _REG methods are evaluated. Lv Zheng. 3362 3363Implemented several changes related to ACPI table support 3364(Headers/Disassembler/TableCompiler): 3365NFIT: For ACPI 6.1, updated to add some additional new fields and 3366constants. 3367FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 33686). 3369DMAR: Added new constants per the 10/2014 DMAR spec. 3370IORT: Added new subtable per the 10/2015 IORT spec. 3371HEST: For ACPI 6.1, added new constants and new subtable. 3372DBG2: Added new constants per the 12/2015 DBG2 spec. 3373FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 3374ACPICA BZ 1249. 3375ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 3376 3377Updated header support for the DMAR table to match the current version of 3378the related spec. 3379 3380Added extensions to the ASL Concatenate operator to allow any ACPI object 3381to be passed as an operand. Any object other than Integer/String/Buffer 3382simply returns a string containing the object type. This extends the 3383usefulness of the Printf macros. Previously, Concatenate would abort the 3384control method if a non-data object was encountered. 3385 3386ACPICA source code: Deployed the C "const" keyword across the source code 3387where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 3388 3389Example Code and Data Size: These are the sizes for the OS-independent 3390acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3391debug version of the code includes the debug output trace mechanism and 3392has a much larger code and data size. 3393 3394 Current Release: 3395 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3396 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3397 Previous Release: 3398 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3399 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3400 3401 34022) iASL Compiler/Disassembler and Tools: 3403 3404iASL/Disassembler: Improved the heuristic used to determine the number of 3405arguments for an externally defined control method (a method in another 3406table). Although this is an improvement, there is no deterministic way to 3407"guess" the number of method arguments. Only the ACPI 6.0 External opcode 3408will completely solve this problem as it is deployed (automatically) in 3409newer BIOS code. 3410 3411iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3412statements that could cause errors when the disassembled file is 3413compiled. ACPICA BZ 1243. David Box. 3414 3415iASL: Fixed a regression caused by the merger of the two versions of the 3416local strtoul64. Because of a dependency on a global variable, strtoul64 3417could return an error for integers greater than a 32-bit value. ACPICA BZ 34181260. 3419 3420iASL: Fixed a regression where a fault could occur for an ASL Return 3421statement if it invokes a control method that is not resolved. ACPICA BZ 34221264. 3423 3424AcpiXtract: Improved input file validation: detection of binary files and 3425non-acpidump text files. 3426 3427---------------------------------------- 342812 February 2016. Summary of changes for version 20160212: 3429 34301) ACPICA kernel-resident subsystem: 3431 3432Implemented full support for the ACPI 6.1 specification (released in 3433January). This version of the specification is available at: 3434http://www.uefi.org/specifications 3435 3436Only a relatively small number of changes were required in ACPICA to 3437support ACPI 6.1, in these areas: 3438- New predefined names 3439- New _HID values 3440- A new subtable for HEST 3441- A few other header changes for new values 3442 3443Ensure \_SB_._INI is executed before any _REG methods are executed. There 3444appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3445 3446Reverted a change made in version 20151218 which enabled method 3447invocations to be targets of various ASL operators (SuperName and Target 3448grammar elements). While the new behavior is supported by the ACPI 3449specification, other AML interpreters do not support this behavior and 3450never will. The ACPI specification will be updated for ACPI 6.2 to remove 3451this support. Therefore, the change was reverted to the original ACPICA 3452behavior. 3453 3454ACPICA now supports the GCC 6 compiler. 3455 3456Current Release: (Note: build changes increased sizes) 3457 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3458 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3459Previous Release: 3460 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3461 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3462 3463 34642) iASL Compiler/Disassembler and Tools: 3465 3466Completed full support for the ACPI 6.0 External() AML opcode. The 3467compiler emits an external AML opcode for each ASL External statement. 3468This opcode is used by the disassembler to assist with the disassembly of 3469external control methods by specifying the required number of arguments 3470for the method. AML interpreters do not use this opcode. To ensure that 3471interpreters do not even see the opcode, a block of one or more external 3472opcodes is surrounded by an "If(0)" construct. As this feature becomes 3473commonly deployed in BIOS code, the ability of disassemblers to correctly 3474disassemble AML code will be greatly improved. David Box. 3475 3476iASL: Implemented support for an optional cross-reference output file. 3477The -lx option will create a the cross-reference file with the suffix 3478"xrf". Three different types of cross-reference are created in this file: 3479- List of object references made from within each control method 3480- Invocation (caller) list for each user-defined control method 3481- List of references to each non-method object in the namespace 3482 3483iASL: Method invocations as ASL Target operands are now disallowed and 3484flagged as errors in preparation for ACPI 6.2 (see the description of the 3485problem above). 3486 3487---------------------------------------- 34888 January 2016. Summary of changes for version 20160108: 3489 34901) ACPICA kernel-resident subsystem: 3491 3492Updated all ACPICA copyrights and signons to 2016: Added the 2016 3493copyright to all source code module headers and utility/tool signons. 3494This includes the standard Linux dual-license header. This affects 3495virtually every file in the ACPICA core subsystem, iASL compiler, all 3496ACPICA utilities, and the ACPICA test suite. 3497 3498Fixed a regression introduced in version 20151218 concerning the 3499execution of so-called module-level ASL/AML code. Namespace objects 3500created under a module-level If() construct were not properly/fully 3501entered into the namespace and could cause an interpreter fault when 3502accessed. 3503 3504Example Code and Data Size: These are the sizes for the OS-independent 3505acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3506debug version of the code includes the debug output trace mechanism and 3507has a much larger code and data size. 3508 3509Current Release: 3510 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3511 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3512 Previous Release: 3513 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3514 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3515 3516 35172) iASL Compiler/Disassembler and Tools: 3518 3519Fixed a problem with the compilation of the GpioIo and GpioInt resource 3520descriptors. The _PIN field name was incorrectly defined to be an array 3521of 32-bit values, but the _PIN values are in fact 16 bits each. This 3522would cause incorrect bit width warnings when using Word (16-bit) fields 3523to access the descriptors. 3524 3525 3526---------------------------------------- 352718 December 2015. Summary of changes for version 20151218: 3528 35291) ACPICA kernel-resident subsystem: 3530 3531Implemented per-AML-table execution of "module-level code" as individual 3532ACPI tables are loaded into the namespace during ACPICA initialization. 3533In other words, any module-level code within an AML table is executed 3534immediately after the table is loaded, instead of batched and executed 3535after all of the tables have been loaded. This provides compatibility 3536with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3537David Box. 3538 3539To fully support the feature above, the default operation region handlers 3540for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3541installed before any ACPI tables are loaded. This enables module-level 3542code to access these address spaces during the table load and module- 3543level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3544Box. 3545 3546Implemented several changes to the internal _REG support in conjunction 3547with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3548utilities for the changes above. Although these tools were changed, host 3549operating systems that simply use the default handlers for SystemMemory, 3550SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3551 3552For example, in the code below, DEV1 is conditionally added to the 3553namespace by the DSDT via module-level code that accesses an operation 3554region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3555created immediately after the DSDT is loaded in order for the SSDT to 3556successfully reference DEV1. Previously, this code would cause an 3557AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3558fully supported by ACPICA. 3559 3560 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3561 { 3562 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3563 Field (OPR1, AnyAcc, NoLock, Preserve) 3564 { 3565 FLD1, 1 3566 } 3567 If (FLD1) 3568 { 3569 Device (\DEV1) 3570 { 3571 } 3572 } 3573 } 3574 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3575 { 3576 External (\DEV1, DeviceObj) 3577 Scope (\DEV1) 3578 { 3579 } 3580 } 3581 3582Fixed an AML interpreter problem where control method invocations were 3583not handled correctly when the invocation was itself a SuperName argument 3584to another ASL operator. In these cases, the method was not invoked. 3585ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3586argument: 3587 Store 3588 Acquire, Wait 3589 CondRefOf, RefOf 3590 Decrement, Increment 3591 Load, Unload 3592 Notify 3593 Signal, Release, Reset 3594 SizeOf 3595 3596Implemented automatic String-to-ObjectReference conversion support for 3597packages returned by predefined names (such as _DEP). A common BIOS error 3598is to add double quotes around an ObjectReference namepath, which turns 3599the reference into an unexpected string object. This support detects the 3600problem and corrects it before the package is returned to the caller that 3601invoked the method. Lv Zheng. 3602 3603Implemented extensions to the Concatenate operator. Concatenate now 3604accepts any type of object, it is not restricted to simply 3605Integer/String/Buffer. For objects other than these 3 basic data types, 3606the argument is treated as a string containing the name of the object 3607type. This expands the utility of Concatenate and the Printf/Fprintf 3608macros. ACPICA BZ 1222. 3609 3610Cleaned up the output of the ASL Debug object. The timer() value is now 3611optional and no longer emitted by default. Also, the basic data types of 3612Integer/String/Buffer are simply emitted as their values, without a data 3613type string -- since the data type is obvious from the output. ACPICA BZ 36141221. 3615 3616Example Code and Data Size: These are the sizes for the OS-independent 3617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3618debug version of the code includes the debug output trace mechanism and 3619has a much larger code and data size. 3620 3621 Current Release: 3622 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3623 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3624 Previous Release: 3625 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3626 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3627 3628 36292) iASL Compiler/Disassembler and Tools: 3630 3631iASL: Fixed some issues with the ASL Include() operator. This operator 3632was incorrectly defined in the iASL parser rules, causing a new scope to 3633be opened for the code within the include file. This could lead to 3634several issues, including allowing ASL code that is technically illegal 3635and not supported by AML interpreters. Note, this does not affect the 3636related #include preprocessor operator. ACPICA BZ 1212. 3637 3638iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3639operator is essentially an ASL macro since there is no AML opcode 3640associated with it. The code emitted by the iASL compiler for ElseIf is 3641an Else opcode followed immediately by an If opcode. The disassembler 3642will now emit an ElseIf if it finds an Else immediately followed by an 3643If. This simplifies the decoded ASL, especially for deeply nested 3644If..Else and large Switch constructs. Thus, the disassembled code more 3645closely follows the original source ASL. ACPICA BZ 1211. Example: 3646 3647 Old disassembly: 3648 Else 3649 { 3650 If (Arg0 == 0x02) 3651 { 3652 Local0 = 0x05 3653 } 3654 } 3655 3656 New disassembly: 3657 ElseIf (Arg0 == 0x02) 3658 { 3659 Local0 = 0x05 3660 } 3661 3662AcpiExec: Added support for the new module level code behavior and the 3663early region installation. This required a small change to the 3664initialization, since AcpiExec must install its own operation region 3665handlers. 3666 3667AcpiExec: Added support to make the debug object timer optional. Default 3668is timer disabled. This cleans up the debug object output -- the timer 3669data is rarely used. 3670 3671AcpiExec: Multiple ACPI tables are now loaded in the order that they 3672appear on the command line. This can be important when there are 3673interdependencies/references between the tables. 3674 3675iASL/Templates. Add support to generate template files with multiple 3676SSDTs within a single output file. Also added ommand line support to 3677specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 36781223, 1225. 3679 3680 3681---------------------------------------- 368224 November 2015. Summary of changes for version 20151124: 3683 36841) ACPICA kernel-resident subsystem: 3685 3686Fixed a possible regression for a previous update to FADT handling. The 3687FADT no longer has a fixed table ID, causing some issues with code that 3688was hardwired to a specific ID. Lv Zheng. 3689 3690Fixed a problem where the method auto-serialization could interfere with 3691the current SyncLevel. This change makes the auto-serialization support 3692transparent to the SyncLevel support and management. 3693 3694Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3695interface is intended for early access to the namespace during the 3696initial namespace device discovery walk. The _SUB method has been seen to 3697access operation regions in some cases, causing errors because the 3698operation regions are not fully initialized. 3699 3700AML Debugger: Fixed some issues with the terminate/quit/exit commands 3701that can cause faults. Lv Zheng. 3702 3703AML Debugger: Add thread ID support so that single-step mode only applies 3704to the AML Debugger thread. This prevents runtime errors within some 3705kernels. Lv Zheng. 3706 3707Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3708methods that are invoked by this interface are optional, removed warnings 3709emitted for the case where one or more of these methods do not exist. 3710ACPICA BZ 1208, original change by Prarit Bhargava. 3711 3712Made a major pass through the entire ACPICA source code base to 3713standardize formatting that has diverged a bit over time. There are no 3714functional changes, but this will of course cause quite a few code 3715differences from the previous ACPICA release. 3716 3717Example Code and Data Size: These are the sizes for the OS-independent 3718acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3719debug version of the code includes the debug output trace mechanism and 3720has a much larger code and data size. 3721 3722 Current Release: 3723 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3724 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3725 Previous Release: 3726 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3727 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3728 3729 37302) iASL Compiler/Disassembler and Tools: 3731 3732iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3733definition blocks within a single ASL file and the resulting AML file. 3734Support for this type of file was also added to the various tools that 3735use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3736example code below shows two definition blocks within the same file: 3737 3738 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 37390x12345678) 3740 { 3741 } 3742 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3743 { 3744 } 3745 3746iASL: Enhanced typechecking for the Name() operator. All expressions for 3747the value of the named object must be reduced/folded to a single constant 3748at compile time, as per the ACPI specification (the AML definition of 3749Name()). 3750 3751iASL: Fixed some code indentation issues for the -ic and -ia options (C 3752and assembly headers). Now all emitted code correctly begins in column 1. 3753 3754iASL: Added an error message for an attempt to open a Scope() on an 3755object defined in an SSDT. The DSDT is always loaded into the namespace 3756first, so any attempt to open a Scope on an SSDT object will fail at 3757runtime. 3758 3759 3760---------------------------------------- 376130 September 2015. Summary of changes for version 20150930: 3762 37631) ACPICA kernel-resident subsystem: 3764 3765Debugger: Implemented several changes and bug fixes to assist support for 3766the in-kernel version of the AML debugger. Lv Zheng. 3767- Fix the "predefined" command for in-kernel debugger. 3768- Do not enter debug command loop for the help and version commands. 3769- Disallow "execute" command during execution/single-step of a method. 3770 3771Interpreter: Updated runtime typechecking for all operators that have 3772target operands. The operand is resolved and validated that it is legal. 3773For example, the target cannot be a non-data object such as a Device, 3774Mutex, ThermalZone, etc., as per the ACPI specification. 3775 3776Debugger: Fixed the double-mutex user I/O handshake to work when local 3777deadlock detection is enabled. 3778 3779Debugger: limited display of method locals and arguments (LocalX and 3780ArgX) to only those that have actually been initialized. This prevents 3781lines of extraneous output. 3782 3783Updated the definition of the NFIT table to correct the bit polarity of 3784one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3785 3786Example Code and Data Size: These are the sizes for the OS-independent 3787acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3788debug version of the code includes the debug output trace mechanism and 3789has a much larger code and data size. 3790 3791 Current Release: 3792 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3793 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3794 Previous Release: 3795 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3796 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3797 3798 37992) iASL Compiler/Disassembler and Tools: 3800 3801iASL: Improved the compile-time typechecking for operands of many of the 3802ASL operators: 3803 3804-- Added an option to disable compiler operand/operator typechecking (- 3805ot). 3806 3807-- For the following operators, the TermArg operands are now validated 3808when possible to be Integer data objects: BankField, OperationRegion, 3809DataTableRegion, Buffer, and Package. 3810 3811-- Store (Source, Target): Both the source and target operands are 3812resolved and checked that the operands are both legal. For example, 3813neither operand can be a non-data object such as a Device, Mutex, 3814ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3815operator can be used to store an object to any type of target object. 3816 3817-- Store (Source, Target): If the source is a Package object, the target 3818must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3819is a Package, the source must also be a Package. 3820 3821-- Store (Source, Target): A warning is issued if the source and target 3822resolve to the identical named object. 3823 3824-- Store (Source, <method invocation>): An error is generated for the 3825target method invocation, as this construct is not supported by the AML 3826interpreter. 3827 3828-- For all ASL math and logic operators, the target operand must be a 3829data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3830includes the function return value also. 3831 3832-- External declarations are also included in the typechecking where 3833possible. External objects defined using the UnknownObj keyword cannot be 3834typechecked, however. 3835 3836iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3837operator: 3838- Legacy code: Index(PKG1, 3) 3839- New ASL+ code: PKG1[3] 3840This completes the ACPI 6.0 ASL+ support as it was the only operator not 3841supported. 3842 3843iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3844spaces were inadvertently appended to the filename, causing file access 3845and deletion problems on some systems. 3846 3847ASL Test Suite (ASLTS): Updated the master makefile to generate all 3848possible compiler output files when building the test suite -- thus 3849exercising these features of the compiler. These files are automatically 3850deleted when the test suite exits. 3851 3852 3853---------------------------------------- 385418 August 2015. Summary of changes for version 20150818: 3855 38561) ACPICA kernel-resident subsystem: 3857 3858Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3859Zheng. ACPICA BZ 1186. 3860 3861Completed development to ensure that the ACPICA Disassembler and Debugger 3862are fully standalone components of ACPICA. Removed cross-component 3863dependences. Lv Zheng. 3864 3865The max-number-of-AML-loops is now runtime configurable (previously was 3866compile-time only). This is essentially a loop timeout to force-abort 3867infinite AML loops. ACPCIA BZ 1192. 3868 3869Debugger: Cleanup output to dump ACPI names and namepaths without any 3870trailing underscores. Lv Zheng. ACPICA BZ 1135. 3871 3872Removed unnecessary conditional compilations across the Debugger and 3873Disassembler components where entire modules could be left uncompiled. 3874 3875The aapits test is deprecated and has been removed from the ACPICA git 3876tree. The test has never been completed and has not been maintained, thus 3877becoming rather useless. ACPICA BZ 1015, 794. 3878 3879A batch of small changes to close bugzilla and other reports: 3880- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3881- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3882- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3883- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3884Moore. 3885- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3886ACPICA BZ 1184. 3887- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 3888operators. 3889- Debugger: Split debugger initialization/termination interfaces. Lv 3890Zheng. 3891- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 3892identification. 3893- AcpiExec: Add debug message during _REG method phase during table 3894load/init. 3895- AcpiNames: Fix a regression where some output was missing and no longer 3896emitted. 3897- Debugger: General cleanup and simplification. Lv Zheng. 3898- Disassembler: Cleanup use of several global option variables. Lv Zheng. 3899 3900Example Code and Data Size: These are the sizes for the OS-independent 3901acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3902debug version of the code includes the debug output trace mechanism and 3903has a much larger code and data size. 3904 3905 Current Release: 3906 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3907 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3908 Previous Release: 3909 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3910 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3911 3912 39132) iASL Compiler/Disassembler and Tools: 3914 3915AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 3916were not handled properly and caused load errors. Now, properly invoke 3917and use the ACPICA auto-reallocate mechanism for ACPI table data 3918structures. ACPICA BZ 1188 3919 3920AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 3921BZ 1190. 3922 3923AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 3924AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 3925executed during initialization. ACPICA BZ 1187, 1189. 3926 3927iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 3928that corresponds to each disassembled ASL statement, to simplify 3929debugging. ACPICA BZ 1191. 3930 3931Debugger: Add option to the "objects" command to display a summary of the 3932current namespace objects (Object type and count). This is displayed if 3933the command is entered with no arguments. 3934 3935AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 3936 3937 3938---------------------------------------- 393917 July 2015. Summary of changes for version 20150717: 3940 39411) ACPICA kernel-resident subsystem: 3942 3943Improved the partitioning between the Debugger and Disassembler 3944components. This allows the Debugger to be used standalone within kernel 3945code without the Disassembler (which is used for single stepping also). 3946This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 3947 3948Debugger: Implemented a new command to trace the execution of control 3949methods (Trace). This is especially useful for the in-kernel version of 3950the debugger when file I/O may not be available for method trace output. 3951See the ACPICA reference for more information. Lv Zheng. 3952 3953Moved all C library prototypes (used for the local versions of these 3954functions when requested) to a new header, acclib.h 3955Cleaned up the use of non-ANSI C library functions. These functions are 3956implemented locally in ACPICA. Moved all such functions to a common 3957source file, utnonansi.c 3958 3959Debugger: Fixed a problem with the "!!" command (get last command 3960executed) where the debugger could enter an infinite loop and eventually 3961crash. 3962 3963Removed the use of local macros that were used for some of the standard C 3964library functions to automatically cast input parameters. This mostly 3965affected the is* functions where the input parameter is defined to be an 3966int. This required a few modifications to the main ACPICA source code to 3967provide casting for these functions and eliminate possible compiler 3968warnings for these parameters. 3969 3970Across the source code, added additional status/error checking to resolve 3971issues discovered by static source code analysis tools such as Coverity. 3972 3973Example Code and Data Size: These are the sizes for the OS-independent 3974acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3975debug version of the code includes the debug output trace mechanism and 3976has a much larger code and data size. 3977 3978 Current Release: 3979 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 3980 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 3981 Previous Release: 3982 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3983 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3984 3985 39862) iASL Compiler/Disassembler and Tools: 3987 3988iASL: Fixed a regression where the device map file feature no longer 3989worked properly when used in conjunction with the disassembler. It only 3990worked properly with the compiler itself. 3991 3992iASL: Implemented a new warning for method LocalX variables that are set 3993but never used (similar to a C compiler such as gcc). This also applies 3994to ArgX variables that are not defined by the parent method, and are 3995instead (legally) used as local variables. 3996 3997iASL/Preprocessor: Finished the pass-through of line numbers from the 3998preprocessor to the compiler. This ensures that compiler errors/warnings 3999have the correct original line numbers and filenames, regardless of any 4000#include files. 4001 4002iASL/Preprocessor: Fixed a couple of issues with comment handling and the 4003pass-through of comments to the preprocessor output file (which becomes 4004the compiler input file). Also fixed a problem with // comments that 4005appear after a math expression. 4006 4007iASL: Added support for the TCPA server table to the table compiler and 4008template generator. (The client table was already previously supported) 4009 4010iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 4011identify the iASL compiler. 4012 4013Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 4014multiple times. The new names are ACPI_SIGN_NEGATIVE and 4015ACPI_SIGN_POSITIVE. 4016 4017AcpiHelp: Update to expand help messages for the iASL preprocessor 4018directives. 4019 4020 4021---------------------------------------- 402219 June 2015. Summary of changes for version 20150619: 4023 4024Two regressions in version 20150616 have been addressed: 4025 4026Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 4027etc.) This update changes ACPICA to only use the standard headers for 4028functions, or the prototypes for the local versions of the C library 4029functions. Across the source code, this required some additional casts 4030for some Clib invocations for portability. Moved all local prototypes to 4031a new file, acclib.h 4032 4033Fixes several problems with recent changes to the handling of the FACS 4034table that could cause some systems not to boot. 4035 4036 4037---------------------------------------- 403816 June 2015. Summary of changes for version 20150616: 4039 4040 40411) ACPICA kernel-resident subsystem: 4042 4043Across the entire ACPICA source code base, the various macros for the C 4044library functions (such as ACPI_STRLEN, etc.) have been removed and 4045replaced by the standard C library names (strlen, etc.) The original 4046purpose for these macros is no longer applicable. This simplification 4047reduces the number of macros used in the ACPICA source code 4048significantly, improving readability and maintainability. 4049 4050Implemented support for a new ACPI table, the OSDT. This table, the 4051"override" SDT, can be loaded directly by the host OS at boot time. It 4052enables the replacement of existing namespace objects that were installed 4053via the DSDT and/or SSDTs. The primary purpose for this is to replace 4054buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 4055for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 4056Moore. 4057 4058Added support for systems with (improperly) two FACS tables -- a "32-bit" 4059table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 4060X field). This change will support both automatically. There continues to 4061be systems found with this issue. This support requires a change to the 4062AcpiSetFirmwareWakingVector interface. Also, a public global variable has 4063been added to allow the host to select which FACS is desired 4064(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 4065details Lv Zheng. 4066 4067Added a new feature to allow for systems that do not contain an FACS. 4068Although this is already supported on hardware-reduced platforms, the 4069feature has been extended for all platforms. The reasoning is that we do 4070not want to abort the entire ACPICA initialization just because the 4071system is seriously buggy and has no FACS. 4072 4073Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 4074not correctly transcribed from the ACPI specification in ACPICA version 407520150515. 4076 4077Implemented support for the _CLS object in the AcpiGetObjectInfo external 4078interface. 4079 4080Updated the definitions of the TCPA and TPM2 ACPI tables to the more 4081recent TCG ACPI Specification, December 14, 2014. Table disassembler and 4082compiler also updated. Note: The TCPA "server" table is not supported by 4083the disassembler/table-compiler at this time. 4084 4085ACPI 6.0: Added definitions for the new GIC version field in the MADT. 4086 4087Example Code and Data Size: These are the sizes for the OS-independent 4088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4089debug version of the code includes the debug output trace mechanism and 4090has a much larger code and data size. 4091 4092 Current Release: 4093 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4094 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4095 Previous Release: 4096 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4097 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4098 4099 41002) iASL Compiler/Disassembler and Tools: 4101 4102Disassembler: Fixed a problem with the new symbolic operator disassembler 4103where incorrect ASL code could be emitted in some cases for the "non- 4104commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 4105ShiftRight. The actual problem cases seem to be rather unusual in common 4106ASL code, however. David Box. 4107 4108Modified the linux version of acpidump to obtain ACPI tables from not 4109just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 4110Zheng. 4111 4112iASL: Fixed a problem where the user preprocessor output file (.i) 4113contained extra data that was not expected. The compiler was using this 4114file as a temporary file and passed through #line directives in order to 4115keep compiler error messages in sync with the input file and line number 4116across multiple include files. The (.i) is no longer a temporary file as 4117the compiler uses a new, different file for the original purpose. 4118 4119iASL: Fixed a problem where comments within the original ASL source code 4120file were not passed through to the preprocessor output file, nor any 4121listing files. 4122 4123iASL: Fixed some issues for the handling of the "#include" preprocessor 4124directive and the similar (but not the same) "Include" ASL operator. 4125 4126iASL: Add support for the new OSDT in both the disassembler and compiler. 4127 4128iASL: Fixed a problem with the constant folding support where a Buffer 4129object could be incorrectly generated (incorrectly formed) during a 4130conversion to a Store() operator. 4131 4132AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 4133description text for the _REV predefined name. _REV now permanently 4134returns 2, as per the ACPI 6.0 specification. 4135 4136Debugger: Enhanced the output of the Debug ASL object for references 4137produced by the Index operator. For Buffers and strings, only output the 4138actual byte pointed to by the index. For packages, only print the single 4139package element decoded by the index. Previously, the entire 4140buffer/string/package was emitted. 4141 4142iASL/Table-compiler: Fixed a regression where the "generic" data types 4143were no longer recognized, causing errors. 4144 4145 4146---------------------------------------- 414715 May 2015. Summary of changes for version 20150515: 4148 4149This release implements most of ACPI 6.0 as described below. 4150 41511) ACPICA kernel-resident subsystem: 4152 4153Implemented runtime argument checking and return value checking for all 4154new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 4155_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 4156 4157Example Code and Data Size: These are the sizes for the OS-independent 4158acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4159debug version of the code includes the debug output trace mechanism and 4160has a much larger code and data size. 4161 4162 Current Release: 4163 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4164 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4165 Previous Release: 4166 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4167 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4168 4169 41702) iASL Compiler/Disassembler and Tools: 4171 4172iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 4173names (argument count validation and return value typechecking.) 4174 4175iASL disassembler and table compiler: implemented support for all new 4176ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 4177 4178iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 4179tables: FADT, MADT. 4180 4181iASL preprocessor: Added a new directive to enable inclusion of binary 4182blobs into ASL code. The new directive is #includebuffer. It takes a 4183binary file as input and emits a named ascii buffer object into the ASL 4184code. 4185 4186AcpiHelp: Added support for all new ACPI 6.0 predefined names. 4187 4188AcpiHelp: Added a new option, -d, to display all iASL preprocessor 4189directives. 4190 4191AcpiHelp: Added a new option, -t, to display all known/supported ACPI 4192tables. 4193 4194 4195---------------------------------------- 419610 April 2015. Summary of changes for version 20150410: 4197 4198Reverted a change introduced in version 20150408 that caused 4199a regression in the disassembler where incorrect operator 4200symbols could be emitted. 4201 4202 4203---------------------------------------- 420408 April 2015. Summary of changes for version 20150408: 4205 4206 42071) ACPICA kernel-resident subsystem: 4208 4209Permanently set the return value for the _REV predefined name. It now 4210returns 2 (was 5). This matches other ACPI implementations. _REV will be 4211deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 4212for ACPI 2.0 and later. It should never be used to differentiate or 4213identify operating systems. 4214 4215Added the "Windows 2015" string to the _OSI support. ACPICA will now 4216return TRUE to a query with this string. 4217 4218Fixed several issues with the local version of the printf function. 4219 4220Added the C99 compiler option (-std=c99) to the Unix makefiles. 4221 4222 Current Release: 4223 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 4224 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 4225 Previous Release: 4226 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4227 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4228 4229 42302) iASL Compiler/Disassembler and Tools: 4231 4232iASL: Implemented an enhancement to the constant folding feature to 4233transform the parse tree to a simple Store operation whenever possible: 4234 Add (2, 3, X) ==> is converted to: Store (5, X) 4235 X = 2 + 3 ==> is converted to: Store (5, X) 4236 4237Updated support for the SLIC table (Software Licensing Description Table) 4238in both the Data Table compiler and the disassembler. The SLIC table 4239support now conforms to "Microsoft Software Licensing Tables (SLIC and 4240MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 4241following the ACPI header is now defined to be "Proprietary Data", and as 4242such, can only be entered or displayed as a hex data block. 4243 4244Implemented full support for the MSDM table as described in the document 4245above. Note: The format of MSDM is similar to SLIC. Any MSDM data 4246following the ACPI header is defined to be "Proprietary Data", and can 4247only be entered or displayed as a hex data block. 4248 4249Implemented the -Pn option for the iASL Table Compiler (was only 4250implemented for the ASL compiler). This option disables the iASL 4251preprocessor. 4252 4253Disassembler: For disassembly of Data Tables, added a comment field 4254around the Ascii equivalent data that is emitted as part of the "Raw 4255Table Data" block. This prevents the iASL Preprocessor from possible 4256confusion if/when the table is compiled. 4257 4258Disassembler: Added an option (-df) to force the disassembler to assume 4259that the table being disassembled contains valid AML. This feature is 4260useful for disassembling AML files that contain ACPI signatures other 4261than DSDT or SSDT (such as OEMx or other signatures). 4262 4263Changes for the EFI version of the tools: 42641) Fixed a build error/issue 42652) Fixed a cast warning 4266 4267iASL: Fixed a path issue with the __FILE__ operator by making the 4268directory prefix optional within the internal SplitInputFilename 4269function. 4270 4271Debugger: Removed some unused global variables. 4272 4273Tests: Updated the makefile for proper generation of the AAPITS suite. 4274 4275 4276---------------------------------------- 427704 February 2015. Summary of changes for version 20150204: 4278 4279ACPICA kernel-resident subsystem: 4280 4281Updated all ACPICA copyrights and signons to 2014. Added the 2014 4282copyright to all module headers and signons, including the standard Linux 4283header. This affects virtually every file in the ACPICA core subsystem, 4284iASL compiler, all ACPICA utilities, and the test suites. 4285 4286Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 4287A raw gpe handling mechanism was created to allow better handling of GPE 4288storms that aren't easily managed by the normal handler. The raw handler 4289allows disabling/renabling of the GPE so that interrupt storms can be 4290avoided in cases where events cannot be timely serviced. In this 4291scenario, handlers should use the AcpiSetGpe() API to disable/enable the 4292GPE. This API will leave the reference counts undisturbed, thereby 4293preventing unintentional clearing of the GPE when the intent in only to 4294temporarily disable it. Raw handlers allow enabling and disabling of a 4295GPE by removing GPE register locking. As such, raw handlers much provide 4296their own locks while using GPE API's to protect access to GPE data 4297structures. 4298Lv Zheng 4299 4300Events: Always modify GPE registers under the GPE lock. 4301Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 4302values. Reported as bug by joe.liu@apple.com. 4303 4304Unix makefiles: Separate option to disable optimizations and 4305_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 4306NOOPT disable option and creates a separate flag (NOFORTIFY) for this 4307purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 4308errors when building ACPICA. This allows disabling the option without 4309also having to disable optimazations. 4310David Box 4311 4312 Current Release: 4313 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4314 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 4315 4316-- 4317-------------------------------------- 431807 November 2014. Summary of changes for version 20141107: 4319 4320This release is available at https://acpica.org/downloads 4321 4322This release introduces and implements language extensions to ASL that 4323provide support for symbolic ("C-style") operators and expressions. These 4324language extensions are known collectively as ASL+. 4325 4326 43271) iASL Compiler/Disassembler and Tools: 4328 4329Disassembler: Fixed a problem with disassembly of the UartSerialBus 4330macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 4331Box. 4332 4333Disassembler: Fixed the Unicode macro support to add escape sequences. 4334All non-printable ASCII values are emitted as escape sequences, as well 4335as the standard escapes for quote and backslash. Ensures that the 4336disassembled macro can be correctly recompiled. 4337 4338iASL: Added Printf/Fprintf macros for formatted output. These macros are 4339translated to existing AML Concatenate and Store operations. Printf 4340writes to the ASL Debug object. Fprintf allows the specification of an 4341ASL name as the target. Only a single format specifier is required, %o, 4342since the AML interpreter dynamically converts objects to the required 4343type. David E. Box. 4344 4345 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4346 (Concatenate (Concatenate (Concatenate ("", Arg0), 4347 ": Unexpected value for "), Arg1), ", "), Arg2), 4348 " at line "), Arg3), Debug) 4349 4350 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 4351 Arg0, Arg1, Arg2, Arg3) 4352 4353 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4354 ("", Arg1), ": "), Arg0), " Successful"), STR1) 4355 4356 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 4357 4358iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 4359ASL parse tree before the AML code is generated. This allows blocks of 4360ASL code to be removed in order to help locate and identify problem 4361devices and/or code. David E. Box. 4362 4363AcpiExec: Added support (-fi) for an optional namespace object 4364initialization file. This file specifies initial values for namespace 4365objects as necessary for debugging and testing different ASL code paths 4366that may be taken as a result of BIOS options. 4367 4368 43692) Overview of symbolic operator support for ASL (ASL+) 4370------------------------------------------------------- 4371 4372As an extension to the ASL language, iASL implements support for symbolic 4373(C-style) operators for math and logical expressions. This can greatly 4374simplify ASL code as well as improve both readability and 4375maintainability. These language extensions can exist concurrently with 4376all legacy ASL code and expressions. 4377 4378The symbolic extensions are 100% compatible with existing AML 4379interpreters, since no new AML opcodes are created. To implement the 4380extensions, the iASL compiler transforms the symbolic expressions into 4381the legacy ASL/AML equivalents at compile time. 4382 4383Full symbolic expressions are supported, along with the standard C 4384precedence and associativity rules. 4385 4386Full disassembler support for the symbolic expressions is provided, and 4387creates an automatic migration path for existing ASL code to ASL+ code 4388via the disassembly process. By default, the disassembler now emits ASL+ 4389code with symbolic expressions. An option (-dl) is provided to force the 4390disassembler to emit legacy ASL code if desired. 4391 4392Below is the complete list of the currently supported symbolic operators 4393with examples. See the iASL User Guide for additional information. 4394 4395 4396ASL+ Syntax Legacy ASL Equivalent 4397----------- --------------------- 4398 4399 // Math operators 4400 4401Z = X + Y Add (X, Y, Z) 4402Z = X - Y Subtract (X, Y, Z) 4403Z = X * Y Multiply (X, Y, Z) 4404Z = X / Y Divide (X, Y, , Z) 4405Z = X % Y Mod (X, Y, Z) 4406Z = X << Y ShiftLeft (X, Y, Z) 4407Z = X >> Y ShiftRight (X, Y, Z) 4408Z = X & Y And (X, Y, Z) 4409Z = X | Y Or (X, Y, Z) 4410Z = X ^ Y Xor (X, Y, Z) 4411Z = ~X Not (X, Z) 4412X++ Increment (X) 4413X-- Decrement (X) 4414 4415 // Logical operators 4416 4417(X == Y) LEqual (X, Y) 4418(X != Y) LNotEqual (X, Y) 4419(X < Y) LLess (X, Y) 4420(X > Y) LGreater (X, Y) 4421(X <= Y) LLessEqual (X, Y) 4422(X >= Y) LGreaterEqual (X, Y) 4423(X && Y) LAnd (X, Y) 4424(X || Y) LOr (X, Y) 4425(!X) LNot (X) 4426 4427 // Assignment and compound assignment operations 4428 4429X = Y Store (Y, X) 4430X += Y Add (X, Y, X) 4431X -= Y Subtract (X, Y, X) 4432X *= Y Multiply (X, Y, X) 4433X /= Y Divide (X, Y, , X) 4434X %= Y Mod (X, Y, X) 4435X <<= Y ShiftLeft (X, Y, X) 4436X >>= Y ShiftRight (X, Y, X) 4437X &= Y And (X, Y, X) 4438X |= Y Or (X, Y, X) 4439X ^= Y Xor (X, Y, X) 4440 4441 44423) ASL+ Examples: 4443----------------- 4444 4445Legacy ASL: 4446 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4447 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 44480x03FB), 4449 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4450 { 4451 And (MEMB, 0xFFFFFFF0, SRMB) 4452 Store (MEMB, Local2) 4453 Store (PDBM, Local1) 4454 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4455 Store (SRMB, MEMB) 4456 Or (PDBM, 0x02, PDBM) 4457 } 4458 4459ASL+ version: 4460 If (((R510 & 0x03FB) == 0x02E0) || 4461 ((R520 & 0x03FB) == 0x02E0) || 4462 ((R530 & 0x03FB) == 0x02E0) || 4463 ((R540 & 0x03FB) == 0x02E0)) 4464 { 4465 SRMB = (MEMB & 0xFFFFFFF0) 4466 Local2 = MEMB 4467 Local1 = PDBM 4468 PDBM &= 0xFFFFFFFFFFFFFFF9 4469 MEMB = SRMB 4470 PDBM |= 0x02 4471 } 4472 4473Legacy ASL: 4474 Store (0x1234, Local1) 4475 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4476 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4477 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4478 Store (Index (PKG1, 0x03), Local6) 4479 Store (Add (Local3, Local2), Debug) 4480 Add (Local1, 0x0F, Local2) 4481 Add (Local1, Multiply (Local2, Local3), Local2) 4482 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4483 4484ASL+ version: 4485 Local1 = 0x1234 4486 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4487 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4488 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4489 Local6 = Index (PKG1, 0x03) 4490 Debug = (Local3 + Local2) 4491 Local2 = (Local1 + 0x0F) 4492 Local2 = (Local1 + (Local2 * Local3)) 4493 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4494 4495 4496---------------------------------------- 449726 September 2014. Summary of changes for version 20140926: 4498 44991) ACPICA kernel-resident subsystem: 4500 4501Updated the GPIO operation region handler interface (GeneralPurposeIo). 4502In order to support GPIO Connection objects with multiple pins, along 4503with the related Field objects, the following changes to the interface 4504have been made: The Address is now defined to be the offset in bits of 4505the field unit from the previous invocation of a Connection. It can be 4506viewed as a "Pin Number Index" into the connection resource descriptor. 4507The BitWidth is the exact bit width of the field. It is usually one bit, 4508but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4509additional information and examples. 4510 4511GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4512corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4513by the firmware), so that they cannot fire until they are enabled via 4514AcpiUpdateAllGpes. Rafael J. Wysocki. 4515 4516Added a new return flag for the Event/GPE status interfaces -- 4517AcpiGetEventStatus and AcpiGetGpeStatus. The new 4518ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4519GPE currently has a handler associated with it, and can thus actually 4520affect the system. Lv Zheng. 4521 4522Example Code and Data Size: These are the sizes for the OS-independent 4523acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4524debug version of the code includes the debug output trace mechanism and 4525has a much larger code and data size. 4526 4527 Current Release: 4528 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4529 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4530 Previous Release: 4531 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4532 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4533 45342) iASL Compiler/Disassembler and Tools: 4535 4536iASL: Fixed a memory allocation/free regression introduced in 20140828 4537that could cause the compiler to crash. This was introduced inadvertently 4538during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 45391113. 4540 4541iASL: Removed two error messages that have been found to create false 4542positives, until they can be fixed and fully validated (ACPICA BZ 1112): 45431) Illegal forward reference within a method 45442) Illegal reference across two methods 4545 4546iASL: Implemented a new option (-lm) to create a hardware mapping file 4547that summarizes all GPIO, I2C, SPI, and UART connections. This option 4548works for both the compiler and disassembler. See the iASL compiler user 4549guide for additional information and examples (section 6.4.6). 4550 4551AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4552version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4553a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4554 4555AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4556unless STDIN is actually a terminal. Assists with batch-mode processing. 4557ACPICA BZ 1114. 4558 4559Disassembler/AcpiHelp: Added another large group of recognized _HID 4560values. 4561 4562 4563---------------------------------------- 456428 August 2014. Summary of changes for version 20140828: 4565 45661) ACPICA kernel-resident subsystem: 4567 4568Fixed a problem related to the internal use of the Timer() operator where 4569a 64-bit divide could cause an attempted link to a double-precision math 4570library. This divide is not actually necessary, so the code was 4571restructured to eliminate it. Lv Zheng. 4572 4573ACPI 5.1: Added support for the runtime validation of the _DSD package 4574(similar to the iASL support). 4575 4576ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4577SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 4578 4579Example Code and Data Size: These are the sizes for the OS-independent 4580acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4581debug version of the code includes the debug output trace mechanism and 4582has a much larger code and data size. 4583 4584 Current Release: 4585 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4586 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4587 Previous Release: 4588 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4589 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4590 45912) iASL Compiler/Disassembler and Tools: 4592 4593AcpiExec: Fixed a problem on unix systems where the original terminal 4594state was not always properly restored upon exit. Seen when using the -v 4595option. ACPICA BZ 1104. 4596 4597iASL: Fixed a problem with the validation of the ranges/length within the 4598Memory24 resource descriptor. There was a boundary condition when the 4599range was equal to the (length -1) caused by the fact that these values 4600are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4601 4602Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4603polarity 4604flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4605is 4606now supported properly. 4607 4608ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4609in the disassembler, data table compiler, and table template generator. 4610 4611iASL: Added a requirement for Device() objects that one of either a _HID 4612or _ADR must exist within the scope of a Device, as per the ACPI 4613specification. Remove a similar requirement that was incorrectly in place 4614for the _DSD object. 4615 4616iASL: Added error detection for illegal named references within control 4617methods that would cause runtime failures. Now trapped as errors are: 1) 4618References to objects within a non-parent control method. 2) Forward 4619references (within a method) -- for control methods, AML interpreters use 4620a one-pass parse of control methods. ACPICA BZ 1008. 4621 4622iASL: Added error checking for dependencies related to the _PSx power 4623methods. ACPICA BZ 1029. 46241) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4625_PS3. 46262) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4627scope. 4628 4629iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4630deploying the existing object and string caches and adding new caches for 4631the table compiler. 4632 4633iASL: Split the huge parser source file into multiple subfiles to improve 4634manageability. Generation now requires the M4 macro preprocessor, which 4635is part of the Bison distribution on both unix and windows platforms. 4636 4637AcpiSrc: Fixed and removed all extraneous warnings generated during 4638entire ACPICA source code scan and/or conversion. 4639 4640 4641---------------------------------------- 4642 464324 July 2014. Summary of changes for version 20140724: 4644 4645The ACPI 5.1 specification has been released and is available at: 4646http://uefi.org/specs/access 4647 4648 46490) ACPI 5.1 support in ACPICA: 4650 4651ACPI 5.1 is fully supported in ACPICA as of this release. 4652 4653New predefined names. Support includes iASL and runtime ACPICA 4654validation. 4655 _CCA (Cache Coherency Attribute). 4656 _DSD (Device-Specific Data). David Box. 4657 4658Modifications to existing ACPI tables. Support includes headers, iASL 4659Data Table compiler, disassembler, and the template generator. 4660 FADT - New fields and flags. Graeme Gregory. 4661 GTDT - One new subtable and new fields. Tomasz Nowicki. 4662 MADT - Two new subtables. Tomasz Nowicki. 4663 PCCT - One new subtable. 4664 4665Miscellaneous. 4666 New notification type for System Resource Affinity change events. 4667 4668 46691) ACPICA kernel-resident subsystem: 4670 4671Fixed a regression introduced in 20140627 where a fault can happen during 4672the deletion of Alias AML namespace objects. The problem affected both 4673the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4674 4675Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4676simple mechanism to enable wake GPEs that have no associated handler or 4677control method. Rafael Wysocki. 4678 4679Updated the AcpiEnableGpe interface to disallow the enable if there is no 4680handler or control method associated with the particular GPE. This will 4681help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4682 4683Updated GPE handling and dispatch by disabling the GPE before clearing 4684the status bit for edge-triggered GPEs. Lv Zheng. 4685 4686Added Timer() support to the AML Debug object. The current timer value is 4687now displayed with each invocation of (Store to) the debug object to 4688enable simple generation of execution times for AML code (method 4689execution for example.) ACPICA BZ 1093. 4690 4691Example Code and Data Size: These are the sizes for the OS-independent 4692acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4693debug version of the code includes the debug output trace mechanism and 4694has a much larger code and data size. 4695 4696 Current Release: 4697 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4698 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4699 Previous Release: 4700 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4701 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4702 4703 47042) iASL Compiler/Disassembler and Tools: 4705 4706Fixed an issue with the recently added local printf implementation, 4707concerning width/precision specifiers that could cause incorrect output. 4708Lv Zheng. ACPICA BZ 1094. 4709 4710Disassembler: Added support to detect buffers that contain UUIDs and 4711disassemble them to an invocation of the ToUUID operator. Also emit 4712commented descriptions of known ACPI-related UUIDs. 4713 4714AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4715-u. Adds three new files. 4716 4717iASL: Update table compiler and disassembler for DMAR table changes that 4718were introduced in September 2013. With assistance by David Woodhouse. 4719 4720---------------------------------------- 472127 June 2014. Summary of changes for version 20140627: 4722 47231) ACPICA kernel-resident subsystem: 4724 4725Formatted Output: Implemented local versions of standard formatted output 4726utilities such as printf, etc. Over time, it has been discovered that 4727there are in fact many portability issues with printf, and the addition 4728of this feature will fix/prevent these issues once and for all. Some 4729known issues are summarized below: 4730 47311) Output of 64-bit values is not portable. For example, UINT64 is %ull 4732for the Linux kernel and is %uI64 for some MSVC versions. 47332) Invoking printf consistently in a manner that is portable across both 473432-bit and 64-bit platforms is difficult at best in many situations. 47353) The output format for pointers varies from system to system (leading 4736zeros especially), and leads to inconsistent output from ACPICA across 4737platforms. 47384) Certain platform-specific printf formats may conflict with ACPICA use. 47395) If there is no local C library available, ACPICA now has local support 4740for printf. 4741 4742-- To address these printf issues in a complete manner, ACPICA now 4743directly implements a small subset of printf format specifiers, only 4744those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4745 4746Implemented support for ACPICA generation within the EFI environment. 4747Initially, the AcpiDump utility is supported in the UEFI shell 4748environment. Lv Zheng. 4749 4750Added a new external interface, AcpiLogError, to improve ACPICA 4751portability. This allows the host to redirect error messages from the 4752ACPICA utilities. Lv Zheng. 4753 4754Added and deployed new OSL file I/O interfaces to improve ACPICA 4755portability: 4756 AcpiOsOpenFile 4757 AcpiOsCloseFile 4758 AcpiOsReadFile 4759 AcpiOsWriteFile 4760 AcpiOsGetFileOffset 4761 AcpiOsSetFileOffset 4762There are C library implementations of these functions in the new file 4763service_layers/oslibcfs.c -- however, the functions can be implemented by 4764the local host in any way necessary. Lv Zheng. 4765 4766Implemented a mechanism to disable/enable ACPI table checksum validation 4767at runtime. This can be useful when loading tables very early during OS 4768initialization when it may not be possible to map the entire table in 4769order to compute the checksum. Lv Zheng. 4770 4771Fixed a buffer allocation issue for the Generic Serial Bus support. 4772Originally, a fixed buffer length was used. This change allows for 4773variable-length buffers based upon the protocol indicated by the field 4774access attributes. Reported by Lan Tianyu. Lv Zheng. 4775 4776Fixed a problem where an object detached from a namespace node was not 4777properly terminated/cleared and could cause a circular list problem if 4778reattached. ACPICA BZ 1063. David Box. 4779 4780Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4781 4782Fixed a possible memory leak in an error return path within the function 4783AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4784 4785Example Code and Data Size: These are the sizes for the OS-independent 4786acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4787debug version of the code includes the debug output trace mechanism and 4788has a much larger code and data size. 4789 4790 Current Release: 4791 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4792 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4793 Previous Release: 4794 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4795 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4796 4797 47982) iASL Compiler/Disassembler and Tools: 4799 4800Disassembler: Add dump of ASCII equivalent text within a comment at the 4801end of each line of the output for the Buffer() ASL operator. 4802 4803AcpiDump: Miscellaneous changes: 4804 Fixed repetitive table dump in -n mode. 4805 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4806the ACPI 2.0 GUID fails. 4807 4808iASL: Fixed a problem where the compiler could fault if incorrectly given 4809an acpidump output file as input. ACPICA BZ 1088. David Box. 4810 4811AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4812they are invoked without any arguments. 4813 4814Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 48151086. Colin Ian King. 4816 4817Disassembler: Cleaned up a block of code that extracts a parent Op 4818object. Added a comment that explains that the parent is guaranteed to be 4819valid in this case. ACPICA BZ 1069. 4820 4821 4822---------------------------------------- 482324 April 2014. Summary of changes for version 20140424: 4824 48251) ACPICA kernel-resident subsystem: 4826 4827Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4828Some of these tables are known to contain a trailing NULL entry. Lv 4829Zheng. 4830 4831Removed an extraneous error message for the case where there are a large 4832number of system GPEs (> 124). This was the "32-bit FADT register is too 4833long to convert to GAS struct" message, which is irrelevant for GPEs 4834since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4835(limited capacity) GAS bit length. Also, several changes to ensure proper 4836support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4837internally. 4838 4839Implemented and deployed additional configuration support for the public 4840ACPICA external interfaces. Entire classes of interfaces can now be 4841easily modified or configured out, replaced by stubbed inline functions 4842by default. Lv Zheng. 4843 4844Moved all public ACPICA runtime configuration globals to the public 4845ACPICA external interface file for convenience. Also, removed some 4846obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4847 4848Documentation: Added a new section to the ACPICA reference describing the 4849maximum number of GPEs that can be supported by the FADT-defined GPEs in 4850block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4851reference. 4852 4853Example Code and Data Size: These are the sizes for the OS-independent 4854acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4855debug version of the code includes the debug output trace mechanism and 4856has a much larger code and data size. 4857 4858 Current Release: 4859 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4860 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4861 Previous Release: 4862 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4863 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4864 4865 48662) iASL Compiler/Disassembler and Tools: 4867 4868iASL and disassembler: Add full support for the LPIT table (Low Power 4869Idle Table). Includes support in the disassembler, data table compiler, 4870and template generator. 4871 4872AcpiDump utility: 48731) Add option to force the use of the RSDT (over the XSDT). 48742) Improve validation of the RSDP signature (use 8 chars instead of 4). 4875 4876iASL: Add check for predefined packages that are too large. For 4877predefined names that contain subpackages, check if each subpackage is 4878too large. (Check for too small already exists.) 4879 4880Debugger: Updated the GPE command (which simulates a GPE by executing the 4881GPE code paths in ACPICA). The GPE device is now optional, and defaults 4882to the GPE 0/1 FADT-defined blocks. 4883 4884Unix application OSL: Update line-editing support. Add additional error 4885checking and take care not to reset terminal attributes on exit if they 4886were never set. This should help guarantee that the terminal is always 4887left in the previous state on program exit. 4888 4889 4890---------------------------------------- 489125 March 2014. Summary of changes for version 20140325: 4892 48931) ACPICA kernel-resident subsystem: 4894 4895Updated the auto-serialize feature for control methods. This feature 4896automatically serializes all methods that create named objects in order 4897to prevent runtime errors. The update adds support to ignore the 4898currently executing AML SyncLevel when invoking such a method, in order 4899to prevent disruption of any existing SyncLevel priorities that may exist 4900in the AML code. Although the use of SyncLevels is relatively rare, this 4901change fixes a regression where an AE_AML_MUTEX_ORDER exception can 4902appear on some machines starting with the 20140214 release. 4903 4904Added a new external interface to allow the host to install ACPI tables 4905very early, before the namespace is even created. AcpiInstallTable gives 4906the host additional flexibility for ACPI table management. Tables can be 4907installed directly by the host as if they had originally appeared in the 4908XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 4909(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 4910with additional internal restructuring and cleanup. See the ACPICA 4911Reference for interface details. Lv Zheng. 4912 4913Added validation of the checksum for all incoming dynamically loaded 4914tables (via external interfaces or via AML Load/LoadTable operators). Lv 4915Zheng. 4916 4917Updated the use of the AcpiOsWaitEventsComplete interface during Notify 4918and GPE handler removal. Restructured calls to eliminate possible race 4919conditions. Lv Zheng. 4920 4921Added a warning for the use/execution of the ASL/AML Unload (table) 4922operator. This will help detect and identify machines that use this 4923operator if and when it is ever used. This operator has never been seen 4924in the field and the usage model and possible side-effects of the drastic 4925runtime action of a full table removal are unknown. 4926 4927Reverted the use of #pragma push/pop which was introduced in the 20140214 4928release. It appears that push and pop are not implemented by enough 4929compilers to make the use of this feature feasible for ACPICA at this 4930time. However, these operators may be deployed in a future ACPICA 4931release. 4932 4933Added the missing EXPORT_SYMBOL macros for the install and remove SCI 4934handler interfaces. 4935 4936Source code generation: 49371) Disabled the use of the "strchr" macro for the gcc-specific 4938generation. For some versions of gcc, this macro can periodically expose 4939a compiler bug which in turn causes compile-time error(s). 49402) Added support for PPC64 compilation. Colin Ian King. 4941 4942Example Code and Data Size: These are the sizes for the OS-independent 4943acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4944debug version of the code includes the debug output trace mechanism and 4945has a much larger code and data size. 4946 4947 Current Release: 4948 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4949 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4950 Previous Release: 4951 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 4952 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 4953 4954 49552) iASL Compiler/Disassembler and Tools: 4956 4957Disassembler: Added several new features to improve the readability of 4958the resulting ASL code. Extra information is emitted within comment 4959fields in the ASL code: 49601) Known _HID/_CID values are decoded to descriptive text. 49612) Standard values for the Notify() operator are decoded to descriptive 4962text. 49633) Target operands are expanded to full pathnames (in a comment) when 4964possible. 4965 4966Disassembler: Miscellaneous updates for extern() handling: 49671) Abort compiler if file specified by -fe option does not exist. 49682) Silence unnecessary warnings about argument count mismatches. 49693) Update warning messages concerning unresolved method externals. 49704) Emit "UnknownObj" keyword for externals whose type cannot be 4971determined. 4972 4973AcpiHelp utility: 49741) Added the -a option to display both the ASL syntax and the AML 4975encoding for an input ASL operator. This effectively displays all known 4976information about an ASL operator with one AcpiHelp invocation. 49772) Added substring match support (similar to a wildcard) for the -i 4978(_HID/PNP IDs) option. 4979 4980iASL/Disassembler: Since this tool does not yet support execution on big- 4981endian machines, added detection of endianness and an error message if 4982execution is attempted on big-endian. Support for big-endian within iASL 4983is a feature that is on the ACPICA to-be-done list. 4984 4985AcpiBin utility: 49861) Remove option to extract binary files from an acpidump; this function 4987is made obsolete by the AcpiXtract utility. 49882) General cleanup of open files and allocated buffers. 4989 4990 4991---------------------------------------- 499214 February 2014. Summary of changes for version 20140214: 4993 49941) ACPICA kernel-resident subsystem: 4995 4996Implemented a new mechanism to proactively prevent problems with ill- 4997behaved reentrant control methods that create named ACPI objects. This 4998behavior is illegal as per the ACPI specification, but is nonetheless 4999frequently seen in the field. Previously, this could lead to an 5000AE_ALREADY_EXISTS exception if the method was actually entered by more 5001than one thread. This new mechanism detects such methods at table load 5002time and marks them "serialized" to prevent reentrancy. A new global 5003option, AcpiGbl_AutoSerializeMethods, has been added to disable this 5004feature if desired. This mechanism and global option obsoletes and 5005supersedes the previous AcpiGbl_SerializeAllMethods option. 5006 5007Added the "Windows 2013" string to the _OSI support. ACPICA will now 5008respond TRUE to _OSI queries with this string. It is the stated policy of 5009ACPICA to add new strings to the _OSI support as soon as possible after 5010they are defined. See the full ACPICA _OSI policy which has been added to 5011the utilities/utosi.c file. 5012 5013Hardened/updated the _PRT return value auto-repair code: 50141) Do not abort the repair on a single subpackage failure, continue to 5015check all subpackages. 50162) Add check for the minimum subpackage length (4). 50173) Properly handle extraneous NULL package elements. 5018 5019Added support to avoid the possibility of infinite loops when traversing 5020object linked lists. Never allow an infinite loop, even in the face of 5021corrupted object lists. 5022 5023ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 5024pack(pop) directives to ensure that the ACPICA headers are independent of 5025compiler settings or other host headers. 5026 5027Example Code and Data Size: These are the sizes for the OS-independent 5028acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5029debug version of the code includes the debug output trace mechanism and 5030has a much larger code and data size. 5031 5032 Current Release: 5033 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5034 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5035 Previous Release: 5036 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5037 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5038 5039 50402) iASL Compiler/Disassembler and Tools: 5041 5042iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 5043first reserved field was incorrectly forced to have a value of zero. This 5044change correctly forces the field to have a value of one. ACPICA BZ 1081. 5045 5046Debugger: Added missing support for the "Extra" and "Data" subobjects 5047when displaying object data. 5048 5049Debugger: Added support to display entire object linked lists when 5050displaying object data. 5051 5052iASL: Removed the obsolete -g option to obtain ACPI tables from the 5053Windows registry. This feature has been superseded by the acpidump 5054utility. 5055 5056 5057---------------------------------------- 505814 January 2014. Summary of changes for version 20140114: 5059 50601) ACPICA kernel-resident subsystem: 5061 5062Updated all ACPICA copyrights and signons to 2014. Added the 2014 5063copyright to all module headers and signons, including the standard Linux 5064header. This affects virtually every file in the ACPICA core subsystem, 5065iASL compiler, all ACPICA utilities, and the test suites. 5066 5067Improved parameter validation for AcpiInstallGpeBlock. Added the 5068following checks: 50691) The incoming device handle refers to type ACPI_TYPE_DEVICE. 50702) There is not already a GPE block attached to the device. 5071Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 5072device. 5073 5074Correctly support "references" in the ACPI_OBJECT. This change fixes the 5075support to allow references (namespace nodes) to be passed as arguments 5076to control methods via the evaluate object interface. This is probably 5077most useful for testing purposes, however. 5078 5079Improved support for 32/64 bit physical addresses in printf()-like 5080output. This change improves the support for physical addresses in printf 5081debug statements and other output on both 32-bit and 64-bit hosts. It 5082consistently outputs the appropriate number of bytes for each host. The 5083%p specifier is unsatisfactory since it does not emit uniform output on 5084all hosts/clib implementations (on some, leading zeros are not supported, 5085leading to difficult-to-read output). 5086 5087Example Code and Data Size: These are the sizes for the OS-independent 5088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5089debug version of the code includes the debug output trace mechanism and 5090has a much larger code and data size. 5091 5092 Current Release: 5093 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5094 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5095 Previous Release: 5096 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5097 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5098 5099 51002) iASL Compiler/Disassembler and Tools: 5101 5102iASL: Fix a possible fault when using the Connection() operator. Fixes a 5103problem if the parent Field definition for the Connection operator refers 5104to an operation region that does not exist. ACPICA BZ 1064. 5105 5106AcpiExec: Load of local test tables is now optional. The utility has the 5107capability to load some various tables to test features of ACPICA. 5108However, there are enough of them that the output of the utility became 5109confusing. With this change, only the required local tables are displayed 5110(RSDP, XSDT, etc.) along with the actual tables loaded via the command 5111line specification. This makes the default output simler and easier to 5112understand. The -el command line option restores the original behavior 5113for testing purposes. 5114 5115AcpiExec: Added support for overlapping operation regions. This change 5116expands the simulation of operation regions by supporting regions that 5117overlap within the given address space. Supports SystemMemory and 5118SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 5119 5120AcpiExec: Added region handler support for PCI_Config and EC spaces. This 5121allows AcpiExec to simulate these address spaces, similar to the current 5122support for SystemMemory and SystemIO. 5123 5124Debugger: Added new command to read/write/compare all namespace objects. 5125The command "test objects" will exercise the entire namespace by writing 5126new values to each data object, and ensuring that the write was 5127successful. The original value is then restored and verified. 5128 5129Debugger: Added the "test predefined" command. This change makes this 5130test public and puts it under the new "test" command. The test executes 5131each and every predefined name within the current namespace. 5132 5133 5134---------------------------------------- 513518 December 2013. Summary of changes for version 20131218: 5136 5137Global note: The ACPI 5.0A specification was released this month. There 5138are no changes needed for ACPICA since this release of ACPI is an 5139errata/clarification release. The specification is available at 5140acpi.info. 5141 5142 51431) ACPICA kernel-resident subsystem: 5144 5145Added validation of the XSDT root table if it is present. Some older 5146platforms contain an XSDT that is ill-formed or otherwise invalid (such 5147as containing some or all entries that are NULL pointers). This change 5148adds a new function to validate the XSDT before actually using it. If the 5149XSDT is found to be invalid, ACPICA will now automatically fall back to 5150using the RSDT instead. Original implementation by Zhao Yakui. Ported to 5151ACPICA and enhanced by Lv Zheng and Bob Moore. 5152 5153Added a runtime option to ignore the XSDT and force the use of the RSDT. 5154This change adds a runtime option that will force ACPICA to use the RSDT 5155instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 5156requires that an XSDT be used instead of the RSDT, the XSDT has been 5157found to be corrupt or ill-formed on some machines. Lv Zheng. 5158 5159Added a runtime option to favor 32-bit FADT register addresses over the 516064-bit addresses. This change adds an option to favor 32-bit FADT 5161addresses when there is a conflict between the 32-bit and 64-bit versions 5162of the same register. The default behavior is to use the 64-bit version 5163in accordance with the ACPI specification. This can now be overridden via 5164the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 5165 5166During the change above, the internal "Convert FADT" and "Verify FADT" 5167functions have been merged to simplify the code, making it easier to 5168understand and maintain. ACPICA BZ 933. 5169 5170Improve exception reporting and handling for GPE block installation. 5171Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 5172status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 5173 5174Added helper macros to extract bus/segment numbers from the HEST table. 5175This change adds two macros to extract the encoded bus and segment 5176numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 5177Betty Dall <betty.dall@hp.com> 5178 5179Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 5180by ACPICA. It is not a public macro, so it should have no effect on 5181existing OSV code. Lv Zheng. 5182 5183Example Code and Data Size: These are the sizes for the OS-independent 5184acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5185debug version of the code includes the debug output trace mechanism and 5186has a much larger code and data size. 5187 5188 Current Release: 5189 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5190 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5191 Previous Release: 5192 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5193 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5194 5195 51962) iASL Compiler/Disassembler and Tools: 5197 5198Disassembler: Improved pathname support for emitted External() 5199statements. This change adds full pathname support for external names 5200that have been resolved internally by the inclusion of additional ACPI 5201tables (via the iASL -e option). Without this change, the disassembler 5202can emit multiple externals for the same object, or it become confused 5203when the Scope() operator is used on an external object. Overall, greatly 5204improves the ability to actually recompile the emitted ASL code when 5205objects a referenced across multiple ACPI tables. Reported by Michael 5206Tsirkin (mst@redhat.com). 5207 5208Tests/ASLTS: Updated functional control suite to execute with no errors. 5209David Box. Fixed several errors related to the testing of the interpreter 5210slack mode. Lv Zheng. 5211 5212iASL: Added support to detect names that are declared within a control 5213method, but are unused (these are temporary names that are only valid 5214during the time the method is executing). A remark is issued for these 5215cases. ACPICA BZ 1022. 5216 5217iASL: Added full support for the DBG2 table. Adds full disassembler, 5218table compiler, and template generator support for the DBG2 table (Debug 5219Port 2 table). 5220 5221iASL: Added full support for the PCCT table, update the table definition. 5222Updates the PCCT table definition in the actbl3.h header and adds table 5223compiler and template generator support. 5224 5225iASL: Added an option to emit only error messages (no warnings/remarks). 5226The -ve option will enable only error messages, warnings and remarks are 5227suppressed. This can simplify debugging when only the errors are 5228important, such as when an ACPI table is disassembled and there are many 5229warnings and remarks -- but only the actual errors are of real interest. 5230 5231Example ACPICA code (source/tools/examples): Updated the example code so 5232that it builds to an actual working program, not just example code. Added 5233ACPI tables and execution of an example control method in the DSDT. Added 5234makefile support for Unix generation. 5235 5236 5237---------------------------------------- 523815 November 2013. Summary of changes for version 20131115: 5239 5240This release is available at https://acpica.org/downloads 5241 5242 52431) ACPICA kernel-resident subsystem: 5244 5245Resource Manager: Fixed loop termination for the "get AML length" 5246function. The loop previously had an error termination on a NULL resource 5247pointer, which can never happen since the loop simply increments a valid 5248resource pointer. This fix changes the loop to terminate with an error on 5249an invalid end-of-buffer condition. The problem can be seen as an 5250infinite loop by callers to AcpiSetCurrentResources with an invalid or 5251corrupted resource descriptor, or a resource descriptor that is missing 5252an END_TAG descriptor. Reported by Dan Carpenter 5253<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 5254 5255Table unload and ACPICA termination: Delete all attached data objects 5256during namespace node deletion. This fix updates namespace node deletion 5257to delete the entire list of attached objects (attached via 5258AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 52591024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 5260 5261ACPICA termination: Added support to delete all objects attached to the 5262root namespace node. This fix deletes any and all objects that have been 5263attached to the root node via AcpiAttachData. Previously, none of these 5264objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 5265 5266Debug output: Do not emit the function nesting level for the in-kernel 5267build. The nesting level is really only useful during a single-thread 5268execution. Therefore, only enable this output for the AcpiExec utility. 5269Also, only emit the thread ID when executing under AcpiExec (Context 5270switches are still always detected and a message is emitted). ACPICA BZ 5271972. 5272 5273Example Code and Data Size: These are the sizes for the OS-independent 5274acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5275debug version of the code includes the debug output trace mechanism and 5276has a much larger code and data size. 5277 5278 Current Release: 5279 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5280 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5281 Previous Release: 5282 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5283 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5284 5285 52862) iASL Compiler/Disassembler and Tools: 5287 5288AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 5289correct portable POSIX header for terminal control functions. 5290 5291Disassembler: Fixed control method invocation issues related to the use 5292of the CondRefOf() operator. The problem is seen in the disassembly where 5293control method invocations may not be disassembled properly if the 5294control method name has been used previously as an argument to CondRefOf. 5295The solution is to not attempt to emit an external declaration for the 5296CondRefOf target (it is not necessary in the first place). This prevents 5297disassembler object type confusion. ACPICA BZ 988. 5298 5299Unix Makefiles: Added an option to disable compiler optimizations and the 5300_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 5301with optimizations (reportedly, gcc 4.4 for example). This change adds a 5302command line option for make (NOOPT) that disables all compiler 5303optimizations and the _FORTIFY_SOURCE compiler flag. The default 5304optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 53051034. Lv Zheng, Bob Moore. 5306 5307Tests/ASLTS: Added options to specify individual test cases and modes. 5308This allows testers running aslts.sh to optionally specify individual 5309test modes and test cases. Also added an option to disable the forced 5310generation of the ACPICA tools from source if desired. Lv Zheng. 5311 5312---------------------------------------- 531327 September 2013. Summary of changes for version 20130927: 5314 5315This release is available at https://acpica.org/downloads 5316 5317 53181) ACPICA kernel-resident subsystem: 5319 5320Fixed a problem with store operations to reference objects. This change 5321fixes a problem where a Store operation to an ArgX object that contained 5322a 5323reference to a field object did not complete the automatic dereference 5324and 5325then write to the actual field object. Instead, the object type of the 5326field object was inadvertently changed to match the type of the source 5327operand. The new behavior will actually write to the field object (buffer 5328field or field unit), thus matching the correct ACPI-defined behavior. 5329 5330Implemented support to allow the host to redefine individual OSL 5331prototypes. This change enables the host to redefine OSL prototypes found 5332in the acpiosxf.h file. This allows the host to implement OSL interfaces 5333with a macro or inlined function. Further, it allows the host to add any 5334additional required modifiers such as __iomem, __init, __exit, etc., as 5335necessary on a per-interface basis. Enables maximum flexibility for the 5336OSL interfaces. Lv Zheng. 5337 5338Hardcoded the access width for the FADT-defined reset register. The ACPI 5339specification requires the reset register width to be 8 bits. ACPICA now 5340hardcodes the width to 8 and ignores the FADT width value. This provides 5341compatibility with other ACPI implementations that have allowed BIOS code 5342with bad register width values to go unnoticed. Matthew Garett, Bob 5343Moore, 5344Lv Zheng. 5345 5346Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 5347used 5348in the OSL header (acpiosxf). The change modifies the position of this 5349macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 5350build issues if the OSL defines the implementation of the interface to be 5351an inline stub function. Lv Zheng. 5352 5353Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 5354initialization interfaces. This change adds a new macro for the main init 5355and terminate external interfaces in order to support hosts that require 5356additional or different processing for these functions. Changed from 5357ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 5358Zheng, Bob Moore. 5359 5360Cleaned up the memory allocation macros for configurability. In the 5361common 5362case, the ACPI_ALLOCATE and related macros now resolve directly to their 5363respective AcpiOs* OSL interfaces. Two options: 53641) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 5365default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 53662) For AcpiExec (and for debugging), the macros can optionally be 5367resolved 5368to the local ACPICA interfaces that track each allocation (local tracking 5369is used to immediately detect memory leaks). 5370Lv Zheng. 5371 5372Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 5373to predefine this macro to either TRUE or FALSE during the system build. 5374 5375Replaced __FUNCTION_ with __func__ in the gcc-specific header. 5376 5377Example Code and Data Size: These are the sizes for the OS-independent 5378acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5379debug version of the code includes the debug output trace mechanism and 5380has a much larger code and data size. 5381 5382 Current Release: 5383 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5384 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5385 Previous Release: 5386 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5387 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5388 5389 53902) iASL Compiler/Disassembler and Tools: 5391 5392iASL: Implemented wildcard support for the -e option. This simplifies use 5393when there are many SSDTs that must be included to resolve external 5394method 5395declarations. ACPICA BZ 1041. Example: 5396 iasl -e ssdt*.dat -d dsdt.dat 5397 5398AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5399adds a portable module that implements full history and limited line 5400editing for Unix and Linux systems. It does not use readline() due to 5401portability issues. Instead it uses the POSIX termio interface to put the 5402terminal in raw input mode so that the various special keys can be 5403trapped 5404(such as up/down-arrow for history support and left/right-arrow for line 5405editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5406 5407AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5408one or more spaces. This provides compatible with early or different 5409versions of the AcpiDump utility. ACPICA BZ 1044. 5410 5411AcpiDump: Do not ignore tables that contain only an ACPI table header. 5412Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5413no other data. This change adds support to dump these tables. Any tables 5414shorter than the length of an ACPI table header remain in error (an error 5415message is emitted). Reported by Yi Li. 5416 5417Debugger: Echo actual command along with the "unknown command" message. 5418 5419---------------------------------------- 542023 August 2013. Summary of changes for version 20130823: 5421 54221) ACPICA kernel-resident subsystem: 5423 5424Implemented support for host-installed System Control Interrupt (SCI) 5425handlers. Certain ACPI functionality requires the host to handle raw 5426SCIs. For example, the "SCI Doorbell" that is defined for memory power 5427state support requires the host device driver to handle SCIs to examine 5428if the doorbell has been activated. Multiple SCI handlers can be 5429installed to allow for future expansion. New external interfaces are 5430AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5431details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5432 5433Operation region support: Never locally free the handler "context" 5434pointer. This change removes some dangerous code that attempts to free 5435the handler context pointer in some (rare) circumstances. The owner of 5436the handler owns this pointer and the ACPICA code should never touch it. 5437Although not seen to be an issue in any kernel, it did show up as a 5438problem (fault) under AcpiExec. Also, set the internal storage field for 5439the context pointer to zero when the region is deactivated, simply for 5440sanity. David Box. ACPICA BZ 1039. 5441 5442AcpiRead: On error, do not modify the return value target location. If an 5443error happens in the middle of a split 32/32 64-bit I/O operation, do not 5444modify the target of the return value pointer. Makes the code consistent 5445with the rest of ACPICA. Bjorn Helgaas. 5446 5447Example Code and Data Size: These are the sizes for the OS-independent 5448acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5449debug version of the code includes the debug output trace mechanism and 5450has a much larger code and data size. 5451 5452 Current Release: 5453 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5454 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5455 Previous Release: 5456 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5457 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5458 5459 54602) iASL Compiler/Disassembler and Tools: 5461 5462AcpiDump: Implemented several new features and fixed some problems: 54631) Added support to dump the RSDP, RSDT, and XSDT tables. 54642) Added support for multiple table instances (SSDT, UEFI). 54653) Added option to dump "customized" (overridden) tables (-c). 54664) Fixed a problem where some table filenames were improperly 5467constructed. 54685) Improved some error messages, removed some unnecessary messages. 5469 5470iASL: Implemented additional support for disassembly of ACPI tables that 5471contain invocations of external control methods. The -fe<file> option 5472allows the import of a file that specifies the external methods along 5473with the required number of arguments for each -- allowing for the 5474correct disassembly of the table. This is a workaround for a limitation 5475of AML code where the disassembler often cannot determine the number of 5476arguments required for an external control method and generates incorrect 5477ASL code. See the iASL reference for details. ACPICA BZ 1030. 5478 5479Debugger: Implemented a new command (paths) that displays the full 5480pathnames (namepaths) and object types of all objects in the namespace. 5481This is an alternative to the namespace command. 5482 5483Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5484mechanism and any installed handlers. 5485 5486iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5487This can occur if there are too many parent prefixes in a namepath (for 5488example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5489 5490Application OSLs: Set the return value for the PCI read functions. These 5491functions simply return AE_OK, but should set the return value to zero 5492also. This change implements this. ACPICA BZ 1038. 5493 5494Debugger: Prevent possible command line buffer overflow. Increase the 5495size of a couple of the debugger line buffers, and ensure that overflow 5496cannot happen. ACPICA BZ 1037. 5497 5498iASL: Changed to abort immediately on serious errors during the parsing 5499phase. Due to the nature of ASL, there is no point in attempting to 5500compile these types of errors, and they typically end up causing a 5501cascade of hundreds of errors which obscure the original problem. 5502 5503---------------------------------------- 550425 July 2013. Summary of changes for version 20130725: 5505 55061) ACPICA kernel-resident subsystem: 5507 5508Fixed a problem with the DerefOf operator where references to FieldUnits 5509and BufferFields incorrectly returned the parent object, not the actual 5510value of the object. After this change, a dereference of a FieldUnit 5511reference results in a read operation on the field to get the value, and 5512likewise, the appropriate BufferField value is extracted from the target 5513buffer. 5514 5515Fixed a problem where the _WAK method could cause a fault under these 5516circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5517method returned no value. The problem is rarely seen because most kernels 5518run ACPICA in slack mode. 5519 5520For the DerefOf operator, a fatal error now results if an attempt is made 5521to dereference a reference (created by the Index operator) to a NULL 5522package element. Provides compatibility with other ACPI implementations, 5523and this behavior will be added to a future version of the ACPI 5524specification. 5525 5526The ACPI Power Management Timer (defined in the FADT) is now optional. 5527This provides compatibility with other ACPI implementations and will 5528appear in the next version of the ACPI specification. If there is no PM 5529Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5530zero in the FADT indicates no PM timer. 5531 5532Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5533allows the host to globally enable/disable all vendor strings, all 5534feature strings, or both. Intended to be primarily used for debugging 5535purposes only. Lv Zheng. 5536 5537Expose the collected _OSI data to the host via a global variable. This 5538data tracks the highest level vendor ID that has been invoked by the BIOS 5539so that the host (and potentially ACPICA itself) can change behaviors 5540based upon the age of the BIOS. 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.2K Code, 27.1K Data, 123.3K Total 5549 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5550 Previous Release: 5551 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5552 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5553 5554 55552) iASL Compiler/Disassembler and Tools: 5556 5557iASL: Created the following enhancements for the -so option (create 5558offset table): 55591)Add offsets for the last nameseg in each namepath for every supported 5560object type 55612)Add support for Processor, Device, Thermal Zone, and Scope objects 55623)Add the actual AML opcode for the parent object of every supported 5563object type 55644)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5565 5566Disassembler: Emit all unresolved external symbols in a single block. 5567These are external references to control methods that could not be 5568resolved, and thus, the disassembler had to make a guess at the number of 5569arguments to parse. 5570 5571iASL: The argument to the -T option (create table template) is now 5572optional. If not specified, the default table is a DSDT, typically the 5573most common case. 5574 5575---------------------------------------- 557626 June 2013. Summary of changes for version 20130626: 5577 55781) ACPICA kernel-resident subsystem: 5579 5580Fixed an issue with runtime repair of the _CST object. Null or invalid 5581elements were not always removed properly. Lv Zheng. 5582 5583Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5584FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5585the maximum number of GPEs is 1016. Use of multiple GPE block devices 5586makes the system-wide number of GPEs essentially unlimited. 5587 5588Example Code and Data Size: These are the sizes for the OS-independent 5589acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5590debug version of the code includes the debug output trace mechanism and 5591has a much larger code and data size. 5592 5593 Current Release: 5594 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5595 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5596 Previous Release: 5597 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5598 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5599 5600 56012) iASL Compiler/Disassembler and Tools: 5602 5603Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5604hosts. Now supports Linux, FreeBSD, and Windows. 5605 5606Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5607Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5608 5609iASL/Preprocessor: Implemented full support for nested 5610#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5611 5612Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5613max. The original purpose of this constraint was to limit the amount of 5614debug output. However, the string function in question (UtPrintString) is 5615now used for the disassembler also, where 256 bytes is insufficient. 5616Reported by RehabMan@GitHub. 5617 5618iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5619tables. ACPICA BZ 999. Lv Zheng. 5620 5621iASL: Fixed a couple of error exit issues that could result in a "Could 5622not delete <file>" message during ASL compilation. 5623 5624AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5625the actual signatures for these tables are "FACP" and "APIC", 5626respectively. 5627 5628AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5629tables are allowed to have multiple instances. 5630 5631---------------------------------------- 563217 May 2013. Summary of changes for version 20130517: 5633 56341) ACPICA kernel-resident subsystem: 5635 5636Fixed a regression introduced in version 20130328 for _INI methods. This 5637change fixes a problem introduced in 20130328 where _INI methods are no 5638longer executed properly because of a memory block that was not 5639initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5640<tomasz.nowicki@linaro.org>. 5641 5642Fixed a possible problem with the new extended sleep registers in the 5643ACPI 56445.0 FADT. Do not use these registers (even if populated) unless the HW- 5645reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 56461020. Lv Zheng. 5647 5648Implemented return value repair code for _CST predefined objects: Sort 5649the 5650list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5651 5652Implemented a debug-only option to disable loading of SSDTs from the 5653RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5654ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5655acglobal.h - ACPICA BZ 1005. Lv Zheng. 5656 5657Fixed some issues in the ACPICA initialization and termination code: 5658Tomasz Nowicki <tomasz.nowicki@linaro.org> 56591) Clear events initialized flag upon event component termination. ACPICA 5660BZ 1013. 56612) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 56623) Delete global lock pending lock during termination. ACPICA BZ 1012. 56634) Clear debug buffer global on termination to prevent possible multiple 5664delete. ACPICA BZ 1010. 5665 5666Standardized all switch() blocks across the entire source base. After 5667many 5668years, different formatting for switch() had crept in. This change makes 5669the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5670 5671Split some files to enhance ACPICA modularity and configurability: 56721) Split buffer dump routines into utilities/utbuffer.c 56732) Split internal error message routines into utilities/uterror.c 56743) Split table print utilities into tables/tbprint.c 56754) Split iASL command-line option processing into asloptions.c 5676 5677Makefile enhancements: 56781) Support for all new files above. 56792) Abort make on errors from any subcomponent. Chao Guan. 56803) Add build support for Apple Mac OS X. Liang Qi. 5681 5682Example Code and Data Size: These are the sizes for the OS-independent 5683acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5684debug version of the code includes the debug output trace mechanism and 5685has a much larger code and data size. 5686 5687 Current Release: 5688 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5689 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5690 Previous Release: 5691 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5692 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5693 5694 56952) iASL Compiler/Disassembler and Tools: 5696 5697New utility: Implemented an easily portable version of the acpidump 5698utility to extract ACPI tables from the system (or a file) in an ASCII 5699hex 5700dump format. The top-level code implements the various command line 5701options, file I/O, and table dump routines. To port to a new host, only 5702three functions need to be implemented to get tables -- since this 5703functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5704the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 57051) The Windows version obtains the ACPI tables from the Registry. 57062) The Linux version is under development. 57073) Other hosts - If an OS-dependent module is submitted, it will be 5708distributed with ACPICA. 5709 5710iASL: Fixed a regression for -D preprocessor option (define symbol). A 5711restructuring/change to the initialization sequence caused this option to 5712no longer work properly. 5713 5714iASL: Implemented a mechanism to disable specific warnings and remarks. 5715Adds a new command line option, "-vw <messageid> as well as "#pragma 5716disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5717 5718iASL: Fix for too-strict package object validation. The package object 5719validation for return values from the predefined names is a bit too 5720strict, it does not allow names references within the package (which will 5721be resolved at runtime.) These types of references cannot be validated at 5722compile time. This change ignores named references within package objects 5723for names that return or define static packages. 5724 5725Debugger: Fixed the 80-character command line limitation for the History 5726command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5727 5728iASL: Added control method and package support for the -so option 5729(generates AML offset table for BIOS support.) 5730 5731iASL: issue a remark if a non-serialized method creates named objects. If 5732a thread blocks within the method for any reason, and another thread 5733enters the method, the method will fail because an attempt will be made 5734to 5735create the same (named) object twice. In this case, issue a remark that 5736the method should be marked serialized. NOTE: may become a warning later. 5737ACPICA BZ 909. 5738 5739---------------------------------------- 574018 April 2013. Summary of changes for version 20130418: 5741 57421) ACPICA kernel-resident subsystem: 5743 5744Fixed a possible buffer overrun during some rare but specific field unit 5745read operations. This overrun can only happen if the DSDT version is 1 -- 5746meaning that all AML integers are 32 bits -- and the field length is 5747between 33 and 55 bits long. During the read, an internal buffer object 5748is 5749created for the field unit because the field is larger than an integer 5750(32 5751bits). However, in this case, the buffer will be incorrectly written 5752beyond the end because the buffer length is less than the internal 5753minimum 5754of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5755long, but a full 8 bytes will be written. 5756 5757Updated the Embedded Controller "orphan" _REG method support. This refers 5758to _REG methods under the EC device that have no corresponding operation 5759region. This is allowed by the ACPI specification. This update removes a 5760dependency on the existence an ECDT table. It will execute an orphan _REG 5761method as long as the operation region handler for the EC is installed at 5762the EC device node and not the namespace root. Rui Zhang (original 5763update), Bob Moore (update/integrate). 5764 5765Implemented run-time argument typechecking for all predefined ACPI names 5766(_STA, _BIF, etc.) This change performs object typechecking on all 5767incoming arguments for all predefined names executed via 5768AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5769passing correct object types as well as the correct number of arguments 5770(therefore identifying any issues immediately). Also, the ASL/namespace 5771definition of the predefined name is checked against the ACPI 5772specification for the proper argument count. Adds one new file, 5773nsarguments.c 5774 5775Changed an exception code for the ASL UnLoad() operator. Changed the 5776exception code for the case where the input DdbHandle is invalid, from 5777AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5778 5779Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5780global makefile. The use of this flag causes compiler errors on earlier 5781versions of GCC, so it has been removed for compatibility. 5782 5783Miscellaneous cleanup: 57841) Removed some unused/obsolete macros 57852) Fixed a possible memory leak in the _OSI support 57863) Removed an unused variable in the predefined name support 57874) Windows OSL: remove obsolete reference to a memory list field 5788 5789Example Code and Data Size: These are the sizes for the OS-independent 5790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5791debug version of the code includes the debug output trace mechanism and 5792has a much larger code and data size. 5793 5794 Current Release: 5795 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5796 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5797 Previous Release: 5798 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5799 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5800 5801 58022) iASL Compiler/Disassembler and Tools: 5803 5804AcpiExec: Added installation of a handler for the SystemCMOS address 5805space. This prevents control method abort if a method accesses this 5806space. 5807 5808AcpiExec: Added support for multiple EC devices, and now install EC 5809operation region handler(s) at the actual EC device instead of the 5810namespace root. This reflects the typical behavior of host operating 5811systems. 5812 5813AcpiExec: Updated to ensure that all operation region handlers are 5814installed before the _REG methods are executed. This prevents a _REG 5815method from aborting if it accesses an address space has no handler. 5816AcpiExec installs a handler for every possible address space. 5817 5818Debugger: Enhanced the "handlers" command to display non-root handlers. 5819This change enhances the handlers command to display handlers associated 5820with individual devices throughout the namespace, in addition to the 5821currently supported display of handlers associated with the root 5822namespace 5823node. 5824 5825ASL Test Suite: Several test suite errors have been identified and 5826resolved, reducing the total error count during execution. Chao Guan. 5827 5828---------------------------------------- 582928 March 2013. Summary of changes for version 20130328: 5830 58311) ACPICA kernel-resident subsystem: 5832 5833Fixed several possible race conditions with the internal object reference 5834counting mechanism. Some of the external ACPICA interfaces update object 5835reference counts without holding the interpreter or namespace lock. This 5836change adds a spinlock to protect reference count updates on the internal 5837ACPICA objects. Reported by and with assistance from Andriy Gapon 5838(avg@FreeBSD.org). 5839 5840FADT support: Removed an extraneous warning for very large GPE register 5841sets. This change removes a size mismatch warning if the legacy length 5842field for a GPE register set is larger than the 64-bit GAS structure can 5843accommodate. GPE register sets can be larger than the 255-bit width 5844limitation of the GAS structure. Linn Crosetto (linn@hp.com). 5845 5846_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5847return from this interface. Handles a possible timeout case if 5848ACPI_WAIT_FOREVER is modified by the host to be a value less than 5849"forever". Jung-uk Kim. 5850 5851Predefined name support: Add allowed/required argument type information 5852to 5853the master predefined info table. This change adds the infrastructure to 5854enable typechecking on incoming arguments for all predefined 5855methods/objects. It does not actually contain the code that will fully 5856utilize this information, this is still under development. Also condenses 5857some duplicate code for the predefined names into a new module, 5858utilities/utpredef.c 5859 5860Example Code and Data Size: These are the sizes for the OS-independent 5861acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5862debug version of the code includes the debug output trace mechanism and 5863has a much larger code and data size. 5864 5865 Previous Release: 5866 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5867 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5868 Current Release: 5869 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5870 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5871 5872 58732) iASL Compiler/Disassembler and Tools: 5874 5875iASL: Implemented a new option to simplify the development of ACPI- 5876related 5877BIOS code. Adds support for a new "offset table" output file. The -so 5878option will create a C table containing the AML table offsets of various 5879named objects in the namespace so that BIOS code can modify them easily 5880at 5881boot time. This can simplify BIOS runtime code by eliminating expensive 5882searches for "magic values", enhancing boot times and adding greater 5883reliability. With assistance from Lee Hamel. 5884 5885iASL: Allow additional predefined names to return zero-length packages. 5886Now, all predefined names that are defined by the ACPI specification to 5887return a "variable-length package of packages" are allowed to return a 5888zero length top-level package. This allows the BIOS to tell the host that 5889the requested feature is not supported, and supports existing BIOS/ASL 5890code and practices. 5891 5892iASL: Changed the "result not used" warning to an error. This is the case 5893where an ASL operator is effectively a NOOP because the result of the 5894operation is not stored anywhere. For example: 5895 Add (4, Local0) 5896There is no target (missing 3rd argument), nor is the function return 5897value used. This is potentially a very serious problem -- since the code 5898was probably intended to do something, but for whatever reason, the value 5899was not stored. Therefore, this issue has been upgraded from a warning to 5900an error. 5901 5902AcpiHelp: Added allowable/required argument types to the predefined names 5903info display. This feature utilizes the recent update to the predefined 5904names table (above). 5905 5906---------------------------------------- 590714 February 2013. Summary of changes for version 20130214: 5908 59091) ACPICA Kernel-resident Subsystem: 5910 5911Fixed a possible regression on some hosts: Reinstated the safe return 5912macros (return_ACPI_STATUS, etc.) that ensure that the argument is 5913evaluated only once. Although these macros are not needed for the ACPICA 5914code itself, they are often used by ACPI-related host device drivers 5915where 5916the safe feature may be necessary. 5917 5918Fixed several issues related to the ACPI 5.0 reduced hardware support 5919(SOC): Now ensure that if the platform declares itself as hardware- 5920reduced 5921via the FADT, the following functions become NOOPs (and always return 5922AE_OK) because ACPI is always enabled by definition on these machines: 5923 AcpiEnable 5924 AcpiDisable 5925 AcpiHwGetMode 5926 AcpiHwSetMode 5927 5928Dynamic Object Repair: Implemented additional runtime repairs for 5929predefined name return values. Both of these repairs can simplify code in 5930the related device drivers that invoke these methods: 59311) For the _STR and _MLS names, automatically repair/convert an ASCII 5932string to a Unicode buffer. 59332) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 5934a 5935lone end tag descriptor in the following cases: A Return(0) was executed, 5936a null buffer was returned, or no object at all was returned (non-slack 5937mode only). Adds a new file, nsconvert.c 5938ACPICA BZ 998. Bob Moore, Lv Zheng. 5939 5940Resource Manager: Added additional code to prevent possible infinite 5941loops 5942while traversing corrupted or ill-formed resource template buffers. Check 5943for zero-length resource descriptors in all code that loops through 5944resource templates (the length field is used to index through the 5945template). This change also hardens the external AcpiWalkResources and 5946AcpiWalkResourceBuffer interfaces. 5947 5948Local Cache Manager: Enhanced the main data structure to eliminate an 5949unnecessary mechanism to access the next object in the list. Actually 5950provides a small performance enhancement for hosts that use the local 5951ACPICA cache manager. Jung-uk Kim. 5952 5953Example Code and Data Size: These are the sizes for the OS-independent 5954acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5955debug version of the code includes the debug output trace mechanism and 5956has a much larger code and data size. 5957 5958 Previous Release: 5959 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 5960 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 5961 Current Release: 5962 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5963 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5964 5965 59662) iASL Compiler/Disassembler and Tools: 5967 5968iASL/Disassembler: Fixed several issues with the definition of the ACPI 59695.0 RASF table (RAS Feature Table). This change incorporates late changes 5970that were made to the ACPI 5.0 specification. 5971 5972iASL/Disassembler: Added full support for the following new ACPI tables: 5973 1) The MTMR table (MID Timer Table) 5974 2) The VRTC table (Virtual Real Time Clock Table). 5975Includes header file, disassembler, table compiler, and template support 5976for both tables. 5977 5978iASL: Implemented compile-time validation of package objects returned by 5979predefined names. This new feature validates static package objects 5980returned by the various predefined names defined to return packages. Both 5981object types and package lengths are validated, for both parent packages 5982and sub-packages, if any. The code is similar in structure and behavior 5983to 5984the runtime repair mechanism within the AML interpreter and uses the 5985existing predefined name information table. Adds a new file, aslprepkg.c. 5986ACPICA BZ 938. 5987 5988iASL: Implemented auto-detection of binary ACPI tables for disassembly. 5989This feature detects a binary file with a valid ACPI table header and 5990invokes the disassembler automatically. Eliminates the need to 5991specifically invoke the disassembler with the -d option. ACPICA BZ 862. 5992 5993iASL/Disassembler: Added several warnings for the case where there are 5994unresolved control methods during the disassembly. This can potentially 5995cause errors when the output file is compiled, because the disassembler 5996assumes zero method arguments in these cases (it cannot determine the 5997actual number of arguments without resolution/definition of the method). 5998 5999Debugger: Added support to display all resources with a single command. 6000Invocation of the resources command with no arguments will now display 6001all 6002resources within the current namespace. 6003 6004AcpiHelp: Added descriptive text for each ACPICA exception code displayed 6005via the -e option. 6006 6007---------------------------------------- 600817 January 2013. Summary of changes for version 20130117: 6009 60101) ACPICA Kernel-resident Subsystem: 6011 6012Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 6013return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 6014objects to return a package containing one integer, most BIOS code 6015returns 6016two integers and the previous code reflects that. However, we also need 6017to 6018support BIOS code that actually implements to the ACPI spec, and this 6019change reflects this. 6020 6021Fixed two issues with the ACPI_DEBUG_PRINT macros: 60221) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 6023C compilers that require this support. 60242) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 6025ACPI_DEBUG is already used by many of the various hosts. 6026 6027Updated all ACPICA copyrights and signons to 2013. Added the 2013 6028copyright to all module headers and signons, including the standard Linux 6029header. This affects virtually every file in the ACPICA core subsystem, 6030iASL compiler, all ACPICA utilities, and the test suites. 6031 6032Example Code and Data Size: These are the sizes for the OS-independent 6033acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6034debug version of the code includes the debug output trace mechanism and 6035has a much larger code and data size. 6036 6037 Previous Release: 6038 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6039 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6040 Current Release: 6041 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6042 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6043 6044 60452) iASL Compiler/Disassembler and Tools: 6046 6047Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 6048prevent a possible fault on some hosts. Some C libraries modify the arg 6049pointer parameter to vfprintf making it difficult to call it twice in the 6050AcpiOsVprintf function. Use a local buffer to workaround this issue. This 6051does not affect the Windows OSL since the Win C library does not modify 6052the arg pointer. Chao Guan, Bob Moore. 6053 6054iASL: Fixed a possible infinite loop when the maximum error count is 6055reached. If an output file other than the .AML file is specified (such as 6056a listing file), and the maximum number of errors is reached, do not 6057attempt to flush data to the output file(s) as the compiler is aborting. 6058This can cause an infinite loop as the max error count code essentially 6059keeps calling itself. 6060 6061iASL/Disassembler: Added an option (-in) to ignore NOOP 6062opcodes/operators. 6063Implemented for both the compiler and the disassembler. Often, the NOOP 6064opcode is used as padding for packages that are changed dynamically by 6065the 6066BIOS. When disassembled and recompiled, these NOOPs will cause syntax 6067errors. This option causes the disassembler to ignore all NOOP opcodes 6068(0xA3), and it also causes the compiler to ignore all ASL source code 6069NOOP 6070statements as well. 6071 6072Debugger: Enhanced the Sleep command to execute all sleep states. This 6073change allows Sleep to be invoked with no arguments and causes the 6074debugger to execute all of the sleep states, 0-5, automatically. 6075 6076---------------------------------------- 607720 December 2012. Summary of changes for version 20121220: 6078 60791) ACPICA Kernel-resident Subsystem: 6080 6081Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 6082alternate entry point for AcpiWalkResources and improves the usability of 6083the resource manager by accepting as input a buffer containing the output 6084of either a _CRS, _PRS, or _AEI method. The key functionality is that the 6085input buffer is not deleted by this interface so that it can be used by 6086the host later. See the ACPICA reference for details. 6087 6088Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 6089(DSDT version < 2). The constant will be truncated and this warning 6090reflects that behavior. 6091 6092Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 6093ExtendedInterrupt, and GpioInt descriptors. This change adds support to 6094both get and set the new wake bit in these descriptors, separately from 6095the existing share bit. Reported by Aaron Lu. 6096 6097Interpreter: Fix Store() when an implicit conversion is not possible. For 6098example, in the cases such as a store of a string to an existing package 6099object, implement the store as a CopyObject(). This is a small departure 6100from the ACPI specification which states that the control method should 6101be 6102aborted in this case. However, the ASLTS suite depends on this behavior. 6103 6104Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 6105macros: check if debug output is currently enabled as soon as possible to 6106minimize performance impact if debug is in fact not enabled. 6107 6108Source code restructuring: Cleanup to improve modularity. The following 6109new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 6110psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 6111Associated makefiles and project files have been updated. 6112 6113Changed an exception code for LoadTable operator. For the case where one 6114of the input strings is too long, change the returned exception code from 6115AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 6116 6117Fixed a possible memory leak in dispatcher error path. On error, delete 6118the mutex object created during method mutex creation. Reported by 6119tim.gardner@canonical.com. 6120 6121Example Code and Data Size: These are the sizes for the OS-independent 6122acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6123debug version of the code includes the debug output trace mechanism and 6124has a much larger code and data size. 6125 6126 Previous Release: 6127 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6128 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6129 Current Release: 6130 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6131 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6132 6133 61342) iASL Compiler/Disassembler and Tools: 6135 6136iASL: Disallow a method call as argument to the ObjectType ASL operator. 6137This change tracks an errata to the ACPI 5.0 document. The AML grammar 6138will not allow the interpreter to differentiate between a method and a 6139method invocation when these are used as an argument to the ObjectType 6140operator. The ACPI specification change is to disallow a method 6141invocation 6142(UserTerm) for the ObjectType operator. 6143 6144Finish support for the TPM2 and CSRT tables in the headers, table 6145compiler, and disassembler. 6146 6147Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 6148always expires immediately if the semaphore is not available. The 6149original 6150code was using a relative-time timeout, but sem_timedwait requires the 6151use 6152of an absolute time. 6153 6154iASL: Added a remark if the Timer() operator is used within a 32-bit 6155table. This operator returns a 64-bit time value that will be truncated 6156within a 32-bit table. 6157 6158iASL Source code restructuring: Cleanup to improve modularity. The 6159following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 6160aslmethod.c, and aslfileio.c. Associated makefiles and project files have 6161been updated. 6162 6163 6164---------------------------------------- 616514 November 2012. Summary of changes for version 20121114: 6166 61671) ACPICA Kernel-resident Subsystem: 6168 6169Implemented a performance enhancement for ACPI/AML Package objects. This 6170change greatly increases the performance of Package objects within the 6171interpreter. It changes the processing of reference counts for packages 6172by 6173optimizing for the most common case where the package sub-objects are 6174either Integers, Strings, or Buffers. Increases the overall performance 6175of 6176the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 61772X.) 6178Chao Guan. ACPICA BZ 943. 6179 6180Implemented and deployed common macros to extract flag bits from resource 6181descriptors. Improves readability and maintainability of the code. Fixes 6182a 6183problem with the UART serial bus descriptor for the number of data bits 6184flags (was incorrectly 2 bits, should be 3). 6185 6186Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 6187of the macros and changed the SETx macros to the style of (destination, 6188source). Also added ACPI_CASTx companion macros. Lv Zheng. 6189 6190Example Code and Data Size: These are the sizes for the OS-independent 6191acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6192debug version of the code includes the debug output trace mechanism and 6193has a much larger code and data size. 6194 6195 Previous Release: 6196 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6197 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6198 Current Release: 6199 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6200 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6201 6202 62032) iASL Compiler/Disassembler and Tools: 6204 6205Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 6206adds the ShareAndWake and ExclusiveAndWake flags which were added to the 6207Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 6208 6209Disassembler: Fixed a problem with external declaration generation. Fixes 6210a problem where an incorrect pathname could be generated for an external 6211declaration if the original reference to the object includes leading 6212carats (^). ACPICA BZ 984. 6213 6214Debugger: Completed a major update for the Disassemble<method> command. 6215This command was out-of-date and did not properly disassemble control 6216methods that had any reasonable complexity. This fix brings the command 6217up 6218to the same level as the rest of the disassembler. Adds one new file, 6219dmdeferred.c, which is existing code that is now common with the main 6220disassembler and the debugger disassemble command. ACPICA MZ 978. 6221 6222iASL: Moved the parser entry prototype to avoid a duplicate declaration. 6223Newer versions of Bison emit this prototype, so moved the prototype out 6224of 6225the iASL header to where it is actually used in order to avoid a 6226duplicate 6227declaration. 6228 6229iASL/Tools: Standardized use of the stream I/O functions: 6230 1) Ensure check for I/O error after every fopen/fread/fwrite 6231 2) Ensure proper order of size/count arguments for fread/fwrite 6232 3) Use test of (Actual != Requested) after all fwrite, and most fread 6233 4) Standardize I/O error messages 6234Improves reliability and maintainability of the code. Bob Moore, Lv 6235Zheng. 6236ACPICA BZ 981. 6237 6238Disassembler: Prevent duplicate External() statements. During generation 6239of external statements, detect similar pathnames that are actually 6240duplicates such as these: 6241 External (\ABCD) 6242 External (ABCD) 6243Remove all leading '\' characters from pathnames during the external 6244statement generation so that duplicates will be detected and tossed. 6245ACPICA BZ 985. 6246 6247Tools: Replace low-level I/O with stream I/O functions. Replace 6248open/read/write/close with the stream I/O equivalents 6249fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 6250Moore. 6251 6252AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 6253name header so that AcpiXtract recognizes the output file/table. 6254 6255iASL: Remove obsolete -2 option flag. Originally intended to force the 6256compiler/disassembler into an ACPI 2.0 mode, this was never implemented 6257and the entire concept is now obsolete. 6258 6259---------------------------------------- 626018 October 2012. Summary of changes for version 20121018: 6261 6262 62631) ACPICA Kernel-resident Subsystem: 6264 6265Updated support for the ACPI 5.0 MPST table. Fixes some problems 6266introduced by late changes to the table as it was added to the ACPI 5.0 6267specification. Includes header, disassembler, and data table compiler 6268support as well as a new version of the MPST template. 6269 6270AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 62715.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 6272methods: _HID, _CID, and _UID. 6273 6274Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 6275ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 6276name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 6277names for their various drivers. Affects the AcpiGetObjectInfo external 6278interface, and other internal interfaces as well. 6279 6280Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 6281This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 6282on machines that support non-aligned transfers. Optimizes for this case 6283rather than using a strncpy. With assistance from Zheng Lv. 6284 6285Resource Manager: Small fix for buffer size calculation. Fixed a one byte 6286error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 6287 6288Added a new debug print message for AML mutex objects that are force- 6289released. At control method termination, any currently acquired mutex 6290objects are force-released. Adds a new debug-only message for each one 6291that is released. 6292 6293Audited/updated all ACPICA return macros and the function debug depth 6294counter: 1) Ensure that all functions that use the various TRACE macros 6295also use the appropriate ACPICA return macros. 2) Ensure that all normal 6296return statements surround the return expression (value) with parens to 6297ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 6298Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 6299 6300Global source code changes/maintenance: All extra lines at the start and 6301end of each source file have been removed for consistency. Also, within 6302comments, all new sentences start with a single space instead of a double 6303space, again for consistency across the code base. 6304 6305Example Code and Data Size: These are the sizes for the OS-independent 6306acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6307debug version of the code includes the debug output trace mechanism and 6308has a much larger code and data size. 6309 6310 Previous Release: 6311 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6312 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6313 Current Release: 6314 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6315 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6316 6317 63182) iASL Compiler/Disassembler and Tools: 6319 6320AcpiExec: Improved the algorithm used for memory leak/corruption 6321detection. Added some intelligence to the code that maintains the global 6322list of allocated memory. The list is now ordered by allocated memory 6323address, significantly improving performance. When running AcpiExec on 6324the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 6325on the platform and/or the environment. Note, this performance 6326enhancement affects the AcpiExec utility only, not the kernel-resident 6327ACPICA code. 6328 6329Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 6330the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 6331incorrect table offset reported for invalid opcodes. Report the original 633232-bit value for bad ACPI_NAMEs (as well as the repaired name.) 6333 6334Disassembler: Enhanced the -vt option to emit the binary table data in 6335hex format to assist with debugging. 6336 6337Fixed a potential filename buffer overflow in osunixdir.c. Increased the 6338size of file structure. Colin Ian King. 6339 6340---------------------------------------- 634113 September 2012. Summary of changes for version 20120913: 6342 6343 63441) ACPICA Kernel-resident Subsystem: 6345 6346ACPI 5.0: Added two new notify types for the Hardware Error Notification 6347Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 6348and 6349MCE(6). 6350 6351Table Manager: Merged/removed duplicate code in the root table resize 6352functions. One function is external, the other is internal. Lv Zheng, 6353ACPICA 6354BZ 846. 6355 6356Makefiles: Completely removed the obsolete "Linux" makefiles under 6357acpica/generate/linux. These makefiles are obsolete and have been 6358replaced 6359by 6360the generic unix makefiles under acpica/generate/unix. 6361 6362Makefiles: Ensure that binary files always copied properly. Minor rule 6363change 6364to ensure that the final binary output files are always copied up to the 6365appropriate binary directory (bin32 or bin64.) 6366 6367Example Code and Data Size: These are the sizes for the OS-independent 6368acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6369debug 6370version of the code includes the debug output trace mechanism and has a 6371much 6372larger code and data size. 6373 6374 Previous Release: 6375 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6376 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6377 Current Release: 6378 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6379 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6380 6381 63822) iASL Compiler/Disassembler and Tools: 6383 6384Disassembler: Fixed a possible fault during the disassembly of resource 6385descriptors when a second parse is required because of the invocation of 6386external control methods within the table. With assistance from 6387adq@lidskialf.net. ACPICA BZ 976. 6388 6389iASL: Fixed a namepath optimization problem. An error can occur if the 6390parse 6391node that contains the namepath to be optimized does not have a parent 6392node 6393that is a named object. This change fixes the problem. 6394 6395iASL: Fixed a regression where the AML file is not deleted on errors. The 6396AML 6397output file should be deleted if there are any errors during the 6398compiler. 6399The 6400only exception is if the -f (force output) option is used. ACPICA BZ 974. 6401 6402iASL: Added a feature to automatically increase internal line buffer 6403sizes. 6404Via realloc(), automatically increase the internal line buffer sizes as 6405necessary to support very long source code lines. The current version of 6406the 6407preprocessor requires a buffer long enough to contain full source code 6408lines. 6409This change increases the line buffer(s) if the input lines go beyond the 6410current buffer size. This eliminates errors that occurred when a source 6411code 6412line was longer than the buffer. 6413 6414iASL: Fixed a problem with constant folding in method declarations. The 6415SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6416if a 6417Type3 opcode was used. 6418 6419Debugger: Improved command help support. For incorrect argument count, 6420display 6421full help for the command. For help command itself, allow an argument to 6422specify a command. 6423 6424Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6425errors during execution of the suite. Guan Chao. 6426 6427---------------------------------------- 642816 August 2012. Summary of changes for version 20120816: 6429 6430 64311) ACPICA Kernel-resident Subsystem: 6432 6433Removed all use of the deprecated _GTS and _BFS predefined methods. The 6434_GTS 6435(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6436deprecated and will probably be removed from the ACPI specification. 6437Windows 6438does not invoke them, and reportedly never will. The final nail in the 6439coffin 6440is that the ACPI specification states that these methods must be run with 6441interrupts off, which is not going to happen in a kernel interpreter. 6442Note: 6443Linux has removed all use of the methods also. It was discovered that 6444invoking these functions caused failures on some machines, probably 6445because 6446they were never tested since Windows does not call them. Affects two 6447external 6448interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6449ACPICA BZ 969. 6450 6451Implemented support for complex bit-packed buffers returned from the _PLD 6452(Physical Location of Device) predefined method. Adds a new external 6453interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6454C 6455structure. Note: C Bitfields cannot be used for this type of predefined 6456structure since the memory layout of individual bitfields is not defined 6457by 6458the C language. In addition, there are endian concerns where a compiler 6459will 6460change the bitfield ordering based on the machine type. The new ACPICA 6461interface eliminates these issues, and should be called after _PLD is 6462executed. ACPICA BZ 954. 6463 6464Implemented a change to allow a scope change to root (via "Scope (\)") 6465during 6466execution of module-level ASL code (code that is executed at table load 6467time.) Lin Ming. 6468 6469Added the Windows8/Server2012 string for the _OSI method. This change 6470adds 6471a 6472new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 64732012. 6474 6475Added header support for the new ACPI tables DBG2 (Debug Port Table Type 64762) 6477and CSRT (Core System Resource Table). 6478 6479Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6480names. This simplifies access to the buffers returned by these predefined 6481names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6482 6483GPE support: Removed an extraneous parameter from the various low-level 6484internal GPE functions. Tang Feng. 6485 6486Removed the linux makefiles from the unix packages. The generate/linux 6487makefiles are obsolete and have been removed from the unix tarball 6488release 6489packages. The replacement makefiles are under generate/unix, and there is 6490a 6491top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6492 6493Updates for Unix makefiles: 64941) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 64952) Update linker flags (move to end of command line) for AcpiExec 6496utility. 6497Guan Chao. 6498 6499Split ACPICA initialization functions to new file, utxfinit.c. Split from 6500utxface.c to improve modularity and reduce file size. 6501 6502Example Code and Data Size: These are the sizes for the OS-independent 6503acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6504debug version of the code includes the debug output trace mechanism and 6505has a 6506much larger code and data size. 6507 6508 Previous Release: 6509 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6510 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6511 Current Release: 6512 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6513 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6514 6515 65162) iASL Compiler/Disassembler and Tools: 6517 6518iASL: Fixed a problem with constant folding for fixed-length constant 6519expressions. The constant-folding code was not being invoked for constant 6520expressions that allow the use of type 3/4/5 opcodes to generate 6521constants 6522for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6523result 6524in the generation of invalid AML bytecode. ACPICA BZ 970. 6525 6526iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6527apparently automatically emit some of the necessary externals. This 6528change 6529handles these versions in order to eliminate generation warnings. 6530 6531Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6532 6533Disassembler: Add support to decode _PLD buffers. The decoded buffer 6534appears 6535within comments in the output file. 6536 6537Debugger: Fixed a regression with the "Threads" command where 6538AE_BAD_PARAMETER was always returned. 6539 6540---------------------------------------- 654111 July 2012. Summary of changes for version 20120711: 6542 65431) ACPICA Kernel-resident Subsystem: 6544 6545Fixed a possible fault in the return package object repair code. Fixes a 6546problem that can occur when a lone package object is wrapped with an 6547outer 6548package object in order to force conformance to the ACPI specification. 6549Can 6550affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6551_DLM, 6552_CSD, _PSD, _TSD. 6553 6554Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6555PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6556ARB_DIS bit must be implemented in the host-dependent C3 processor power 6557state 6558support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6559both 6560Intel and other vendors. (for Intel: ICH4-M and earlier) 6561 6562This change removes the code to disable/enable bus master arbitration 6563during 6564suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6565causes 6566resume problems on some machines. The change has been in use for over 6567seven 6568years within Linux. 6569 6570Implemented two new external interfaces to support host-directed dynamic 6571ACPI 6572table load and unload. They are intended to simplify the host 6573implementation 6574of hot-plug support: 6575 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6576 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6577table. 6578See the ACPICA reference for additional details. Adds one new file, 6579components/tables/tbxfload.c 6580 6581Implemented and deployed two new interfaces for errors and warnings that 6582are 6583known to be caused by BIOS/firmware issues: 6584 AcpiBiosError: Prints "ACPI Firmware Error" message. 6585 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6586Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6587table 6588and FADT errors. Additional deployment to be completed as appropriate in 6589the 6590future. The associated conditional macros are ACPI_BIOS_ERROR and 6591ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6592ACPICA 6593BZ 6594843. 6595 6596Implicit notify support: ensure that no memory allocation occurs within a 6597critical region. This fix moves a memory allocation outside of the time 6598that a 6599spinlock is held. Fixes issues on systems that do not allow this 6600behavior. 6601Jung-uk Kim. 6602 6603Split exception code utilities and tables into a new file, 6604utilities/utexcep.c 6605 6606Example Code and Data Size: These are the sizes for the OS-independent 6607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6608debug 6609version of the code includes the debug output trace mechanism and has a 6610much 6611larger code and data size. 6612 6613 Previous Release: 6614 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6615 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6616 Current Release: 6617 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6618 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6619 6620 66212) iASL Compiler/Disassembler and Tools: 6622 6623iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6624of 66250. Jung-uk Kim. 6626 6627Debugger: Enhanced the "tables" command to emit additional information 6628about 6629the current set of ACPI tables, including the owner ID and flags decode. 6630 6631Debugger: Reimplemented the "unload" command to use the new 6632AcpiUnloadParentTable external interface. This command was disable 6633previously 6634due to need for an unload interface. 6635 6636AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6637option 6638will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6639 6640---------------------------------------- 664120 June 2012. Summary of changes for version 20120620: 6642 6643 66441) ACPICA Kernel-resident Subsystem: 6645 6646Implemented support to expand the "implicit notify" feature to allow 6647multiple 6648devices to be notified by a single GPE. This feature automatically 6649generates a 6650runtime device notification in the absence of a BIOS-provided GPE control 6651method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6652notify is 6653provided by ACPICA for Windows compatibility, and is a workaround for 6654BIOS 6655AML 6656code errors. See the description of the AcpiSetupGpeForWake interface in 6657the 6658APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6659 6660Changed some comments and internal function names to simplify and ensure 6661correctness of the Linux code translation. No functional changes. 6662 6663Example Code and Data Size: These are the sizes for the OS-independent 6664acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6665debug 6666version of the code includes the debug output trace mechanism and has a 6667much 6668larger code and data size. 6669 6670 Previous Release: 6671 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6672 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6673 Current Release: 6674 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6675 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6676 6677 66782) iASL Compiler/Disassembler and Tools: 6679 6680Disassembler: Added support to emit short, commented descriptions for the 6681ACPI 6682predefined names in order to improve the readability of the disassembled 6683output. ACPICA BZ 959. Changes include: 6684 1) Emit descriptions for all standard predefined names (_INI, _STA, 6685_PRW, 6686etc.) 6687 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6688 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6689etc.) 6690 6691AcpiSrc: Fixed several long-standing Linux code translation issues. 6692Argument 6693descriptions in function headers are now translated properly to lower 6694case 6695and 6696underscores. ACPICA BZ 961. Also fixes translation problems such as 6697these: 6698(old -> new) 6699 i_aSL -> iASL 6700 00-7_f -> 00-7F 6701 16_k -> 16K 6702 local_fADT -> local_FADT 6703 execute_oSI -> execute_OSI 6704 6705iASL: Fixed a problem where null bytes were inadvertently emitted into 6706some 6707listing files. 6708 6709iASL: Added the existing debug options to the standard help screen. There 6710are 6711no longer two different help screens. ACPICA BZ 957. 6712 6713AcpiHelp: Fixed some typos in the various predefined name descriptions. 6714Also 6715expand some of the descriptions where appropriate. 6716 6717iASL: Fixed the -ot option (display compile times/statistics). Was not 6718working 6719properly for standard output; only worked for the debug file case. 6720 6721---------------------------------------- 672218 May 2012. Summary of changes for version 20120518: 6723 6724 67251) ACPICA Core Subsystem: 6726 6727Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6728defined 6729to block until asynchronous events such as notifies and GPEs have 6730completed. 6731Within ACPICA, it is only called before a notify or GPE handler is 6732removed/uninstalled. It also may be useful for the host OS within related 6733drivers such as the Embedded Controller driver. See the ACPICA reference 6734for 6735additional information. ACPICA BZ 868. 6736 6737ACPI Tables: Added a new error message for a possible overflow failure 6738during 6739the conversion of FADT 32-bit legacy register addresses to internal 6740common 674164- 6742bit GAS structure representation. The GAS has a one-byte "bit length" 6743field, 6744thus limiting the register length to 255 bits. ACPICA BZ 953. 6745 6746Example Code and Data Size: These are the sizes for the OS-independent 6747acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6748debug 6749version of the code includes the debug output trace mechanism and has a 6750much 6751larger code and data size. 6752 6753 Previous Release: 6754 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6755 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6756 Current Release: 6757 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6758 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6759 6760 67612) iASL Compiler/Disassembler and Tools: 6762 6763iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6764macro. 6765This keyword was added late in the ACPI 5.0 release cycle and was not 6766implemented until now. 6767 6768Disassembler: Added support for Operation Region externals. Adds missing 6769support for operation regions that are defined in another table, and 6770referenced locally via a Field or BankField ASL operator. Now generates 6771the 6772correct External statement. 6773 6774Disassembler: Several additional fixes for the External() statement 6775generation 6776related to some ASL operators. Also, order the External() statements 6777alphabetically in the disassembler output. Fixes the External() 6778generation 6779for 6780the Create* field, Alias, and Scope operators: 6781 1) Create* buffer field operators - fix type mismatch warning on 6782disassembly 6783 2) Alias - implement missing External support 6784 3) Scope - fix to make sure all necessary externals are emitted. 6785 6786iASL: Improved pathname support. For include files, merge the prefix 6787pathname 6788with the file pathname and eliminate unnecessary components. Convert 6789backslashes in all pathnames to forward slashes, for readability. Include 6790file 6791pathname changes affect both #include and Include() type operators. 6792 6793iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6794end 6795of a valid line by inserting a newline and then returning the EOF during 6796the 6797next call to GetNextLine. Prevents the line from being ignored due to EOF 6798condition. 6799 6800iASL: Implemented some changes to enhance the IDE support (-vi option.) 6801Error 6802and Warning messages are now correctly recognized for both the source 6803code 6804browser and the global error and warning counts. 6805 6806---------------------------------------- 680720 April 2012. Summary of changes for version 20120420: 6808 6809 68101) ACPICA Core Subsystem: 6811 6812Implemented support for multiple notify handlers. This change adds 6813support 6814to 6815allow multiple system and device notify handlers on Device, Thermal Zone, 6816and 6817Processor objects. This can simplify the host OS notification 6818implementation. 6819Also re-worked and restructured the entire notify support code to 6820simplify 6821handler installation, handler removal, notify event queuing, and notify 6822dispatch to handler(s). Note: there can still only be two global notify 6823handlers - one for system notifies and one for device notifies. There are 6824no 6825changes to the existing handler install/remove interfaces. Lin Ming, Bob 6826Moore, Rafael Wysocki. 6827 6828Fixed a regression in the package repair code where the object reference 6829count was calculated incorrectly. Regression was introduced in the commit 6830"Support to add Package wrappers". 6831 6832Fixed a couple possible memory leaks in the AML parser, in the error 6833recovery 6834path. Jesper Juhl, Lin Ming. 6835 6836Example Code and Data Size: These are the sizes for the OS-independent 6837acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6838debug version of the code includes the debug output trace mechanism and 6839has a 6840much larger code and data size. 6841 6842 Previous Release: 6843 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6844 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6845 Current Release: 6846 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6847 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6848 6849 68502) iASL Compiler/Disassembler and Tools: 6851 6852iASL: Fixed a problem with the resource descriptor support where the 6853length 6854of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6855included in cumulative descriptor offset, resulting in incorrect values 6856for 6857resource tags within resource descriptors appearing after a 6858StartDependent* 6859descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6860 6861iASL and Preprocessor: Implemented full support for the #line directive 6862to 6863correctly track original source file line numbers through the .i 6864preprocessor 6865output file - for error and warning messages. 6866 6867iASL: Expand the allowable byte constants for address space IDs. 6868Previously, 6869the allowable range was 0x80-0xFF (user-defined spaces), now the range is 68700x0A-0xFF to allow for custom and new IDs without changing the compiler. 6871 6872iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6873 6874iASL: Add option to completely disable the preprocessor (-Pn). 6875 6876iASL: Now emit all error/warning messages to standard error (stderr) by 6877default (instead of the previous stdout). 6878 6879ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6880Update 6881for resource descriptor offset fix above. Update/cleanup error output 6882routines. Enable and send iASL errors/warnings to an error logfile 6883(error.txt). Send all other iASL output to a logfile (compiler.txt). 6884Fixed 6885several extraneous "unrecognized operator" messages. 6886 6887---------------------------------------- 688820 March 2012. Summary of changes for version 20120320: 6889 6890 68911) ACPICA Core Subsystem: 6892 6893Enhanced the sleep/wake interfaces to optionally execute the _GTS method 6894(Going To Sleep) and the _BFS method (Back From Sleep). Windows 6895apparently 6896does not execute these methods, and therefore these methods are often 6897untested. It has been seen on some systems where the execution of these 6898methods causes errors and also prevents the machine from entering S5. It 6899is 6900therefore suggested that host operating systems do not execute these 6901methods 6902by default. In the future, perhaps these methods can be optionally 6903executed 6904based on the age of the system and/or what is the newest version of 6905Windows 6906that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 6907and 6908AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 6909Ming. 6910 6911Fixed a problem where the length of the local/common FADT was set too 6912early. 6913The local FADT table length cannot be set to the common length until the 6914original length has been examined. There is code that checks the table 6915length 6916and sets various fields appropriately. This can affect older machines 6917with 6918early FADT versions. For example, this can cause inadvertent writes to 6919the 6920CST_CNT register. Julian Anastasov. 6921 6922Fixed a mapping issue related to a physical table override. Use the 6923deferred 6924mapping mechanism for tables loaded via the physical override OSL 6925interface. 6926This allows for early mapping before the virtual memory manager is 6927available. 6928Thomas Renninger, Bob Moore. 6929 6930Enhanced the automatic return-object repair code: Repair a common problem 6931with 6932predefined methods that are defined to return a variable-length Package 6933of 6934sub-objects. If there is only one sub-object, some BIOS ASL code 6935mistakenly 6936simply returns the single object instead of a Package with one sub- 6937object. 6938This new support will repair this error by wrapping a Package object 6939around 6940the original object, creating the correct and expected Package with one 6941sub- 6942object. Names that can be repaired in this manner include: _ALR, _CSD, 6943_HPX, 6944_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 6945939. 6946 6947Changed the exception code returned for invalid ACPI paths passed as 6948parameters to external interfaces such as AcpiEvaluateObject. Was 6949AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 6950 6951Example Code and Data Size: These are the sizes for the OS-independent 6952acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6953debug 6954version of the code includes the debug output trace mechanism and has a 6955much 6956larger code and data size. 6957 6958 Previous Release: 6959 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6960 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6961 Current Release: 6962 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6963 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6964 6965 69662) iASL Compiler/Disassembler and Tools: 6967 6968iASL: Added the infrastructure and initial implementation of a integrated 6969C- 6970like preprocessor. This will simplify BIOS development process by 6971eliminating 6972the need for a separate preprocessing step during builds. On Windows, it 6973also 6974eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 6975features including full #define() macro support are still under 6976development. 6977These preprocessor directives are supported: 6978 #define 6979 #elif 6980 #else 6981 #endif 6982 #error 6983 #if 6984 #ifdef 6985 #ifndef 6986 #include 6987 #pragma message 6988 #undef 6989 #warning 6990In addition, these new command line options are supported: 6991 -D <symbol> Define symbol for preprocessor use 6992 -li Create preprocessed output file (*.i) 6993 -P Preprocess only and create preprocessor output file (*.i) 6994 6995Table Compiler: Fixed a problem where the equals operator within an 6996expression 6997did not work properly. 6998 6999Updated iASL to use the current versions of Bison/Flex. Updated the 7000Windows 7001project file to invoke these tools from the standard location. ACPICA BZ 7002904. 7003Versions supported: 7004 Flex for Windows: V2.5.4 7005 Bison for Windows: V2.4.1 7006 7007---------------------------------------- 700815 February 2012. Summary of changes for version 20120215: 7009 7010 70111) ACPICA Core Subsystem: 7012 7013There have been some major changes to the sleep/wake support code, as 7014described below (a - e). 7015 7016a) The AcpiLeaveSleepState has been split into two interfaces, similar to 7017AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 7018AcpiLeaveSleepStatePrep. This allows the host to perform actions between 7019the 7020time the _BFS method is called and the _WAK method is called. NOTE: all 7021hosts 7022must update their wake/resume code or else sleep/wake will not work 7023properly. 7024Rafael Wysocki. 7025 7026b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 7027_WAK 7028method. Some machines require that the GPEs are enabled before the _WAK 7029method 7030is executed. Thomas Renninger. 7031 7032c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 7033bit. 7034Some BIOS code assumes that WAK_STS will be cleared on resume and use it 7035to 7036determine whether the system is rebooting or resuming. Matthew Garrett. 7037 7038d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 7039Sleep) to 7040match the ACPI specification requirement. Rafael Wysocki. 7041 7042e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 7043registers within the V5 FADT. This support adds two new files: 7044hardware/hwesleep.c implements the support for the new registers. Moved 7045all 7046sleep/wake external interfaces to hardware/hwxfsleep.c. 7047 7048 7049Added a new OSL interface for ACPI table overrides, 7050AcpiOsPhysicalTableOverride. This interface allows the host to override a 7051table via a physical address, instead of the logical address required by 7052AcpiOsTableOverride. This simplifies the host implementation. Initial 7053implementation by Thomas Renninger. The ACPICA implementation creates a 7054single 7055shared function for table overrides that attempts both a logical and a 7056physical override. 7057 7058Expanded the OSL memory read/write interfaces to 64-bit data 7059(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 7060transfer support for GAS register structures passed to AcpiRead and 7061AcpiWrite. 7062 7063Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 7064custom 7065build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 7066model. 7067See the ACPICA reference for details. ACPICA BZ 942. This option removes 7068about 706910% of the code and 5% of the static data, and the following hardware 7070ACPI 7071features become unavailable: 7072 PM Event and Control registers 7073 SCI interrupt (and handler) 7074 Fixed Events 7075 General Purpose Events (GPEs) 7076 Global Lock 7077 ACPI PM timer 7078 FACS table (Waking vectors and Global Lock) 7079 7080Updated the unix tarball directory structure to match the ACPICA git 7081source 7082tree. This ensures that the generic unix makefiles work properly (in 7083generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 7084867. 7085 7086Updated the return value of the _REV predefined method to integer value 5 7087to 7088reflect ACPI 5.0 support. 7089 7090Moved the external ACPI PM timer interface prototypes to the public 7091acpixf.h 7092file where they belong. 7093 7094Example Code and Data Size: These are the sizes for the OS-independent 7095acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7096debug 7097version of the code includes the debug output trace mechanism and has a 7098much 7099larger code and data size. 7100 7101 Previous Release: 7102 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7103 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7104 Current Release: 7105 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7106 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7107 7108 71092) iASL Compiler/Disassembler and Tools: 7110 7111Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 7112descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 7113incorrectly displayed. 7114 7115AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 7116specification. 7117 7118---------------------------------------- 711911 January 2012. Summary of changes for version 20120111: 7120 7121 71221) ACPICA Core Subsystem: 7123 7124Implemented a new mechanism to allow host device drivers to check for 7125address 7126range conflicts with ACPI Operation Regions. Both SystemMemory and 7127SystemIO 7128address spaces are supported. A new external interface, 7129AcpiCheckAddressRange, 7130allows drivers to check an address range against the ACPI namespace. See 7131the 7132ACPICA reference for additional details. Adds one new file, 7133utilities/utaddress.c. Lin Ming, Bob Moore. 7134 7135Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 7136Control 7137and 7138Status registers, update the ACPI 5.0 flags, and update internal data 7139structures to handle an FADT larger than 256 bytes. The size of the ACPI 71405.0 7141FADT is 268 bytes. 7142 7143Updated all ACPICA copyrights and signons to 2012. Added the 2012 7144copyright to 7145all module headers and signons, including the standard Linux header. This 7146affects virtually every file in the ACPICA core subsystem, iASL compiler, 7147and 7148all ACPICA utilities. 7149 7150Example Code and Data Size: These are the sizes for the OS-independent 7151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7152debug 7153version of the code includes the debug output trace mechanism and has a 7154much 7155larger code and data size. 7156 7157 Previous Release: 7158 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7159 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7160 Current Release: 7161 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7162 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7163 7164 71652) iASL Compiler/Disassembler and Tools: 7166 7167Disassembler: fixed a problem with the automatic resource tag generation 7168support. Fixes a problem where the resource tags are inadvertently not 7169constructed if the table being disassembled contains external references 7170to 7171control methods. Moved the actual construction of the tags to after the 7172final 7173namespace is constructed (after 2nd parse is invoked due to external 7174control 7175method references.) ACPICA BZ 941. 7176 7177Table Compiler: Make all "generic" operators caseless. These are the 7178operators 7179like UINT8, String, etc. Making these caseless improves ease-of-use. 7180ACPICA BZ 7181934. 7182 7183---------------------------------------- 718423 November 2011. Summary of changes for version 20111123: 7185 71860) ACPI 5.0 Support: 7187 7188This release contains full support for the ACPI 5.0 specification, as 7189summarized below. 7190 7191Reduced Hardware Support: 7192------------------------- 7193 7194This support allows for ACPI systems without the usual ACPI hardware. 7195This 7196support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 7197will 7198not attempt to initialize or use any of the usual ACPI hardware. Note, 7199when 7200this flag is set, all of the following ACPI hardware is assumed to be not 7201present and is not initialized or accessed: 7202 7203 General Purpose Events (GPEs) 7204 Fixed Events (PM1a/PM1b and PM Control) 7205 Power Management Timer and Console Buttons (power/sleep) 7206 Real-time Clock Alarm 7207 Global Lock 7208 System Control Interrupt (SCI) 7209 The FACS is assumed to be non-existent 7210 7211ACPI Tables: 7212------------ 7213 7214All new tables and updates to existing tables are fully supported in the 7215ACPICA headers (for use by device drivers), the disassembler, and the 7216iASL 7217Data Table Compiler. ACPI 5.0 defines these new tables: 7218 7219 BGRT /* Boot Graphics Resource Table */ 7220 DRTM /* Dynamic Root of Trust for Measurement table */ 7221 FPDT /* Firmware Performance Data Table */ 7222 GTDT /* Generic Timer Description Table */ 7223 MPST /* Memory Power State Table */ 7224 PCCT /* Platform Communications Channel Table */ 7225 PMTT /* Platform Memory Topology Table */ 7226 RASF /* RAS Feature table */ 7227 7228Operation Regions/SpaceIDs: 7229--------------------------- 7230 7231All new operation regions are fully supported by the iASL compiler, the 7232disassembler, and the ACPICA runtime code (for dispatch to region 7233handlers.) 7234The new operation region Space IDs are: 7235 7236 GeneralPurposeIo 7237 GenericSerialBus 7238 7239Resource Descriptors: 7240--------------------- 7241 7242All new ASL resource descriptors are fully supported by the iASL 7243compiler, 7244the 7245ASL/AML disassembler, and the ACPICA runtime Resource Manager code 7246(including 7247all new predefined resource tags). New descriptors are: 7248 7249 FixedDma 7250 GpioIo 7251 GpioInt 7252 I2cSerialBus 7253 SpiSerialBus 7254 UartSerialBus 7255 7256ASL/AML Operators, New and Modified: 7257------------------------------------ 7258 7259One new operator is added, the Connection operator, which is used to 7260associate 7261a GeneralPurposeIo or GenericSerialBus resource descriptor with 7262individual 7263field objects within an operation region. Several new protocols are 7264associated 7265with the AccessAs operator. All are fully supported by the iASL compiler, 7266disassembler, and runtime ACPICA AML interpreter: 7267 7268 Connection // Declare Field Connection 7269attributes 7270 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 7271 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 7272Protocol 7273 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 7274 RawDataBuffer // Data type for Vendor Data 7275fields 7276 7277Predefined ASL/AML Objects: 7278--------------------------- 7279 7280All new predefined objects/control-methods are supported by the iASL 7281compiler 7282and the ACPICA runtime validation/repair (arguments and return values.) 7283New 7284predefined names include the following: 7285 7286Standard Predefined Names (Objects or Control Methods): 7287 _AEI, _CLS, _CPC, _CWS, _DEP, 7288 _DLM, _EVT, _GCP, _CRT, _GWS, 7289 _HRV, _PRE, _PSE, _SRT, _SUB. 7290 7291Resource Tags (Names used to access individual fields within resource 7292descriptors): 7293 _DBT, _DPL, _DRS, _END, _FLC, 7294 _IOR, _LIN, _MOD, _PAR, _PHA, 7295 _PIN, _PPI, _POL, _RXL, _SLV, 7296 _SPE, _STB, _TXL, _VEN. 7297 7298ACPICA External Interfaces: 7299--------------------------- 7300 7301Several new interfaces have been defined for use by ACPI-related device 7302drivers and other host OS services: 7303 7304AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 7305to 7306acquire and release AML mutexes that are defined in the DSDT/SSDT tables 7307provided by the BIOS. They are intended to be used in conjunction with 7308the 7309ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 7310mutual exclusion with the AML code/interpreter. 7311 7312AcpiGetEventResources: Returns the (formatted) resource descriptors as 7313defined 7314by the ACPI 5.0 _AEI object (ACPI Event Information). This object 7315provides 7316resource descriptors associated with hardware-reduced platform events, 7317similar 7318to the AcpiGetCurrentResources interface. 7319 7320Operation Region Handlers: For General Purpose IO and Generic Serial Bus 7321operation regions, information about the Connection() object and any 7322optional 7323length information is passed to the region handler within the Context 7324parameter. 7325 7326AcpiBufferToResource: This interface converts a raw AML buffer containing 7327a 7328resource template or resource descriptor to the ACPI_RESOURCE internal 7329format 7330suitable for use by device drivers. Can be used by an operation region 7331handler 7332to convert the Connection() buffer object into a ACPI_RESOURCE. 7333 7334Miscellaneous/Tools/TestSuites: 7335------------------------------- 7336 7337Support for extended _HID names (Four alpha characters instead of three). 7338Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 7339Support for ACPI 5.0 features in the ASLTS test suite. 7340Fully updated documentation (ACPICA and iASL reference documents.) 7341 7342ACPI Table Definition Language: 7343------------------------------- 7344 7345Support for this language was implemented and released as a subsystem of 7346the 7347iASL compiler in 2010. (See the iASL compiler User Guide.) 7348 7349 7350Non-ACPI 5.0 changes for this release: 7351-------------------------------------- 7352 73531) ACPICA Core Subsystem: 7354 7355Fix a problem with operation region declarations where a failure can 7356occur 7357if 7358the region name and an argument that evaluates to an object (such as the 7359region address) are in different namespace scopes. Lin Ming, ACPICA BZ 7360937. 7361 7362Do not abort an ACPI table load if an invalid space ID is found within. 7363This 7364will be caught later if the offending method is executed. ACPICA BZ 925. 7365 7366Fixed an issue with the FFixedHW space ID where the ID was not always 7367recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 7368 7369Fixed a problem with the 32-bit generation of the unix-specific OSL 7370(osunixxf.c). Lin Ming, ACPICA BZ 936. 7371 7372Several changes made to enable generation with the GCC 4.6 compiler. 7373ACPICA BZ 7374935. 7375 7376New error messages: Unsupported I/O requests (not 8/16/32 bit), and 7377Index/Bank 7378field registers out-of-range. 7379 73802) iASL Compiler/Disassembler and Tools: 7381 7382iASL: Implemented the __PATH__ operator, which returns the full pathname 7383of 7384the current source file. 7385 7386AcpiHelp: Automatically display expanded keyword information for all ASL 7387operators. 7388 7389Debugger: Add "Template" command to disassemble/dump resource template 7390buffers. 7391 7392Added a new master script to generate and execute the ASLTS test suite. 7393Automatically handles 32- and 64-bit generation. See tests/aslts.sh 7394 7395iASL: Fix problem with listing generation during processing of the 7396Switch() 7397operator where AML listing was disabled until the entire Switch block was 7398completed. 7399 7400iASL: Improve support for semicolon statement terminators. Fix "invalid 7401character" message for some cases when the semicolon is used. Semicolons 7402are 7403now allowed after every <Term> grammar element. ACPICA BZ 927. 7404 7405iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7406923. 7407 7408Disassembler: Fix problem with disassembly of the DataTableRegion 7409operator 7410where an inadvertent "Unhandled deferred opcode" message could be 7411generated. 7412 74133) Example Code and Data Size 7414 7415These are the sizes for the OS-independent acpica.lib produced by the 7416Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7417includes the debug output trace mechanism and has a much larger code and 7418data 7419size. 7420 7421 Previous Release: 7422 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7423 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7424 Current Release: 7425 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7426 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7427 7428---------------------------------------- 742922 September 2011. Summary of changes for version 20110922: 7430 74310) ACPI 5.0 News: 7432 7433Support for ACPI 5.0 in ACPICA has been underway for several months and 7434will 7435be released at the same time that ACPI 5.0 is officially released. 7436 7437The ACPI 5.0 specification is on track for release in the next few 7438months. 7439 74401) ACPICA Core Subsystem: 7441 7442Fixed a problem where the maximum sleep time for the Sleep() operator was 7443intended to be limited to two seconds, but was inadvertently limited to 744420 7445seconds instead. 7446 7447Linux and Unix makefiles: Added header file dependencies to ensure 7448correct 7449generation of ACPICA core code and utilities. Also simplified the 7450makefiles 7451considerably through the use of the vpath variable to specify search 7452paths. 7453ACPICA BZ 924. 7454 74552) iASL Compiler/Disassembler and Tools: 7456 7457iASL: Implemented support to check the access length for all fields 7458created to 7459access named Resource Descriptor fields. For example, if a resource field 7460is 7461defined to be two bits, a warning is issued if a CreateXxxxField() is 7462used 7463with an incorrect bit length. This is implemented for all current 7464resource 7465descriptor names. ACPICA BZ 930. 7466 7467Disassembler: Fixed a byte ordering problem with the output of 24-bit and 746856- 7469bit integers. 7470 7471iASL: Fixed a couple of issues associated with variable-length package 7472objects. 1) properly handle constants like One, Ones, Zero -- do not make 7473a 7474VAR_PACKAGE when these are used as a package length. 2) Allow the 7475VAR_PACKAGE 7476opcode (in addition to PACKAGE) when validating object types for 7477predefined 7478names. 7479 7480iASL: Emit statistics for all output files (instead of just the ASL input 7481and 7482AML output). Includes listings, hex files, etc. 7483 7484iASL: Added -G option to the table compiler to allow the compilation of 7485custom 7486ACPI tables. The only part of a table that is required is the standard 748736- 7488byte 7489ACPI header. 7490 7491AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7492headers), 7493which also adds correct 64-bit support. Also, now all output filenames 7494are 7495completely lower case. 7496 7497AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7498loading table files. A warning is issued for any such tables. The only 7499exception is an FADT. This also fixes a possible fault when attempting to 7500load 7501non-AML tables. ACPICA BZ 932. 7502 7503AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7504a 7505missing table terminator could cause a fault when using the -p option. 7506 7507AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7508statistics. 7509 75103) Example Code and Data Size 7511 7512These are the sizes for the OS-independent acpica.lib produced by the 7513Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7514includes the debug output trace mechanism and has a much larger code and 7515data 7516size. 7517 7518 Previous Release (VC 9.0): 7519 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7520 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7521 Current Release (VC 9.0): 7522 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7523 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7524 7525 7526---------------------------------------- 752723 June 2011. Summary of changes for version 20110623: 7528 75291) ACPI CA Core Subsystem: 7530 7531Updated the predefined name repair mechanism to not attempt repair of a 7532_TSS 7533return object if a _PSS object is present. We can only sort the _TSS 7534return 7535package if there is no _PSS within the same scope. This is because if 7536_PSS 7537is 7538present, the ACPI specification dictates that the _TSS Power Dissipation 7539field 7540is to be ignored, and therefore some BIOSs leave garbage values in the 7541_TSS 7542Power field(s). In this case, it is best to just return the _TSS package 7543as- 7544is. Reported by, and fixed with assistance from Fenghua Yu. 7545 7546Added an option to globally disable the control method return value 7547validation 7548and repair. This runtime option can be used to disable return value 7549repair 7550if 7551this is causing a problem on a particular machine. Also added an option 7552to 7553AcpiExec (-dr) to set this disable flag. 7554 7555All makefiles and project files: Major changes to improve generation of 7556ACPICA 7557tools. ACPICA BZ 912: 7558 Reduce default optimization levels to improve compatibility 7559 For Linux, add strict-aliasing=0 for gcc 4 7560 Cleanup and simplify use of command line defines 7561 Cleanup multithread library support 7562 Improve usage messages 7563 7564Linux-specific header: update handling of THREAD_ID and pthread. For the 756532- 7566bit case, improve casting to eliminate possible warnings, especially with 7567the 7568acpica tools. 7569 7570Example Code and Data Size: These are the sizes for the OS-independent 7571acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7572debug 7573version of the code includes the debug output trace mechanism and has a 7574much 7575larger code and data size. 7576 7577 Previous Release (VC 9.0): 7578 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7579 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7580 Current Release (VC 9.0): 7581 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7582 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7583 75842) iASL Compiler/Disassembler and Tools: 7585 7586With this release, a new utility named "acpihelp" has been added to the 7587ACPICA 7588package. This utility summarizes the ACPI specification chapters for the 7589ASL 7590and AML languages. It generates under Linux/Unix as well as Windows, and 7591provides the following functionality: 7592 Find/display ASL operator(s) -- with description and syntax. 7593 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7594 Find/display ACPI predefined name(s) -- with description, number 7595 of arguments, and the return value data type. 7596 Find/display AML opcode name(s) -- with opcode, arguments, and 7597grammar. 7598 Decode/display AML opcode -- with opcode name, arguments, and 7599grammar. 7600 7601Service Layers: Make multi-thread support configurable. Conditionally 7602compile 7603the multi-thread support so that threading libraries will not be linked 7604if 7605not 7606necessary. The only tool that requires multi-thread support is AcpiExec. 7607 7608iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7609of 7610Bison appear to want the interface to yyerror to be a const char * (or at 7611least this is a problem when generating iASL on some systems.) ACPICA BZ 7612923 7613Pierre Lejeune. 7614 7615Tools: Fix for systems where O_BINARY is not defined. Only used for 7616Windows 7617versions of the tools. 7618 7619---------------------------------------- 762027 May 2011. Summary of changes for version 20110527: 7621 76221) ACPI CA Core Subsystem: 7623 7624ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7625table 7626signature. Now, only allow SSDT, OEMx, and a null signature. History: 7627 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7628 (PSDT is now obsolete.) 7629 2) We added support for OEMx tables, signature "OEM" plus a fourth 7630 "don't care" character. 7631 3) Valid tables were encountered with a null signature, so we just 7632 gave up on validating the signature, (05/2008). 7633 4) We encountered non-AML tables such as the MADT, which caused 7634 interpreter errors and kernel faults. So now, we once again allow 7635 only SSDT, OEMx, and now, also a null signature. (05/2011). 7636 7637Added the missing _TDL predefined name to the global name list in order 7638to 7639enable validation. Affects both the core ACPICA code and the iASL 7640compiler. 7641 7642Example Code and Data Size: These are the sizes for the OS-independent 7643acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7644debug 7645version of the code includes the debug output trace mechanism and has a 7646much 7647larger code and data size. 7648 7649 Previous Release (VC 9.0): 7650 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7651 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7652 Current Release (VC 9.0): 7653 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7654 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7655 76562) iASL Compiler/Disassembler and Tools: 7657 7658Debugger/AcpiExec: Implemented support for "complex" method arguments on 7659the 7660debugger command line. This adds support beyond simple integers -- 7661including 7662Strings, Buffers, and Packages. Includes support for nested packages. 7663Increased the default command line buffer size to accommodate these 7664arguments. 7665See the ACPICA reference for details and syntax. ACPICA BZ 917. 7666 7667Debugger/AcpiExec: Implemented support for "default" method arguments for 7668the 7669Execute/Debug command. Now, the debugger will always invoke a control 7670method 7671with the required number of arguments -- even if the command line 7672specifies 7673none or insufficient arguments. It uses default integer values for any 7674missing 7675arguments. Also fixes a bug where only six method arguments maximum were 7676supported instead of the required seven. 7677 7678Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7679and 7680also return status in order to prevent buffer overruns. See the ACPICA 7681reference for details and syntax. ACPICA BZ 921 7682 7683iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7684makefiles to simplify support for the two different but similar parser 7685generators, bison and yacc. 7686 7687Updated the generic unix makefile for gcc 4. The default gcc version is 7688now 7689expected to be 4 or greater, since options specific to gcc 4 are used. 7690 7691---------------------------------------- 769213 April 2011. Summary of changes for version 20110413: 7693 76941) ACPI CA Core Subsystem: 7695 7696Implemented support to execute a so-called "orphan" _REG method under the 7697EC 7698device. This change will force the execution of a _REG method underneath 7699the 7700EC 7701device even if there is no corresponding operation region of type 7702EmbeddedControl. Fixes a problem seen on some machines and apparently is 7703compatible with Windows behavior. ACPICA BZ 875. 7704 7705Added more predefined methods that are eligible for automatic NULL 7706package 7707element removal. This change adds another group of predefined names to 7708the 7709list 7710of names that can be repaired by having NULL package elements dynamically 7711removed. This group are those methods that return a single variable- 7712length 7713package containing simple data types such as integers, buffers, strings. 7714This 7715includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7716_PSL, 7717_Sx, 7718and _TZD. ACPICA BZ 914. 7719 7720Split and segregated all internal global lock functions to a new file, 7721evglock.c. 7722 7723Updated internal address SpaceID for DataTable regions. Moved this 7724internal 7725space 7726id in preparation for ACPI 5.0 changes that will include some new space 7727IDs. 7728This 7729change should not affect user/host code. 7730 7731Example Code and Data Size: These are the sizes for the OS-independent 7732acpica.lib 7733produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7734version of 7735the code includes the debug output trace mechanism and has a much larger 7736code 7737and 7738data size. 7739 7740 Previous Release (VC 9.0): 7741 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7742 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7743 Current 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 77472) iASL Compiler/Disassembler and Tools: 7748 7749iASL/DTC: Major update for new grammar features. Allow generic data types 7750in 7751custom ACPI tables. Field names are now optional. Any line can be split 7752to 7753multiple lines using the continuation char (\). Large buffers now use 7754line- 7755continuation character(s) and no colon on the continuation lines. See the 7756grammar 7757update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7758Moore. 7759 7760iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7761statements. 7762Since the parser stuffs a "zero" as the return value for these statements 7763(due 7764to 7765the underlying AML grammar), they were seen as "return with value" by the 7766iASL 7767semantic checking. They are now seen correctly as "null" return 7768statements. 7769 7770iASL: Check if a_REG declaration has a corresponding Operation Region. 7771Adds a 7772check for each _REG to ensure that there is in fact a corresponding 7773operation 7774region declaration in the same scope. If not, the _REG method is not very 7775useful 7776since it probably won't be executed. ACPICA BZ 915. 7777 7778iASL/DTC: Finish support for expression evaluation. Added a new 7779expression 7780parser 7781that implements c-style operator precedence and parenthesization. ACPICA 7782bugzilla 7783908. 7784 7785Disassembler/DTC: Remove support for () and <> style comments in data 7786tables. 7787Now 7788that DTC has full expression support, we don't want to have comment 7789strings 7790that 7791start with a parentheses or a less-than symbol. Now, only the standard /* 7792and 7793// 7794comments are supported, as well as the bracket [] comments. 7795 7796AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7797"unusual" 7798headers in the acpidump file. Update the header validation to support 7799these 7800tables. Problem introduced in previous AcpiXtract version in the change 7801to 7802support "wrong checksum" error messages emitted by acpidump utility. 7803 7804iASL: Add a * option to generate all template files (as a synonym for 7805ALL) 7806as 7807in 7808"iasl -T *" or "iasl -T ALL". 7809 7810iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7811completely 7812abort the compiler on "fatal" errors, simply should abort the current 7813compile. 7814This allows multiple compiles with a single (possibly wildcard) compiler 7815invocation. 7816 7817---------------------------------------- 781816 March 2011. Summary of changes for version 20110316: 7819 78201) ACPI CA Core Subsystem: 7821 7822Fixed a problem caused by a _PRW method appearing at the namespace root 7823scope 7824during the setup of wake GPEs. A fault could occur if a _PRW directly 7825under 7826the 7827root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7828 7829Implemented support for "spurious" Global Lock interrupts. On some 7830systems, a 7831global lock interrupt can occur without the pending flag being set. Upon 7832a 7833GL 7834interrupt, we now ensure that a thread is actually waiting for the lock 7835before 7836signaling GL availability. Rafael Wysocki, Bob Moore. 7837 7838Example Code and Data Size: These are the sizes for the OS-independent 7839acpica.lib 7840produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7841version of 7842the code includes the debug output trace mechanism and has a much larger 7843code 7844and 7845data size. 7846 7847 Previous Release (VC 9.0): 7848 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7849 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7850 Current Release (VC 9.0): 7851 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7852 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7853 78542) iASL Compiler/Disassembler and Tools: 7855 7856Implemented full support for the "SLIC" ACPI table. Includes support in 7857the 7858header files, disassembler, table compiler, and template generator. Bob 7859Moore, 7860Lin Ming. 7861 7862AcpiXtract: Correctly handle embedded comments and messages from 7863AcpiDump. 7864Apparently some or all versions of acpidump will occasionally emit a 7865comment 7866like 7867"Wrong checksum", etc., into the dump file. This was causing problems for 7868AcpiXtract. ACPICA BZ 905. 7869 7870iASL: Fix the Linux makefile by removing an inadvertent double file 7871inclusion. 7872ACPICA BZ 913. 7873 7874AcpiExec: Update installation of operation region handlers. Install one 7875handler 7876for a user-defined address space. This is used by the ASL test suite 7877(ASLTS). 7878 7879---------------------------------------- 788011 February 2011. Summary of changes for version 20110211: 7881 78821) ACPI CA Core Subsystem: 7883 7884Added a mechanism to defer _REG methods for some early-installed 7885handlers. 7886Most user handlers should be installed before call to 7887AcpiEnableSubsystem. 7888However, Event handlers and region handlers should be installed after 7889AcpiInitializeObjects. Override handlers for the "default" regions should 7890be 7891installed early, however. This change executes all _REG methods for the 7892default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 7893chicken/egg issues between them. ACPICA BZ 848. 7894 7895Implemented an optimization for GPE detection. This optimization will 7896simply 7897ignore GPE registers that contain no enabled GPEs -- there is no need to 7898read the register since this information is available internally. This 7899becomes more important on machines with a large GPE space. ACPICA 7900bugzilla 7901884. Lin Ming. Suggestion from Joe Liu. 7902 7903Removed all use of the highly unreliable FADT revision field. The 7904revision 7905number in the FADT has been found to be completely unreliable and cannot 7906be 7907trusted. Only the actual table length can be used to infer the version. 7908This 7909change updates the ACPICA core and the disassembler so that both no 7910longer 7911even look at the FADT version and instead depend solely upon the FADT 7912length. 7913 7914Fix an unresolved name issue for the no-debug and no-error-message source 7915generation cases. The _AcpiModuleName was left undefined in these cases, 7916but 7917it is actually needed as a parameter to some interfaces. Define 7918_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 7919 7920Split several large files (makefiles and project files updated) 7921 utglobal.c -> utdecode.c 7922 dbcomds.c -> dbmethod.c dbnames.c 7923 dsopcode.c -> dsargs.c dscontrol.c 7924 dsload.c -> dsload2.c 7925 aslanalyze.c -> aslbtypes.c aslwalks.c 7926 7927Example Code and Data Size: These are the sizes for the OS-independent 7928acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7929debug version of the code includes the debug output trace mechanism and 7930has 7931a much larger code and data size. 7932 7933 Previous Release (VC 9.0): 7934 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7935 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7936 Current Release (VC 9.0): 7937 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7938 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7939 79402) iASL Compiler/Disassembler and Tools: 7941 7942iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 7943These are useful C-style macros with the standard definitions. ACPICA 7944bugzilla 898. 7945 7946iASL/DTC: Added support for integer expressions and labels. Support for 7947full 7948expressions for all integer fields in all ACPI tables. Support for labels 7949in 7950"generic" portions of tables such as UEFI. See the iASL reference manual. 7951 7952Debugger: Added a command to display the status of global handlers. The 7953"handlers" command will display op region, fixed event, and miscellaneous 7954global handlers. installation status -- and for op regions, whether 7955default 7956or user-installed handler will be used. 7957 7958iASL: Warn if reserved method incorrectly returns a value. Many 7959predefined 7960names are defined such that they do not return a value. If implemented as 7961a 7962method, issue a warning if such a name explicitly returns a value. ACPICA 7963Bugzilla 855. 7964 7965iASL: Added detection of GPE method name conflicts. Detects a conflict 7966where 7967there are two GPE methods of the form _Lxy and _Exy in the same scope. 7968(For 7969example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 7970 7971iASL/DTC: Fixed a couple input scanner issues with comments and line 7972numbers. Comment remover could get confused and miss a comment ending. 7973Fixed 7974a problem with line counter maintenance. 7975 7976iASL/DTC: Reduced the severity of some errors from fatal to error. There 7977is 7978no need to abort on simple errors within a field definition. 7979 7980Debugger: Simplified the output of the help command. All help output now 7981in 7982a single screen, instead of help subcommands. ACPICA Bugzilla 897. 7983 7984---------------------------------------- 798512 January 2011. Summary of changes for version 20110112: 7986 79871) ACPI CA Core Subsystem: 7988 7989Fixed a race condition between method execution and namespace walks that 7990can 7991possibly cause a fault. The problem was apparently introduced in version 799220100528 as a result of a performance optimization that reduces the 7993number 7994of 7995namespace walks upon method exit by using the delete_namespace_subtree 7996function instead of the delete_namespace_by_owner function used 7997previously. 7998Bug is a missing namespace lock in the delete_namespace_subtree function. 7999dana.myers@oracle.com 8000 8001Fixed several issues and a possible fault with the automatic "serialized" 8002method support. History: This support changes a method to "serialized" on 8003the 8004fly if the method generates an AE_ALREADY_EXISTS error, indicating the 8005possibility that it cannot handle reentrancy. This fix repairs a couple 8006of 8007issues seen in the field, especially on machines with many cores: 8008 8009 1) Delete method children only upon the exit of the last thread, 8010 so as to not delete objects out from under other running threads 8011 (and possibly causing a fault.) 8012 2) Set the "serialized" bit for the method only upon the exit of the 8013 Last thread, so as to not cause deadlock when running threads 8014 attempt to exit. 8015 3) Cleanup the use of the AML "MethodFlags" and internal method flags 8016 so that there is no longer any confusion between the two. 8017 8018 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 8019 8020Debugger: Now lock the namespace for duration of a namespace dump. 8021Prevents 8022issues if the namespace is changing dynamically underneath the debugger. 8023Especially affects temporary namespace nodes, since the debugger displays 8024these also. 8025 8026Updated the ordering of include files. The ACPICA headers should appear 8027before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 8028set 8029any necessary compiler-specific defines, etc. Affects the ACPI-related 8030tools 8031and utilities. 8032 8033Updated all ACPICA copyrights and signons to 2011. Added the 2011 8034copyright 8035to all module headers and signons, including the Linux header. This 8036affects 8037virtually every file in the ACPICA core subsystem, iASL compiler, and all 8038utilities. 8039 8040Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 8041project files for VC++ 6.0 are now obsolete. New project files can be 8042found 8043under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 8044details. 8045 8046Example Code and Data Size: These are the sizes for the OS-independent 8047acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8048debug version of the code includes the debug output trace mechanism and 8049has a 8050much larger code and data size. 8051 8052 Previous Release (VC 6.0): 8053 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8054 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8055 Current Release (VC 9.0): 8056 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8057 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8058 80592) iASL Compiler/Disassembler and Tools: 8060 8061iASL: Added generic data types to the Data Table compiler. Add "generic" 8062data 8063types such as UINT32, String, Unicode, etc., to simplify the generation 8064of 8065platform-defined tables such as UEFI. Lin Ming. 8066 8067iASL: Added listing support for the Data Table Compiler. Adds listing 8068support 8069(-l) to display actual binary output for each line of input code. 8070 8071---------------------------------------- 807209 December 2010. Summary of changes for version 20101209: 8073 80741) ACPI CA Core Subsystem: 8075 8076Completed the major overhaul of the GPE support code that was begun in 8077July 80782010. Major features include: removal of _PRW execution in ACPICA (host 8079executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 8080changes to existing interfaces, simplification of GPE handler operation, 8081and 8082a handful of new interfaces: 8083 8084 AcpiUpdateAllGpes 8085 AcpiFinishGpe 8086 AcpiSetupGpeForWake 8087 AcpiSetGpeWakeMask 8088 One new file, evxfgpe.c to consolidate all external GPE interfaces. 8089 8090See the ACPICA Programmer Reference for full details and programming 8091information. See the new section 4.4 "General Purpose Event (GPE) 8092Support" 8093for a full overview, and section 8.7 "ACPI General Purpose Event 8094Management" 8095for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 8096Ming, 8097Bob Moore, Rafael Wysocki. 8098 8099Implemented a new GPE feature for Windows compatibility, the "Implicit 8100Wake 8101GPE Notify". This feature will automatically issue a Notify(2) on a 8102device 8103when a Wake GPE is received if there is no corresponding GPE method or 8104handler. ACPICA BZ 870. 8105 8106Fixed a problem with the Scope() operator during table parse and load 8107phase. 8108During load phase (table load or method execution), the scope operator 8109should 8110not enter the target into the namespace. Instead, it should open a new 8111scope 8112at the target location. Linux BZ 19462, ACPICA BZ 882. 8113 8114Example Code and Data Size: These are the sizes for the OS-independent 8115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8116debug version of the code includes the debug output trace mechanism and 8117has a 8118much larger code and data size. 8119 8120 Previous Release: 8121 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8122 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8123 Current Release: 8124 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8125 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8126 81272) iASL Compiler/Disassembler and Tools: 8128 8129iASL: Relax the alphanumeric restriction on _CID strings. These strings 8130are 8131"bus-specific" per the ACPI specification, and therefore any characters 8132are 8133acceptable. The only checks that can be performed are for a null string 8134and 8135perhaps for a leading asterisk. ACPICA BZ 886. 8136 8137iASL: Fixed a problem where a syntax error that caused a premature EOF 8138condition on the source file emitted a very confusing error message. The 8139premature EOF is now detected correctly. ACPICA BZ 891. 8140 8141Disassembler: Decode the AccessSize within a Generic Address Structure 8142(byte 8143access, word access, etc.) Note, this field does not allow arbitrary bit 8144access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 8145 8146New: AcpiNames utility - Example namespace dump utility. Shows an example 8147of 8148ACPICA configuration for a minimal namespace dump utility. Uses table and 8149namespace managers, but no AML interpreter. Does not add any 8150functionality 8151over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 8152partition and configure ACPICA. ACPICA BZ 883. 8153 8154AML Debugger: Increased the debugger buffer size for method return 8155objects. 8156Was 4K, increased to 16K. Also enhanced error messages for debugger 8157method 8158execution, including the buffer overflow case. 8159 8160---------------------------------------- 816113 October 2010. Summary of changes for version 20101013: 8162 81631) ACPI CA Core Subsystem: 8164 8165Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 8166now 8167clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 8168HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 8169 8170Changed the type of the predefined namespace object _TZ from ThermalZone 8171to 8172Device. This was found to be confusing to the host software that 8173processes 8174the various thermal zones, since _TZ is not really a ThermalZone. 8175However, 8176a 8177Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 8178Zhang. 8179 8180Added Windows Vista SP2 to the list of supported _OSI strings. The actual 8181string is "Windows 2006 SP2". 8182 8183Eliminated duplicate code in AcpiUtExecute* functions. Now that the 8184nsrepair 8185code automatically repairs _HID-related strings, this type of code is no 8186longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 8187878. 8188 8189Example Code and Data Size: These are the sizes for the OS-independent 8190acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8191debug version of the code includes the debug output trace mechanism and 8192has a 8193much larger code and data size. 8194 8195 Previous Release: 8196 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8197 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8198 Current Release: 8199 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8200 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8201 82022) iASL Compiler/Disassembler and Tools: 8203 8204iASL: Implemented additional compile-time validation for _HID strings. 8205The 8206non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 8207length 8208of 8209the string must be exactly seven or eight characters. For both _HID and 8210_CID 8211strings, all characters must be alphanumeric. ACPICA BZ 874. 8212 8213iASL: Allow certain "null" resource descriptors. Some BIOS code creates 8214descriptors that are mostly or all zeros, with the expectation that they 8215will 8216be filled in at runtime. iASL now allows this as long as there is a 8217"resource 8218tag" (name) associated with the descriptor, which gives the ASL a handle 8219needed to modify the descriptor. ACPICA BZ 873. 8220 8221Added single-thread support to the generic Unix application OSL. 8222Primarily 8223for iASL support, this change removes the use of semaphores in the 8224single- 8225threaded ACPICA tools/applications - increasing performance. The 8226_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 8227option. ACPICA BZ 879. 8228 8229AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 8230support 8231for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 8232 8233iASL: Moved all compiler messages to a new file, aslmessages.h. 8234 8235---------------------------------------- 823615 September 2010. Summary of changes for version 20100915: 8237 82381) ACPI CA Core Subsystem: 8239 8240Removed the AcpiOsDerivePciId OSL interface. The various host 8241implementations 8242of this function were not OS-dependent and are now obsolete and can be 8243removed from all host OSLs. This function has been replaced by 8244AcpiHwDerivePciId, which is now part of the ACPICA core code. 8245AcpiHwDerivePciId has been implemented without recursion. Adds one new 8246module, hwpci.c. ACPICA BZ 857. 8247 8248Implemented a dynamic repair for _HID and _CID strings. The following 8249problems are now repaired at runtime: 1) Remove a leading asterisk in the 8250string, and 2) the entire string is uppercased. Both repairs are in 8251accordance with the ACPI specification and will simplify host driver 8252code. 8253ACPICA BZ 871. 8254 8255The ACPI_THREAD_ID type is no longer configurable, internally it is now 8256always UINT64. This simplifies the ACPICA code, especially any printf 8257output. 8258UINT64 is the only common data type for all thread_id types across all 8259operating systems. It is now up to the host OSL to cast the native 8260thread_id 8261type to UINT64 before returning the value to ACPICA (via 8262AcpiOsGetThreadId). 8263Lin Ming, Bob Moore. 8264 8265Added the ACPI_INLINE type to enhance the ACPICA configuration. The 8266"inline" 8267keyword is not standard across compilers, and this type allows inline to 8268be 8269configured on a per-compiler basis. Lin Ming. 8270 8271Made the system global AcpiGbl_SystemAwakeAndRunning publicly 8272available. 8273Added an extern for this boolean in acpixf.h. Some hosts utilize this 8274value 8275during suspend/restore operations. ACPICA BZ 869. 8276 8277All code that implements error/warning messages with the "ACPI:" prefix 8278has 8279been moved to a new module, utxferror.c. 8280 8281The UINT64_OVERLAY was moved to utmath.c, which is the only module where 8282it 8283is used. ACPICA BZ 829. Lin Ming, Bob Moore. 8284 8285Example Code and Data Size: These are the sizes for the OS-independent 8286acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8287debug version of the code includes the debug output trace mechanism and 8288has a 8289much larger code and data size. 8290 8291 Previous Release: 8292 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8293 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8294 Current Release: 8295 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8296 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8297 82982) iASL Compiler/Disassembler and Tools: 8299 8300iASL/Disassembler: Write ACPI errors to stderr instead of the output 8301file. 8302This keeps the output files free of random error messages that may 8303originate 8304from within the namespace/interpreter code. Used this opportunity to 8305merge 8306all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 8307866. Lin Ming, Bob Moore. 8308 8309Tools: update some printfs for ansi warnings on size_t. Handle width 8310change 8311of size_t on 32-bit versus 64-bit generations. Lin Ming. 8312 8313---------------------------------------- 831406 August 2010. Summary of changes for version 20100806: 8315 83161) ACPI CA Core Subsystem: 8317 8318Designed and implemented a new host interface to the _OSI support code. 8319This 8320will allow the host to dynamically add or remove multiple _OSI strings, 8321as 8322well as install an optional handler that is called for each _OSI 8323invocation. 8324Also added a new AML debugger command, 'osi' to display and modify the 8325global 8326_OSI string table, and test support in the AcpiExec utility. See the 8327ACPICA 8328reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 8329New Functions: 8330 AcpiInstallInterface - Add an _OSI string. 8331 AcpiRemoveInterface - Delete an _OSI string. 8332 AcpiInstallInterfaceHandler - Install optional _OSI handler. 8333Obsolete Functions: 8334 AcpiOsValidateInterface - no longer used. 8335New Files: 8336 source/components/utilities/utosi.c 8337 8338Re-introduced the support to enable multi-byte transfers for Embedded 8339Controller (EC) operation regions. A reported problem was found to be a 8340bug 8341in the host OS, not in the multi-byte support. Previously, the maximum 8342data 8343size passed to the EC operation region handler was a single byte. There 8344are 8345often EC Fields larger than one byte that need to be transferred, and it 8346is 8347useful for the EC driver to lock these as a single transaction. This 8348change 8349enables single transfers larger than 8 bits. This effectively changes the 8350access to the EC space from ByteAcc to AnyAcc, and will probably require 8351changes to the host OS Embedded Controller driver to enable 16/32/64/256- 8352bit 8353transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 8354 8355Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 8356prototype in acpiosxf.h had the output value pointer as a (void *). 8357It should be a (UINT64 *). This may affect some host OSL code. 8358 8359Fixed a couple problems with the recently modified Linux makefiles for 8360iASL 8361and AcpiExec. These new makefiles place the generated object files in the 8362local directory so that there can be no collisions between the files that 8363are 8364shared between them that are compiled with different options. 8365 8366Example Code and Data Size: These are the sizes for the OS-independent 8367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8368debug version of the code includes the debug output trace mechanism and 8369has a 8370much larger code and data size. 8371 8372 Previous Release: 8373 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8374 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8375 Current Release: 8376 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8377 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8378 83792) iASL Compiler/Disassembler and Tools: 8380 8381iASL/Disassembler: Added a new option (-da, "disassemble all") to load 8382the 8383namespace from and disassemble an entire group of AML files. Useful for 8384loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 8385and 8386disassembling with one simple command. ACPICA BZ 865. Lin Ming. 8387 8388iASL: Allow multiple invocations of -e option. This change allows 8389multiple 8390uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 8391834. 8392Lin Ming. 8393 8394---------------------------------------- 839502 July 2010. Summary of changes for version 20100702: 8396 83971) ACPI CA Core Subsystem: 8398 8399Implemented several updates to the recently added GPE reference count 8400support. The model for "wake" GPEs is changing to give the host OS 8401complete 8402control of these GPEs. Eventually, the ACPICA core will not execute any 8403_PRW 8404methods, since the host already must execute them. Also, additional 8405changes 8406were made to help ensure that the reference counts are kept in proper 8407synchronization with reality. Rafael J. Wysocki. 8408 84091) Ensure that GPEs are not enabled twice during initialization. 84102) Ensure that GPE enable masks stay in sync with the reference count. 84113) Do not inadvertently enable GPEs when writing GPE registers. 84124) Remove the internal wake reference counter and add new AcpiGpeWakeup 8413interface. This interface will set or clear individual GPEs for wakeup. 84145) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8415interfaces 8416are now used for "runtime" GPEs only. 8417 8418Changed the behavior of the GPE install/remove handler interfaces. The 8419GPE 8420is 8421no longer disabled during this process, as it was found to cause problems 8422on 8423some machines. Rafael J. Wysocki. 8424 8425Reverted a change introduced in version 20100528 to enable Embedded 8426Controller multi-byte transfers. This change was found to cause problems 8427with 8428Index Fields and possibly Bank Fields. It will be reintroduced when these 8429problems have been resolved. 8430 8431Fixed a problem with references to Alias objects within Package Objects. 8432A 8433reference to an Alias within the definition of a Package was not always 8434resolved properly. Aliases to objects like Processors, Thermal zones, 8435etc. 8436were resolved to the actual object instead of a reference to the object 8437as 8438it 8439should be. Package objects are only allowed to contain integer, string, 8440buffer, package, and reference objects. Redhat bugzilla 608648. 8441 8442Example Code and Data Size: These are the sizes for the OS-independent 8443acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8444debug version of the code includes the debug output trace mechanism and 8445has a 8446much larger code and data size. 8447 8448 Previous Release: 8449 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8450 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8451 Current Release: 8452 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8453 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8454 84552) iASL Compiler/Disassembler and Tools: 8456 8457iASL: Implemented a new compiler subsystem to allow definition and 8458compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8459These 8460are called "ACPI Data Tables", and the new compiler is the "Data Table 8461Compiler". This compiler is intended to simplify the existing error-prone 8462process of creating these tables for the BIOS, as well as allowing the 8463disassembly, modification, recompilation, and override of existing ACPI 8464data 8465tables. See the iASL User Guide for detailed information. 8466 8467iASL: Implemented a new Template Generator option in support of the new 8468Data 8469Table Compiler. This option will create examples of all known ACPI tables 8470that can be used as the basis for table development. See the iASL 8471documentation and the -T option. 8472 8473Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8474Descriptor Table). 8475 8476Updated the Linux makefiles for iASL and AcpiExec to place the generated 8477object files in the local directory so that there can be no collisions 8478between the shared files between them that are generated with different 8479options. 8480 8481Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8482Use 8483the #define __APPLE__ to enable this support. 8484 8485---------------------------------------- 848628 May 2010. Summary of changes for version 20100528: 8487 8488Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8489available at www.acpi.info. This is primarily an errata release. 8490 84911) ACPI CA Core Subsystem: 8492 8493Undefined ACPI tables: We are looking for the definitions for the 8494following 8495ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8496 8497Implemented support to enable multi-byte transfers for Embedded 8498Controller 8499(EC) operation regions. Previously, the maximum data size passed to the 8500EC 8501operation region handler was a single byte. There are often EC Fields 8502larger 8503than one byte that need to be transferred, and it is useful for the EC 8504driver 8505to lock these as a single transaction. This change enables single 8506transfers 8507larger than 8 bits. This effectively changes the access to the EC space 8508from 8509ByteAcc to AnyAcc, and will probably require changes to the host OS 8510Embedded 8511Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8512bit 8513transfers. Alexey Starikovskiy, Lin Ming 8514 8515Implemented a performance enhancement for namespace search and access. 8516This 8517change enhances the performance of namespace searches and walks by adding 8518a 8519backpointer to the parent in each namespace node. On large namespaces, 8520this 8521change can improve overall ACPI performance by up to 9X. Adding a pointer 8522to 8523each namespace node increases the overall size of the internal namespace 8524by 8525about 5%, since each namespace entry usually consists of both a namespace 8526node and an ACPI operand object. However, this is the first growth of the 8527namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8528 8529Implemented a performance optimization that reduces the number of 8530namespace 8531walks. On control method exit, only walk the namespace if the method is 8532known 8533to have created namespace objects outside of its local scope. Previously, 8534the 8535entire namespace was traversed on each control method exit. This change 8536can 8537improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8538Moore. 8539 8540Added support to truncate I/O addresses to 16 bits for Windows 8541compatibility. 8542Some ASL code has been seen in the field that inadvertently has bits set 8543above bit 15. This feature is optional and is enabled if the BIOS 8544requests 8545any Windows OSI strings. It can also be enabled by the host OS. Matthew 8546Garrett, Bob Moore. 8547 8548Added support to limit the maximum time for the ASL Sleep() operator. To 8549prevent accidental deep sleeps, limit the maximum time that Sleep() will 8550actually sleep. Configurable, the default maximum is two seconds. ACPICA 8551bugzilla 854. 8552 8553Added run-time validation support for the _WDG and_WED Microsoft 8554predefined 8555methods. These objects are defined by "Windows Instrumentation", and are 8556not 8557part of the ACPI spec. ACPICA BZ 860. 8558 8559Expanded all statistic counters used during namespace and device 8560initialization from 16 to 32 bits in order to support very large 8561namespaces. 8562 8563Replaced all instances of %d in printf format specifiers with %u since 8564nearly 8565all integers in ACPICA are unsigned. 8566 8567Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8568returned 8569as AE_NO_HANDLER. 8570 8571Example Code and Data Size: These are the sizes for the OS-independent 8572acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8573debug version of the code includes the debug output trace mechanism and 8574has a 8575much larger code and data size. 8576 8577 Previous Release: 8578 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8579 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8580 Current Release: 8581 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8582 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8583 85842) iASL Compiler/Disassembler and Tools: 8585 8586iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8587methods. These objects are defined by "Windows Instrumentation", and are 8588not 8589part of the ACPI spec. ACPICA BZ 860. 8590 8591AcpiExec: added option to disable the memory tracking mechanism. The -dt 8592option will disable the tracking mechanism, which improves performance 8593considerably. 8594 8595AcpiExec: Restructured the command line options into -d (disable) and -e 8596(enable) options. 8597 8598---------------------------------------- 859928 April 2010. Summary of changes for version 20100428: 8600 86011) ACPI CA Core Subsystem: 8602 8603Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8604including FADT-based and GPE Block Devices, execute any _PRW methods in 8605the 8606new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8607runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8608immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8609Devices. Provides compatibility with other ACPI implementations. Two new 8610files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8611Moore. 8612 8613Fixed a regression introduced in version 20100331 within the table 8614manager 8615where initial table loading could fail. This was introduced in the fix 8616for 8617AcpiReallocateRootTable. Also, renamed some of fields in the table 8618manager 8619data structures to clarify their meaning and use. 8620 8621Fixed a possible allocation overrun during internal object copy in 8622AcpiUtCopySimpleObject. The original code did not correctly handle the 8623case 8624where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8625847. 8626 8627Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8628possible access beyond end-of-allocation. Also, now fully validate 8629descriptor 8630(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8631 8632Example Code and Data Size: These are the sizes for the OS-independent 8633acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8634debug version of the code includes the debug output trace mechanism and 8635has a 8636much larger code and data size. 8637 8638 Previous Release: 8639 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8640 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8641 Current Release: 8642 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8643 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8644 86452) iASL Compiler/Disassembler and Tools: 8646 8647iASL: Implemented Min/Max/Len/Gran validation for address resource 8648descriptors. This change implements validation for the address fields 8649that 8650are common to all address-type resource descriptors. These checks are 8651implemented: Checks for valid Min/Max, length within the Min/Max window, 8652valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8653per 8654table 6-40 in the ACPI 4.0a specification. Also split the large 8655aslrestype1.c 8656and aslrestype2.c files into five new files. ACPICA BZ 840. 8657 8658iASL: Added support for the _Wxx predefined names. This support was 8659missing 8660and these names were not recognized by the compiler as valid predefined 8661names. ACPICA BZ 851. 8662 8663iASL: Added an error for all predefined names that are defined to return 8664no 8665value and thus must be implemented as Control Methods. These include all 8666of 8667the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8668names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8669 8670iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8671an 8672ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8673be 8674dynamically loaded via the Load() operator. Also cleaned up output for 8675the 8676- 8677ta and -tc options. ACPICA BZ 853. 8678 8679Tests: Added a new file with examples of extended iASL error checking. 8680Demonstrates the advanced error checking ability of the iASL compiler. 8681Available at tests/misc/badcode.asl. 8682 8683---------------------------------------- 868431 March 2010. Summary of changes for version 20100331: 8685 86861) ACPI CA Core Subsystem: 8687 8688Completed a major update for the GPE support in order to improve support 8689for 8690shared GPEs and to simplify both host OS and ACPICA code. Added a 8691reference 8692count mechanism to support shared GPEs that require multiple device 8693drivers. 8694Several external interfaces have changed. One external interface has been 8695removed. One new external interface was added. Most of the GPE external 8696interfaces now use the GPE spinlock instead of the events mutex (and the 8697Flags parameter for many GPE interfaces has been removed.) See the 8698updated 8699ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8700Rafael 8701Wysocki. ACPICA BZ 831. 8702 8703Changed: 8704 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8705Removed: 8706 AcpiSetGpeType 8707New: 8708 AcpiSetGpe 8709 8710Implemented write support for DataTable operation regions. These regions 8711are 8712defined via the DataTableRegion() operator. Previously, only read support 8713was 8714implemented. The ACPI specification allows DataTableRegions to be 8715read/write, 8716however. 8717 8718Implemented a new subsystem option to force a copy of the DSDT to local 8719memory. Optionally copy the entire DSDT to local memory (instead of 8720simply 8721mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8722replace 8723the original DSDT, creating the need for this option. Default is FALSE, 8724do 8725not copy the DSDT. 8726 8727Implemented detection of a corrupted or replaced DSDT. This change adds 8728support to detect a DSDT that has been corrupted and/or replaced from 8729outside 8730the OS (by firmware). This is typically catastrophic for the system, but 8731has 8732been seen on some machines. Once this problem has been detected, the DSDT 8733copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8734 8735Fixed two problems with AcpiReallocateRootTable during the root table 8736copy. 8737When copying the root table to the new allocation, the length used was 8738incorrect. The new size was used instead of the current table size, 8739meaning 8740too much data was copied. Also, the count of available slots for ACPI 8741tables 8742was not set correctly. Alexey Starikovskiy, Bob Moore. 8743 8744Example Code and Data Size: These are the sizes for the OS-independent 8745acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8746debug version of the code includes the debug output trace mechanism and 8747has a 8748much larger code and data size. 8749 8750 Previous Release: 8751 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8752 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8753 Current Release: 8754 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8755 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8756 87572) iASL Compiler/Disassembler and Tools: 8758 8759iASL: Implement limited typechecking for values returned from predefined 8760control methods. The type of any returned static (unnamed) object is now 8761validated. For example, Return(1). ACPICA BZ 786. 8762 8763iASL: Fixed a predefined name object verification regression. Fixes a 8764problem 8765introduced in version 20100304. An error is incorrectly generated if a 8766predefined name is declared as a static named object with a value defined 8767using the keywords "Zero", "One", or "Ones". Lin Ming. 8768 8769iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8770by 8771reducing the requested registry access rights. ACPICA BZ 842. 8772 8773Disassembler: fixed a possible fault when generating External() 8774statements. 8775Introduced in commit ae7d6fd: Properly handle externals with parent- 8776prefix 8777(carat). Fixes a string length allocation calculation. Lin Ming. 8778 8779---------------------------------------- 878004 March 2010. Summary of changes for version 20100304: 8781 87821) ACPI CA Core Subsystem: 8783 8784Fixed a possible problem with the AML Mutex handling function 8785AcpiExReleaseMutex where the function could fault under the very rare 8786condition when the interpreter has blocked, the interpreter lock is 8787released, 8788the interpreter is then reentered via the same thread, and attempts to 8789acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8790Lin 8791Ming. 8792 8793Implemented additional configuration support for the AML "Debug Object". 8794Output from the debug object can now be enabled via a global variable, 8795AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8796debugging. 8797This debug output is now available in the release version of ACPICA 8798instead 8799of just the debug version. Also, the entire debug output module can now 8800be 8801configured out of the ACPICA build if desired. One new file added, 8802executer/exdebug.c. Lin Ming, Bob Moore. 8803 8804Added header support for the ACPI MCHI table (Management Controller Host 8805Interface Table). This table was added in ACPI 4.0, but the defining 8806document 8807has only recently become available. 8808 8809Standardized output of integer values for ACPICA warnings/errors. Always 8810use 88110x prefix for hex output, always use %u for unsigned integer decimal 8812output. 8813Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8814400 8815invocations.) These invocations were converted from the original 8816ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8817 8818Example Code and Data Size: These are the sizes for the OS-independent 8819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8820debug version of the code includes the debug output trace mechanism and 8821has a 8822much larger code and data size. 8823 8824 Previous Release: 8825 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8826 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8827 Current Release: 8828 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8829 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8830 88312) iASL Compiler/Disassembler and Tools: 8832 8833iASL: Implemented typechecking support for static (non-control method) 8834predefined named objects that are declared with the Name() operator. For 8835example, the type of this object is now validated to be of type Integer: 8836Name(_BBN, 1). This change migrates the compiler to using the core 8837predefined 8838name table instead of maintaining a local version. Added a new file, 8839aslpredef.c. ACPICA BZ 832. 8840 8841Disassembler: Added support for the ACPI 4.0 MCHI table. 8842 8843---------------------------------------- 884421 January 2010. Summary of changes for version 20100121: 8845 88461) ACPI CA Core Subsystem: 8847 8848Added the 2010 copyright to all module headers and signons. This affects 8849virtually every file in the ACPICA core subsystem, the iASL compiler, the 8850tools/utilities, and the test suites. 8851 8852Implemented a change to the AcpiGetDevices interface to eliminate 8853unnecessary 8854invocations of the _STA method. In the case where a specific _HID is 8855requested, do not run _STA until a _HID match is found. This eliminates 8856potentially dozens of _STA calls during a search for a particular 8857device/HID, 8858which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8859 8860Implemented an additional repair for predefined method return values. 8861Attempt 8862to repair unexpected NULL elements within returned Package objects. 8863Create 8864an 8865Integer of value zero, a NULL String, or a zero-length Buffer as 8866appropriate. 8867ACPICA BZ 818. Lin Ming, Bob Moore. 8868 8869Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8870the 8871code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8872(with 887364-bit AML integers). It is now obsolete and this change removes it from 8874the 8875ACPICA code base, replaced by UINT64. The original typedef has been 8876retained 8877for now for compatibility with existing device driver code. ACPICA BZ 8878824. 8879 8880Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8881in 8882the parse tree object. 8883 8884Added additional warning options for the gcc-4 generation. Updated the 8885source 8886accordingly. This includes some code restructuring to eliminate 8887unreachable 8888code, elimination of some gotos, elimination of unused return values, 8889some 8890additional casting, and removal of redundant declarations. 8891 8892Example Code and Data Size: These are the sizes for the OS-independent 8893acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8894debug version of the code includes the debug output trace mechanism and 8895has a 8896much larger code and data size. 8897 8898 Previous Release: 8899 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8900 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8901 Current Release: 8902 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8903 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8904 89052) iASL Compiler/Disassembler and Tools: 8906 8907No functional changes for this release. 8908 8909---------------------------------------- 891014 December 2009. Summary of changes for version 20091214: 8911 89121) ACPI CA Core Subsystem: 8913 8914Enhanced automatic data type conversions for predefined name repairs. 8915This 8916change expands the automatic repairs/conversions for predefined name 8917return 8918values to make Integers, Strings, and Buffers fully interchangeable. 8919Also, 8920a 8921Buffer can be converted to a Package of Integers if necessary. The 8922nsrepair.c 8923module was completely restructured. Lin Ming, Bob Moore. 8924 8925Implemented automatic removal of null package elements during predefined 8926name 8927repairs. This change will automatically remove embedded and trailing NULL 8928package elements from returned package objects that are defined to 8929contain 8930a 8931variable number of sub-packages. The driver is then presented with a 8932package 8933with no null elements to deal with. ACPICA BZ 819. 8934 8935Implemented a repair for the predefined _FDE and _GTM names. The expected 8936return value for both names is a Buffer of 5 DWORDs. This repair fixes 8937two 8938possible problems (both seen in the field), where a package of integers 8939is 8940returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 8941Kim. 8942 8943Implemented additional module-level code support. This change will 8944properly 8945execute module-level code that is not at the root of the namespace (under 8946a 8947Device object, etc.). Now executes the code within the current scope 8948instead 8949of the root. ACPICA BZ 762. Lin Ming. 8950 8951Fixed possible mutex acquisition errors when running _REG methods. Fixes 8952a 8953problem where mutex errors can occur when running a _REG method that is 8954in 8955the same scope as a method-defined operation region or an operation 8956region 8957under a module-level IF block. This type of code is rare, so the problem 8958has 8959not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 8960 8961Fixed a possible memory leak during module-level code execution. An 8962object 8963could be leaked for each block of executed module-level code if the 8964interpreter slack mode is enabled This change deletes any implicitly 8965returned 8966object from the module-level code block. Lin Ming. 8967 8968Removed messages for successful predefined repair(s). The repair 8969mechanism 8970was considered too wordy. Now, messages are only unconditionally emitted 8971if 8972the return object cannot be repaired. Existing messages for successful 8973repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 8974827. 8975 8976Example Code and Data Size: These are the sizes for the OS-independent 8977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8978debug version of the code includes the debug output trace mechanism and 8979has a 8980much larger code and data size. 8981 8982 Previous Release: 8983 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8984 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8985 Current Release: 8986 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 8987 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 8988 89892) iASL Compiler/Disassembler and Tools: 8990 8991iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 8992files 8993were no longer automatically removed at the termination of the compile. 8994 8995acpiexec: Implemented the -f option to specify default region fill value. 8996This option specifies the value used to initialize buffers that simulate 8997operation regions. Default value is zero. Useful for debugging problems 8998that 8999depend on a specific initial value for a region or field. 9000 9001---------------------------------------- 900212 November 2009. Summary of changes for version 20091112: 9003 90041) ACPI CA Core Subsystem: 9005 9006Implemented a post-order callback to AcpiWalkNamespace. The existing 9007interface only has a pre-order callback. This change adds an additional 9008parameter for a post-order callback which will be more useful for bus 9009scans. 9010ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 9011 9012Modified the behavior of the operation region memory mapping cache for 9013SystemMemory. Ensure that the memory mappings created for operation 9014regions 9015do not cross 4K page boundaries. Crossing a page boundary while mapping 9016regions can cause kernel warnings on some hosts if the pages have 9017different 9018attributes. Such regions are probably BIOS bugs, and this is the 9019workaround. 9020Linux BZ 14445. Lin Ming. 9021 9022Implemented an automatic repair for predefined methods that must return 9023sorted lists. This change will repair (by sorting) packages returned by 9024_ALR, 9025_PSS, and _TSS. Drivers can now assume that the packages are correctly 9026sorted 9027and do not contain NULL package elements. Adds one new file, 9028namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 9029 9030Fixed a possible fault during predefined name validation if a return 9031Package 9032object contains NULL elements. Also adds a warning if a NULL element is 9033followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 9034may 9035include repair or removal of all such NULL elements where possible. 9036 9037Implemented additional module-level executable AML code support. This 9038change 9039will execute module-level code that is not at the root of the namespace 9040(under a Device object, etc.) at table load time. Module-level executable 9041AML 9042code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 9043 9044Implemented a new internal function to create Integer objects. This 9045function 9046simplifies miscellaneous object creation code. ACPICA BZ 823. 9047 9048Reduced the severity of predefined repair messages, Warning to Info. 9049Since 9050the object was successfully repaired, a warning is too severe. Reduced to 9051an 9052info message for now. These messages may eventually be changed to debug- 9053only. 9054ACPICA BZ 812. 9055 9056Example Code and Data Size: These are the sizes for the OS-independent 9057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9058debug version of the code includes the debug output trace mechanism and 9059has a 9060much larger code and data size. 9061 9062 Previous Release: 9063 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9064 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9065 Current Release: 9066 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9067 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9068 90692) iASL Compiler/Disassembler and Tools: 9070 9071iASL: Implemented Switch() with While(1) so that Break works correctly. 9072This 9073change correctly implements the Switch operator with a surrounding 9074While(1) 9075so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 9076 9077iASL: Added a message if a package initializer list is shorter than 9078package 9079length. Adds a new remark for a Package() declaration if an initializer 9080list 9081exists, but is shorter than the declared length of the package. Although 9082technically legal, this is probably a coding error and it is seen in the 9083field. ACPICA BZ 815. Lin Ming, Bob Moore. 9084 9085iASL: Fixed a problem where the compiler could fault after the maximum 9086number 9087of errors was reached (200). 9088 9089acpixtract: Fixed a possible warning for pointer cast if the compiler 9090warning 9091level set very high. 9092 9093---------------------------------------- 909413 October 2009. Summary of changes for version 20091013: 9095 90961) ACPI CA Core Subsystem: 9097 9098Fixed a problem where an Operation Region _REG method could be executed 9099more 9100than once. If a custom address space handler is installed by the host 9101before 9102the "initialize operation regions" phase of the ACPICA initialization, 9103any 9104_REG methods for that address space could be executed twice. This change 9105fixes the problem. ACPICA BZ 427. Lin Ming. 9106 9107Fixed a possible memory leak for the Scope() ASL operator. When the exact 9108invocation of "Scope(\)" is executed (change scope to root), one internal 9109operand object was leaked. Lin Ming. 9110 9111Implemented a run-time repair for the _MAT predefined method. If the _MAT 9112return value is defined as a Field object in the AML, and the field 9113size is less than or equal to the default width of an integer (32 or 911464),_MAT 9115can incorrectly return an Integer instead of a Buffer. ACPICA now 9116automatically repairs this problem. ACPICA BZ 810. 9117 9118Implemented a run-time repair for the _BIF and _BIX predefined methods. 9119The 9120"OEM Information" field is often incorrectly returned as an Integer with 9121value zero if the field is not supported by the platform. This is due to 9122an 9123ambiguity in the ACPI specification. The field should always be a string. 9124ACPICA now automatically repairs this problem by returning a NULL string 9125within the returned Package. ACPICA BZ 807. 9126 9127Example Code and Data Size: These are the sizes for the OS-independent 9128acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9129debug version of the code includes the debug output trace mechanism and 9130has a 9131much larger code and data size. 9132 9133 Previous Release: 9134 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9135 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9136 Current Release: 9137 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9138 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9139 91402) iASL Compiler/Disassembler and Tools: 9141 9142Disassembler: Fixed a problem where references to external symbols that 9143contained one or more parent-prefixes (carats) were not handled 9144correctly, 9145possibly causing a fault. ACPICA BZ 806. Lin Ming. 9146 9147Disassembler: Restructured the code so that all functions that handle 9148external symbols are in a single module. One new file is added, 9149common/dmextern.c. 9150 9151AML Debugger: Added a max count argument for the Batch command (which 9152executes multiple predefined methods within the namespace.) 9153 9154iASL: Updated the compiler documentation (User Reference.) Available at 9155http://www.acpica.org/documentation/. ACPICA BZ 750. 9156 9157AcpiXtract: Updated for Lint and other formatting changes. Close all open 9158files. 9159 9160---------------------------------------- 916103 September 2009. Summary of changes for version 20090903: 9162 91631) ACPI CA Core Subsystem: 9164 9165For Windows Vista compatibility, added the automatic execution of an _INI 9166method located at the namespace root (\_INI). This method is executed at 9167table load time. This support is in addition to the automatic execution 9168of 9169\_SB._INI. Lin Ming. 9170 9171Fixed a possible memory leak in the interpreter for AML package objects 9172if 9173the package initializer list is longer than the defined size of the 9174package. 9175This apparently can only happen if the BIOS changes the package size on 9176the 9177fly (seen in a _PSS object), as ASL compilers do not allow this. The 9178interpreter will truncate the package to the defined size (and issue an 9179error 9180message), but previously could leave the extra objects undeleted if they 9181were 9182pre-created during the argument processing (such is the case if the 9183package 9184consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 9185 9186Fixed a problem seen when a Buffer or String is stored to itself via ASL. 9187This has been reported in the field. Previously, ACPICA would zero out 9188the 9189buffer/string. Now, the operation is treated as a noop. Provides Windows 9190compatibility. ACPICA BZ 803. Lin Ming. 9191 9192Removed an extraneous error message for ASL constructs of the form 9193Store(LocalX,LocalX) when LocalX is uninitialized. These curious 9194statements 9195are seen in many BIOSs and are once again treated as NOOPs and no error 9196is 9197emitted when they are encountered. ACPICA BZ 785. 9198 9199Fixed an extraneous warning message if a _DSM reserved method returns a 9200Package object. _DSM can return any type of object, so validation on the 9201return type cannot be performed. ACPICA BZ 802. 9202 9203Example Code and Data Size: These are the sizes for the OS-independent 9204acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9205debug version of the code includes the debug output trace mechanism and 9206has a 9207much larger code and data size. 9208 9209 Previous Release: 9210 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9211 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9212 Current Release: 9213 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9214 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9215 92162) iASL Compiler/Disassembler and Tools: 9217 9218iASL: Fixed a problem with the use of the Alias operator and Resource 9219Templates. The correct alias is now constructed and no error is emitted. 9220ACPICA BZ 738. 9221 9222iASL: Implemented the -I option to specify additional search directories 9223for 9224include files. Allows multiple additional search paths for include files. 9225Directories are searched in the order specified on the command line 9226(after 9227the local directory is searched.) ACPICA BZ 800. 9228 9229iASL: Fixed a problem where the full pathname for include files was not 9230emitted for warnings/errors. This caused the IDE support to not work 9231properly. ACPICA BZ 765. 9232 9233iASL: Implemented the -@ option to specify a Windows-style response file 9234containing additional command line options. ACPICA BZ 801. 9235 9236AcpiExec: Added support to load multiple AML files simultaneously (such 9237as 9238a 9239DSDT and multiple SSDTs). Also added support for wildcards within the AML 9240pathname. These features allow all machine tables to be easily loaded and 9241debugged together. ACPICA BZ 804. 9242 9243Disassembler: Added missing support for disassembly of HEST table Error 9244Bank 9245subtables. 9246 9247---------------------------------------- 924830 July 2009. Summary of changes for version 20090730: 9249 9250The ACPI 4.0 implementation for ACPICA is complete with this release. 9251 92521) ACPI CA Core Subsystem: 9253 9254ACPI 4.0: Added header file support for all new and changed ACPI tables. 9255Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 9256new 9257for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 9258BERT, 9259EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 9260There 9261have been some ACPI 4.0 changes to other existing tables. Split the large 9262actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 9263 9264ACPI 4.0: Implemented predefined name validation for all new names. There 9265are 926631 new names in ACPI 4.0. The predefined validation module was split into 9267two 9268files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 9269 9270Implemented support for so-called "module-level executable code". This is 9271executable AML code that exists outside of any control method and is 9272intended 9273to be executed at table load time. Although illegal since ACPI 2.0, this 9274type 9275of code still exists and is apparently still being created. Blocks of 9276this 9277code are now detected and executed as intended. Currently, the code 9278blocks 9279must exist under either an If, Else, or While construct; these are the 9280typical cases seen in the field. ACPICA BZ 762. Lin Ming. 9281 9282Implemented an automatic dynamic repair for predefined names that return 9283nested Package objects. This applies to predefined names that are defined 9284to 9285return a variable-length Package of sub-packages. If the number of sub- 9286packages is one, BIOS code is occasionally seen that creates a simple 9287single 9288package with no sub-packages. This code attempts to fix the problem by 9289wrapping a new package object around the existing package. These methods 9290can 9291be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 9292BZ 9293790. 9294 9295Fixed a regression introduced in 20090625 for the AcpiGetDevices 9296interface. 9297The _HID/_CID matching was broken and no longer matched IDs correctly. 9298ACPICA 9299BZ 793. 9300 9301Fixed a problem with AcpiReset where the reset would silently fail if the 9302register was one of the protected I/O ports. AcpiReset now bypasses the 9303port 9304validation mechanism. This may eventually be driven into the 9305AcpiRead/Write 9306interfaces. 9307 9308Fixed a regression related to the recent update of the AcpiRead/Write 9309interfaces. A sleep/suspend could fail if the optional PM2 Control 9310register 9311does not exist during an attempt to write the Bus Master Arbitration bit. 9312(However, some hosts already delete the code that writes this bit, and 9313the 9314code may in fact be obsolete at this date.) ACPICA BZ 799. 9315 9316Fixed a problem where AcpiTerminate could fault if inadvertently called 9317twice 9318in succession. ACPICA BZ 795. 9319 9320Example Code and Data Size: These are the sizes for the OS-independent 9321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9322debug version of the code includes the debug output trace mechanism and 9323has a 9324much larger code and data size. 9325 9326 Previous Release: 9327 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9328 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9329 Current Release: 9330 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9331 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9332 93332) iASL Compiler/Disassembler and Tools: 9334 9335ACPI 4.0: Implemented disassembler support for all new ACPI tables and 9336changes to existing tables. ACPICA BZ 775. 9337 9338---------------------------------------- 933925 June 2009. Summary of changes for version 20090625: 9340 9341The ACPI 4.0 Specification was released on June 16 and is available at 9342www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 9343continue for the next few releases. 9344 93451) ACPI CA Core Subsystem: 9346 9347ACPI 4.0: Implemented interpreter support for the IPMI operation region 9348address space. Includes support for bi-directional data buffers and an 9349IPMI 9350address space handler (to be installed by an IPMI device driver.) ACPICA 9351BZ 9352773. Lin Ming. 9353 9354ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 9355Includes 9356support in both the header files and the disassembler. 9357 9358Completed a major update for the AcpiGetObjectInfo external interface. 9359Changes include: 9360 - Support for variable, unlimited length HID, UID, and CID strings. 9361 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 9362etc.) 9363 - Call the _SxW power methods on behalf of a device object. 9364 - Determine if a device is a PCI root bridge. 9365 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 9366These changes will require an update to all callers of this interface. 9367See 9368the updated ACPICA Programmer Reference for details. One new source file 9369has 9370been added - utilities/utids.c. ACPICA BZ 368, 780. 9371 9372Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 9373transfers. The Value parameter has been extended from 32 bits to 64 bits 9374in 9375order to support new ACPI 4.0 tables. These changes will require an 9376update 9377to 9378all callers of these interfaces. See the ACPICA Programmer Reference for 9379details. ACPICA BZ 768. 9380 9381Fixed several problems with AcpiAttachData. The handler was not invoked 9382when 9383the host node was deleted. The data sub-object was not automatically 9384deleted 9385when the host node was deleted. The interface to the handler had an 9386unused 9387parameter, this was removed. ACPICA BZ 778. 9388 9389Enhanced the function that dumps ACPI table headers. All non-printable 9390characters in the string fields are now replaced with '?' (Signature, 9391OemId, 9392OemTableId, and CompilerId.) ACPI tables with non-printable characters in 9393these fields are occasionally seen in the field. ACPICA BZ 788. 9394 9395Fixed a problem with predefined method repair code where the code that 9396attempts to repair/convert an object of incorrect type is only executed 9397on 9398the first time the predefined method is called. The mechanism that 9399disables 9400warnings on subsequent calls was interfering with the repair mechanism. 9401ACPICA BZ 781. 9402 9403Fixed a possible memory leak in the predefined validation/repair code 9404when 9405a 9406buffer is automatically converted to an expected string object. 9407 9408Removed obsolete 16-bit files from the distribution and from the current 9409git 9410tree head. ACPICA BZ 776. 9411 9412Example Code and Data Size: These are the sizes for the OS-independent 9413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9414debug version of the code includes the debug output trace mechanism and 9415has a 9416much larger code and data size. 9417 9418 Previous Release: 9419 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9420 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9421 Current Release: 9422 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9423 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9424 94252) iASL Compiler/Disassembler and Tools: 9426 9427ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9428operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9429 9430ACPI 4.0: iASL - implemented compile-time validation support for all new 9431predefined names and control methods (31 total). ACPICA BZ 769. 9432 9433---------------------------------------- 943421 May 2009. Summary of changes for version 20090521: 9435 94361) ACPI CA Core Subsystem: 9437 9438Disabled the preservation of the SCI enable bit in the PM1 control 9439register. 9440The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9441to 9442be 9443a "preserved" bit - "OSPM always preserves this bit position", section 94444.7.3.2.1. However, some machines fail if this bit is in fact preserved 9445because the bit needs to be explicitly set by the OS as a workaround. No 9446machines fail if the bit is not preserved. Therefore, ACPICA no longer 9447attempts to preserve this bit. 9448 9449Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9450incorrectly formed _PRT package could cause a fault. Added validation to 9451ensure that each package element is actually a sub-package. 9452 9453Implemented a new interface to install or override a single control 9454method, 9455AcpiInstallMethod. This interface is useful when debugging in order to 9456repair 9457an existing method or to install a missing method without having to 9458override 9459the entire ACPI table. See the ACPICA Programmer Reference for use and 9460examples. Lin Ming, Bob Moore. 9461 9462Fixed several reference count issues with the DdbHandle object that is 9463created from a Load or LoadTable operator. Prevent premature deletion of 9464the 9465object. Also, mark the object as invalid once the table has been 9466unloaded. 9467This is needed because the handle itself may not be deleted after the 9468table 9469unload, depending on whether it has been stored in a named object by the 9470caller. Lin Ming. 9471 9472Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9473mutexes of the same sync level are acquired but then not released in 9474strict 9475opposite order, the internally maintained Current Sync Level becomes 9476confused 9477and can cause subsequent execution errors. ACPICA BZ 471. 9478 9479Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9480specification has been changed to make the SyncLevel for mutex objects 9481more 9482useful. When releasing a mutex, the SyncLevel of the mutex must now be 9483the 9484same as the current sync level. This makes more sense than the previous 9485rule 9486(SyncLevel less than or equal). This change updates the code to match the 9487specification. 9488 9489Fixed a problem with the local version of the AcpiOsPurgeCache function. 9490The 9491(local) cache must be locked during all cache object deletions. Andrew 9492Baumann. 9493 9494Updated the Load operator to use operation region interfaces. This 9495replaces 9496direct memory mapping with region access calls. Now, all region accesses 9497go 9498through the installed region handler as they should. 9499 9500Simplified and optimized the NsGetNextNode function. Reduced parameter 9501count 9502and reduced code for this frequently used function. 9503 9504Example Code and Data Size: These are the sizes for the OS-independent 9505acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9506debug version of the code includes the debug output trace mechanism and 9507has a 9508much larger code and data size. 9509 9510 Previous Release: 9511 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9512 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9513 Current Release: 9514 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9515 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9516 95172) iASL Compiler/Disassembler and Tools: 9518 9519Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9520problems 9521with sub-table disassembly and handling invalid sub-tables. Attempt 9522recovery 9523after an invalid sub-table ID. 9524 9525---------------------------------------- 952622 April 2009. Summary of changes for version 20090422: 9527 95281) ACPI CA Core Subsystem: 9529 9530Fixed a compatibility issue with the recently released I/O port 9531protection 9532mechanism. For windows compatibility, 1) On a port protection violation, 9533simply ignore the request and do not return an exception (allow the 9534control 9535method to continue execution.) 2) If only part of the request overlaps a 9536protected port, read/write the individual ports that are not protected. 9537Linux 9538BZ 13036. Lin Ming 9539 9540Enhanced the execution of the ASL/AML BreakPoint operator so that it 9541actually 9542breaks into the AML debugger if the debugger is present. This matches the 9543ACPI-defined behavior. 9544 9545Fixed several possible warnings related to the use of the configurable 9546ACPI_THREAD_ID. This type can now be configured as either an integer or a 9547pointer with no warnings. Also fixes several warnings in printf-like 9548statements for the 64-bit build when the type is configured as a pointer. 9549ACPICA BZ 766, 767. 9550 9551Fixed a number of possible warnings when compiling with gcc 4+ (depending 9552on 9553warning options.) Examples include printf formats, aliasing, unused 9554globals, 9555missing prototypes, missing switch default statements, use of non-ANSI 9556library functions, use of non-ANSI constructs. See generate/unix/Makefile 9557for 9558a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9559 9560Example Code and Data Size: These are the sizes for the OS-independent 9561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9562debug version of the code includes the debug output trace mechanism and 9563has a 9564much larger code and data size. 9565 9566 Previous Release: 9567 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9568 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9569 Current Release: 9570 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9571 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9572 95732) iASL Compiler/Disassembler and Tools: 9574 9575iASL: Fixed a generation warning from Bison 2.3 and fixed several 9576warnings 9577on 9578the 64-bit build. 9579 9580iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9581not 9582correctly digest Windows/DOS formatted files (with CR/LF). 9583 9584iASL: Added a new option for "quiet mode" (-va) that produces only the 9585compilation summary, not individual errors and warnings. Useful for large 9586batch compilations. 9587 9588AcpiExec: Implemented a new option (-z) to enable a forced 9589semaphore/mutex 9590timeout that can be used to detect hang conditions during execution of 9591AML 9592code (includes both internal semaphores and AML-defined mutexes and 9593events.) 9594 9595Added new makefiles for the generation of acpica in a generic unix-like 9596environment. These makefiles are intended to generate the acpica tools 9597and 9598utilities from the original acpica git source tree structure. 9599 9600Test Suites: Updated and cleaned up the documentation files. Updated the 9601copyrights to 2009, affecting all source files. Use the new version of 9602iASL 9603with quiet mode. Increased the number of available semaphores in the 9604Windows 9605OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9606added 9607an alternate implementation of the semaphore timeout to allow aslts to 9608execute fully on Cygwin. 9609 9610---------------------------------------- 961120 March 2009. Summary of changes for version 20090320: 9612 96131) ACPI CA Core Subsystem: 9614 9615Fixed a possible race condition between AcpiWalkNamespace and dynamic 9616table 9617unloads. Added a reader/writer locking mechanism to allow multiple 9618concurrent 9619namespace walks (readers), but block a dynamic table unload until it can 9620gain 9621exclusive write access to the namespace. This fixes a problem where a 9622table 9623unload could (possibly catastrophically) delete the portion of the 9624namespace 9625that is currently being examined by a walk. Adds a new file, utlock.c, 9626that 9627implements the reader/writer lock mechanism. ACPICA BZ 749. 9628 9629Fixed a regression introduced in version 20090220 where a change to the 9630FADT 9631handling could cause the ACPICA subsystem to access non-existent I/O 9632ports. 9633 9634Modified the handling of FADT register and table (FACS/DSDT) addresses. 9635The 9636FADT can contain both 32-bit and 64-bit versions of these addresses. 9637Previously, the 64-bit versions were favored, meaning that if both 32 and 963864 9639versions were valid, but not equal, the 64-bit version was used. This was 9640found to cause some machines to fail. Now, in this case, the 32-bit 9641version 9642is used instead. This now matches the Windows behavior. 9643 9644Implemented a new mechanism to protect certain I/O ports. Provides 9645Microsoft 9646compatibility and protects the standard PC I/O ports from access via AML 9647code. Adds a new file, hwvalid.c 9648 9649Fixed a possible extraneous warning message from the FADT support. The 9650message warns of a 32/64 length mismatch between the legacy and GAS 9651definitions for a register. 9652 9653Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9654is 9655made obsolete by the port protection mechanism above. It was previously 9656used 9657to validate the entire address range of an operation region, which could 9658be 9659incorrect if the range included illegal ports, but fields within the 9660operation region did not actually access those ports. Validation is now 9661performed on a per-field basis instead of the entire region. 9662 9663Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9664Ignored bits must be "preserved" according to the ACPI spec. Usually, 9665this 9666means a read/modify/write when writing to the register. However, for 9667status 9668registers, writing a one means clear the event. Writing a zero means 9669preserve 9670the event (do not clear.) This behavior is clarified in the ACPI 4.0 9671spec, 9672and the ACPICA code now simply always writes a zero to the ignored bit. 9673 9674Modified the handling of ignored bits for the PM1 A/B Control Registers. 9675As 9676per the ACPI specification, for the control registers, preserve 9677(read/modify/write) all bits that are defined as either reserved or 9678ignored. 9679 9680Updated the handling of write-only bits in the PM1 A/B Control Registers. 9681When reading the register, zero the write-only bits as per the ACPI spec. 9682ACPICA BZ 443. Lin Ming. 9683 9684Removed "Linux" from the list of supported _OSI strings. Linux no longer 9685wants to reply true to this request. The Windows strings are the only 9686paths 9687through the AML that are tested and known to work properly. 9688 9689 Previous Release: 9690 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9691 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9692 Current Release: 9693 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9694 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9695 96962) iASL Compiler/Disassembler and Tools: 9697 9698Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9699and 9700aetables.c 9701 9702---------------------------------------- 970320 February 2009. Summary of changes for version 20090220: 9704 97051) ACPI CA Core Subsystem: 9706 9707Optimized the ACPI register locking. Removed locking for reads from the 9708ACPI 9709bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9710is 9711not required when reading the single-bit registers. The 9712AcpiGetRegisterUnlocked function is no longer needed and has been 9713removed. 9714This will improve performance for reads on these registers. ACPICA BZ 9715760. 9716 9717Fixed the parameter validation for AcpiRead/Write. Now return 9718AE_BAD_PARAMETER if the input register pointer is null, and 9719AE_BAD_ADDRESS 9720if 9721the register has an address of zero. Previously, these cases simply 9722returned 9723AE_OK. For optional registers such as PM1B status/enable/control, the 9724caller 9725should check for a valid register address before calling. ACPICA BZ 748. 9726 9727Renamed the external ACPI bit register access functions. Renamed 9728AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9729functions. The new names are AcpiReadBitRegister and 9730AcpiWriteBitRegister. 9731Also, restructured the code for these functions by simplifying the code 9732path 9733and condensing duplicate code to reduce code size. 9734 9735Added new functions to transparently handle the possibly split PM1 A/B 9736registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9737functions 9738now handle the split registers for PM1 Status, Enable, and Control. 9739ACPICA 9740BZ 9741746. 9742 9743Added a function to handle the PM1 control registers, 9744AcpiHwWritePm1Control. 9745This function writes both of the PM1 control registers (A/B). These 9746registers 9747are different than the PM1 A/B status and enable registers in that 9748different 9749values can be written to the A/B registers. Most notably, the SLP_TYP 9750bits 9751can be different, as per the values returned from the _Sx predefined 9752methods. 9753 9754Removed an extra register write within AcpiHwClearAcpiStatus. This 9755function 9756was writing an optional PM1B status register twice. The existing call to 9757the 9758low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9759A/B 9760register. ACPICA BZ 751. 9761 9762Split out the PM1 Status registers from the FADT. Added new globals for 9763these 9764registers (A/B), similar to the way the PM1 Enable registers are handled. 9765Instead of overloading the FADT Event Register blocks. This makes the 9766code 9767clearer and less prone to error. 9768 9769Fixed the warning message for when the platform contains too many ACPI 9770tables 9771for the default size of the global root table data structure. The 9772calculation 9773for the truncation value was incorrect. 9774 9775Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9776obsolete macro, since it is now a simple reference to ->common.type. 9777There 9778were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9779 9780Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9781TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9782simply SLEEP_TYPE. ACPICA BZ 754. 9783 9784Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9785function is only needed on 64-bit host operating systems and is thus not 9786included for 32-bit hosts. 9787 9788Debug output: print the input and result for invocations of the _OSI 9789reserved 9790control method via the ACPI_LV_INFO debug level. Also, reduced some of 9791the 9792verbosity of this debug level. Len Brown. 9793 9794Example Code and Data Size: These are the sizes for the OS-independent 9795acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9796debug version of the code includes the debug output trace mechanism and 9797has a 9798much larger code and data size. 9799 9800 Previous Release: 9801 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9802 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9803 Current Release: 9804 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9805 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9806 98072) iASL Compiler/Disassembler and Tools: 9808 9809Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9810various legal performance profiles. 9811 9812---------------------------------------- 981323 January 2009. Summary of changes for version 20090123: 9814 98151) ACPI CA Core Subsystem: 9816 9817Added the 2009 copyright to all module headers and signons. This affects 9818virtually every file in the ACPICA core subsystem, the iASL compiler, and 9819the tools/utilities. 9820 9821Implemented a change to allow the host to override any ACPI table, 9822including 9823dynamically loaded tables. Previously, only the DSDT could be replaced by 9824the 9825host. With this change, the AcpiOsTableOverride interface is called for 9826each 9827table found in the RSDT/XSDT during ACPICA initialization, and also 9828whenever 9829a table is dynamically loaded via the AML Load operator. 9830 9831Updated FADT flag definitions, especially the Boot Architecture flags. 9832 9833Debugger: For the Find command, automatically pad the input ACPI name 9834with 9835underscores if the name is shorter than 4 characters. This enables a 9836match 9837with the actual namespace entry which is itself padded with underscores. 9838 9839Example Code and Data Size: These are the sizes for the OS-independent 9840acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9841debug version of the code includes the debug output trace mechanism and 9842has a 9843much larger code and data size. 9844 9845 Previous Release: 9846 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9847 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9848 Current Release: 9849 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9850 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9851 98522) iASL Compiler/Disassembler and Tools: 9853 9854Fix build error under Bison-2.4. 9855 9856Disassembler: Enhanced FADT support. Added decoding of the Boot 9857Architecture 9858flags. Now decode all flags, regardless of the FADT version. Flag output 9859includes the FADT version which first defined each flag. 9860 9861The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9862and 9863DSDT). Windows only. 9864 9865---------------------------------------- 986604 December 2008. Summary of changes for version 20081204: 9867 98681) ACPI CA Core Subsystem: 9869 9870The ACPICA Programmer Reference has been completely updated and revamped 9871for 9872this release. This includes updates to the external interfaces, OSL 9873interfaces, the overview sections, and the debugger reference. 9874 9875Several new ACPICA interfaces have been implemented and documented in the 9876programmer reference: 9877AcpiReset - Writes the reset value to the FADT-defined reset register. 9878AcpiDisableAllGpes - Disable all available GPEs. 9879AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9880AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9881AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9882AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9883AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9884 9885Most of the public ACPI hardware-related interfaces have been moved to a 9886new 9887file, components/hardware/hwxface.c 9888 9889Enhanced the FADT parsing and low-level ACPI register access: The ACPI 9890register lengths within the FADT are now used, and the low level ACPI 9891register access no longer hardcodes the ACPI register lengths. Given that 9892there may be some risk in actually trusting the FADT register lengths, a 9893run- 9894time option was added to fall back to the default hardcoded lengths if 9895the 9896FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 9897option is set to true for now, and a warning is issued if a suspicious 9898FADT 9899register length is overridden with the default value. 9900 9901Fixed a reference count issue in NsRepairObject. This problem was 9902introduced 9903in version 20081031 as part of a fix to repair Buffer objects within 9904Packages. Lin Ming. 9905 9906Added semaphore support to the Linux/Unix application OS-services layer 9907(OSL). ACPICA BZ 448. Lin Ming. 9908 9909Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 9910will 9911be implemented in the OSL, or will binary semaphores be used instead. 9912 9913Example Code and Data Size: These are the sizes for the OS-independent 9914acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9915debug version of the code includes the debug output trace mechanism and 9916has a 9917much larger code and data size. 9918 9919 Previous Release: 9920 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9921 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9922 Current Release: 9923 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9924 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9925 99262) iASL Compiler/Disassembler and Tools: 9927 9928iASL: Completed the '-e' option to include additional ACPI tables in 9929order 9930to 9931aid with disassembly and External statement generation. ACPICA BZ 742. 9932Lin 9933Ming. 9934 9935iASL: Removed the "named object in while loop" error. The compiler cannot 9936determine how many times a loop will execute. ACPICA BZ 730. 9937 9938Disassembler: Implemented support for FADT revision 2 (MS extension). 9939ACPICA 9940BZ 743. 9941 9942Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 9943MCFG). 9944 9945---------------------------------------- 994631 October 2008. Summary of changes for version 20081031: 9947 99481) ACPI CA Core Subsystem: 9949 9950Restructured the ACPICA header files into public/private. acpi.h now 9951includes 9952only the "public" acpica headers. All other acpica headers are "private" 9953and 9954should not be included by acpica users. One new file, accommon.h is used 9955to 9956include the commonly used private headers for acpica code generation. 9957Future 9958plans include moving all private headers to a new subdirectory. 9959 9960Implemented an automatic Buffer->String return value conversion for 9961predefined ACPI methods. For these methods (such as _BIF), added 9962automatic 9963conversion for return objects that are required to be a String, but a 9964Buffer 9965was found instead. This can happen when reading string battery data from 9966an 9967operation region, because it used to be difficult to convert the data 9968from 9969buffer to string from within the ASL. Ensures that the host OS is 9970provided 9971with a valid null-terminated string. Linux BZ 11822. 9972 9973Updated the FACS waking vector interfaces. Split 9974AcpiSetFirmwareWakingVector 9975into two: one for the 32-bit vector, another for the 64-bit vector. This 9976is 9977required because the host OS must setup the wake much differently for 9978each 9979vector (real vs. protected mode, etc.) and the interface itself should 9980not 9981be 9982deciding which vector to use. Also, eliminated the 9983GetFirmwareWakingVector 9984interface, as it served no purpose (only the firmware reads the vector, 9985OS 9986only writes the vector.) ACPICA BZ 731. 9987 9988Implemented a mechanism to escape infinite AML While() loops. Added a 9989loop 9990counter to force exit from AML While loops if the count becomes too 9991large. 9992This can occur in poorly written AML when the hardware does not respond 9993within a while loop and the loop does not implement a timeout. The 9994maximum 9995loop count is configurable. A new exception code is returned when a loop 9996is 9997broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 9998 9999Optimized the execution of AML While loops. Previously, a control state 10000object was allocated and freed for each execution of the loop. The 10001optimization is to simply reuse the control state for each iteration. 10002This 10003speeds up the raw loop execution time by about 5%. 10004 10005Enhanced the implicit return mechanism. For Windows compatibility, return 10006an 10007implicit integer of value zero for methods that contain no executable 10008code. 10009Such methods are seen in the field as stubs (presumably), and can cause 10010drivers to fail if they expect a return value. Lin Ming. 10011 10012Allow multiple backslashes as root prefixes in namepaths. In a fully 10013qualified namepath, allow multiple backslash prefixes. This can happen 10014(and 10015is seen in the field) because of the use of a double-backslash in strings 10016(since backslash is the escape character) causing confusion. ACPICA BZ 10017739 10018Lin Ming. 10019 10020Emit a warning if two different FACS or DSDT tables are discovered in the 10021FADT. Checks if there are two valid but different addresses for the FACS 10022and 10023DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 10024 10025Consolidated the method argument count validation code. Merged the code 10026that 10027validates control method argument counts into the predefined validation 10028module. Eliminates possible multiple warnings for incorrect argument 10029counts. 10030 10031Implemented ACPICA example code. Includes code for ACPICA initialization, 10032handler installation, and calling a control method. Available at 10033source/tools/examples. 10034 10035Added a global pointer for FACS table to simplify internal FACS access. 10036Use 10037the global pointer instead of using AcpiGetTableByIndex for each FACS 10038access. 10039This simplifies the code for the Global Lock and the Firmware Waking 10040Vector(s). 10041 10042Example Code and Data Size: These are the sizes for the OS-independent 10043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10044debug version of the code includes the debug output trace mechanism and 10045has a 10046much larger code and data size. 10047 10048 Previous Release: 10049 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10050 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10051 Current Release: 10052 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10053 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10054 100552) iASL Compiler/Disassembler and Tools: 10056 10057iASL: Improved disassembly of external method calls. Added the -e option 10058to 10059allow the inclusion of additional ACPI tables to help with the 10060disassembly 10061of 10062method invocations and the generation of external declarations during the 10063disassembly. Certain external method invocations cannot be disassembled 10064properly without the actual declaration of the method. Use the -e option 10065to 10066include the table where the external method(s) are actually declared. 10067Most 10068useful for disassembling SSDTs that make method calls back to the master 10069DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 10070-d 10071-e dsdt.aml ssdt1.aml 10072 10073iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 10074problem where the use of an alias within a namepath would result in a not 10075found error or cause the compiler to fault. Also now allows forward 10076references from the Alias operator itself. ACPICA BZ 738. 10077 10078---------------------------------------- 1007926 September 2008. Summary of changes for version 20080926: 10080 100811) ACPI CA Core Subsystem: 10082 10083Designed and implemented a mechanism to validate predefined ACPI methods 10084and 10085objects. This code validates the predefined ACPI objects (objects whose 10086names 10087start with underscore) that appear in the namespace, at the time they are 10088evaluated. The argument count and the type of the returned object are 10089validated against the ACPI specification. The purpose of this validation 10090is 10091to detect problems with the BIOS-implemented predefined ACPI objects 10092before 10093the results are returned to the ACPI-related drivers. Future enhancements 10094may 10095include actual repair of incorrect return objects where possible. Two new 10096files are nspredef.c and acpredef.h. 10097 10098Fixed a fault in the AML parser if a memory allocation fails during the 10099Op 10100completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 10101 10102Fixed an issue with implicit return compatibility. This change improves 10103the 10104implicit return mechanism to be more compatible with the MS interpreter. 10105Lin 10106Ming, ACPICA BZ 349. 10107 10108Implemented support for zero-length buffer-to-string conversions. Allow 10109zero 10110length strings during interpreter buffer-to-string conversions. For 10111example, 10112during the ToDecimalString and ToHexString operators, as well as implicit 10113conversions. Fiodor Suietov, ACPICA BZ 585. 10114 10115Fixed two possible memory leaks in the error exit paths of 10116AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 10117are 10118similar in that they use a stack of state objects in order to eliminate 10119recursion. The stack must be fully unwound and deallocated if an error 10120occurs. Lin Ming. ACPICA BZ 383. 10121 10122Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 10123global 10124ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 10125Moore ACPICA BZ 442. 10126 10127Removed the obsolete version number in module headers. Removed the 10128"$Revision" number that appeared in each module header. This version 10129number 10130was useful under SourceSafe and CVS, but has no meaning under git. It is 10131not 10132only incorrect, it could also be misleading. 10133 10134Example Code and Data Size: These are the sizes for the OS-independent 10135acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10136debug version of the code includes the debug output trace mechanism and 10137has a 10138much larger code and data size. 10139 10140 Previous Release: 10141 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10142 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10143 Current Release: 10144 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10145 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10146 10147---------------------------------------- 1014829 August 2008. Summary of changes for version 20080829: 10149 101501) ACPI CA Core Subsystem: 10151 10152Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 10153Reference. Changes include the elimination of cheating on the Object 10154field 10155for the DdbHandle subtype, addition of a reference class field to 10156differentiate the various reference types (instead of an AML opcode), and 10157the 10158cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 10159 10160Reduce an error to a warning for an incorrect method argument count. 10161Previously aborted with an error if too few arguments were passed to a 10162control method via the external ACPICA interface. Now issue a warning 10163instead 10164and continue. Handles the case where the method inadvertently declares 10165too 10166many arguments, but does not actually use the extra ones. Applies mainly 10167to 10168the predefined methods. Lin Ming. Linux BZ 11032. 10169 10170Disallow the evaluation of named object types with no intrinsic value. 10171Return 10172AE_TYPE for objects that have no value and therefore evaluation is 10173undefined: 10174Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 10175of 10176these types were allowed, but an exception would be generated at some 10177point 10178during the evaluation. Now, the error is generated up front. 10179 10180Fixed a possible memory leak in the AcpiNsGetExternalPathname function 10181(nsnames.c). Fixes a leak in the error exit path. 10182 10183Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 10184debug 10185levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 10186ACPI_EXCEPTION 10187interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 10188ACPI_LV_EVENTS. 10189 10190Removed obsolete and/or unused exception codes from the acexcep.h header. 10191There is the possibility that certain device drivers may be affected if 10192they 10193use any of these exceptions. 10194 10195The ACPICA documentation has been added to the public git source tree, 10196under 10197acpica/documents. Included are the ACPICA programmer reference, the iASL 10198compiler reference, and the changes.txt release logfile. 10199 10200Example Code and Data Size: These are the sizes for the OS-independent 10201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10202debug version of the code includes the debug output trace mechanism and 10203has a 10204much larger code and data size. 10205 10206 Previous Release: 10207 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10208 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10209 Current Release: 10210 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10211 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10212 102132) iASL Compiler/Disassembler and Tools: 10214 10215Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 10216defines _SCP with 3 arguments. Previous versions defined it with only 1 10217argument. iASL now allows both definitions. 10218 10219iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 10220zero- 10221length subtables when disassembling ACPI tables. Also fixed a couple of 10222errors where a full 16-bit table type field was not extracted from the 10223input 10224properly. 10225 10226acpisrc: Improve comment counting mechanism for generating source code 10227statistics. Count first and last lines of multi-line comments as 10228whitespace, 10229not comment lines. Handle Linux legal header in addition to standard 10230acpica 10231header. 10232 10233---------------------------------------- 10234 1023529 July 2008. Summary of changes for version 20080729: 10236 102371) ACPI CA Core Subsystem: 10238 10239Fix a possible deadlock in the GPE dispatch. Remove call to 10240AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 10241attempt 10242to acquire the GPE lock but can deadlock since the GPE lock is already 10243held 10244at dispatch time. This code was introduced in version 20060831 as a 10245response 10246to Linux BZ 6881 and has since been removed from Linux. 10247 10248Add a function to dereference returned reference objects. Examines the 10249return 10250object from a call to AcpiEvaluateObject. Any Index or RefOf references 10251are 10252automatically dereferenced in an attempt to return something useful 10253(these 10254reference types cannot be converted into an external ACPI_OBJECT.) 10255Provides 10256MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 10257 10258x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 10259subtables for the MADT and one new subtable for the SRAT. Includes 10260disassembler and AcpiSrc support. Data from the Intel 64 Architecture 10261x2APIC 10262Specification, June 2008. 10263 10264Additional error checking for pathname utilities. Add error check after 10265all 10266calls to AcpiNsGetPathnameLength. Add status return from 10267AcpiNsBuildExternalPath and check after all calls. Add parameter 10268validation 10269to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 10270 10271Return status from the global init function AcpiUtGlobalInitialize. This 10272is 10273used by both the kernel subsystem and the utilities such as iASL 10274compiler. 10275The function could possibly fail when the caches are initialized. Yang 10276Yi. 10277 10278Add a function to decode reference object types to strings. Created for 10279improved error messages. 10280 10281Improve object conversion error messages. Better error messages during 10282object 10283conversion from internal to the external ACPI_OBJECT. Used for external 10284calls 10285to AcpiEvaluateObject. 10286 10287Example Code and Data Size: These are the sizes for the OS-independent 10288acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10289debug version of the code includes the debug output trace mechanism and 10290has a 10291much larger code and data size. 10292 10293 Previous Release: 10294 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10295 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10296 Current Release: 10297 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10298 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10299 103002) iASL Compiler/Disassembler and Tools: 10301 10302Debugger: fix a possible hang when evaluating non-methods. Fixes a 10303problem 10304introduced in version 20080701. If the object being evaluated (via 10305execute 10306command) is not a method, the debugger can hang while trying to obtain 10307non- 10308existent parameters. 10309 10310iASL: relax error for using reserved "_T_x" identifiers. These names can 10311appear in a disassembled ASL file if they were emitted by the original 10312compiler. Instead of issuing an error or warning and forcing the user to 10313manually change these names, issue a remark instead. 10314 10315iASL: error if named object created in while loop. Emit an error if any 10316named 10317object is created within a While loop. If allowed, this code will 10318generate 10319a 10320run-time error on the second iteration of the loop when an attempt is 10321made 10322to 10323create the same named object twice. ACPICA bugzilla 730. 10324 10325iASL: Support absolute pathnames for include files. Add support for 10326absolute 10327pathnames within the Include operator. previously, only relative 10328pathnames 10329were supported. 10330 10331iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 10332Descriptor. 10333The ACPI spec requires one interrupt minimum. BZ 423 10334 10335iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 10336Handles the case for the Interrupt Resource Descriptor where 10337the ResourceSource argument is omitted but ResourceSourceIndex 10338is present. Now leave room for the Index. BZ 426 10339 10340iASL: Prevent error message if CondRefOf target does not exist. Fixes 10341cases 10342where an error message is emitted if the target does not exist. BZ 516 10343 10344iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 10345(get ACPI tables on Windows). This was apparently broken in version 1034620070919. 10347 10348AcpiXtract: Handle EOF while extracting data. Correctly handle the case 10349where 10350the EOF happens immediately after the last table in the input file. Print 10351completion message. Previously, no message was displayed in this case. 10352 10353---------------------------------------- 1035401 July 2008. Summary of changes for version 20080701: 10355 103560) Git source tree / acpica.org 10357 10358Fixed a problem where a git-clone from http would not transfer the entire 10359source tree. 10360 103611) ACPI CA Core Subsystem: 10362 10363Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 10364enable bit. Now performs a read-change-write of the enable register 10365instead 10366of simply writing out the cached enable mask. This will prevent 10367inadvertent 10368enabling of GPEs if a rogue GPE is received during initialization (before 10369GPE 10370handlers are installed.) 10371 10372Implemented a copy for dynamically loaded tables. Previously, dynamically 10373loaded tables were simply mapped - but on some machines this memory is 10374corrupted after suspend. Now copy the table to a local buffer. For the 10375OpRegion case, added checksum verify. Use the table length from the table 10376header, not the region length. For the Buffer case, use the table length 10377also. Dennis Noordsij, Bob Moore. BZ 10734 10378 10379Fixed a problem where the same ACPI table could not be dynamically loaded 10380and 10381unloaded more than once. Without this change, a table cannot be loaded 10382again 10383once it has been loaded/unloaded one time. The current mechanism does not 10384unregister a table upon an unload. During a load, if the same table is 10385found, 10386this no longer returns an exception. BZ 722 10387 10388Fixed a problem where the wrong descriptor length was calculated for the 10389EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 10390EndTag 10391are calculated as 12 bytes long, but the actual length in the internal 10392descriptor is 16 because of the round-up to 8 on the 64-bit build. 10393Reported 10394by Linn Crosetto. BZ 728 10395 10396Fixed a possible memory leak in the Unload operator. The DdbHandle 10397returned 10398by Load() did not have its reference count decremented during unload, 10399leading 10400to a memory leak. Lin Ming. BZ 727 10401 10402Fixed a possible memory leak when deleting thermal/processor objects. Any 10403associated notify handlers (and objects) were not being deleted. Fiodor 10404Suietov. BZ 506 10405 10406Fixed the ordering of the ASCII names in the global mutex table to match 10407the 10408actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10409only. 10410Vegard Nossum. BZ 726 10411 10412Enhanced the AcpiGetObjectInfo interface to return the number of required 10413arguments if the object is a control method. Added this call to the 10414debugger 10415so the proper number of default arguments are passed to a method. This 10416prevents a warning when executing methods from AcpiExec. 10417 10418Added a check for an invalid handle in AcpiGetObjectInfo. Return 10419AE_BAD_PARAMETER if input handle is invalid. BZ 474 10420 10421Fixed an extraneous warning from exconfig.c on the 64-bit build. 10422 10423Example Code and Data Size: These are the sizes for the OS-independent 10424acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10425debug version of the code includes the debug output trace mechanism and 10426has a 10427much larger code and data size. 10428 10429 Previous Release: 10430 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10431 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10432 Current Release: 10433 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10434 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10435 104362) iASL Compiler/Disassembler and Tools: 10437 10438iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10439resource descriptor names. 10440 10441iASL: Detect invalid ASCII characters in input (windows version). Removed 10442the 10443"-CF" flag from the flex compile, enables correct detection of non-ASCII 10444characters in the input. BZ 441 10445 10446iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10447the 10448"result of operation not used" warning when the DDB handle returned from 10449LoadTable is not used. The warning is not needed. BZ 590 10450 10451AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10452method 10453to 10454pass address of table to the AML. Added option to disable OpRegion 10455simulation 10456to allow creation of an OpRegion with a real address that was passed to 10457_CFG. 10458All of this allows testing of the Load and Unload operators from 10459AcpiExec. 10460 10461Debugger: update tables command for unloaded tables. Handle unloaded 10462tables 10463and use the standard table header output routine. 10464 10465---------------------------------------- 1046609 June 2008. Summary of changes for version 20080609: 10467 104681) ACPI CA Core Subsystem: 10469 10470Implemented a workaround for reversed _PRT entries. A significant number 10471of 10472BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10473change dynamically detects and repairs this problem. Provides 10474compatibility 10475with MS ACPI. BZ 6859 10476 10477Simplified the internal ACPI hardware interfaces to eliminate the locking 10478flag parameter from Register Read/Write. Added a new external interface, 10479AcpiGetRegisterUnlocked. 10480 10481Fixed a problem where the invocation of a GPE control method could hang. 10482This 10483was a regression introduced in 20080514. The new method argument count 10484validation mechanism can enter an infinite loop when a GPE method is 10485dispatched. Problem fixed by removing the obsolete code that passed GPE 10486block 10487information to the notify handler via the control method parameter 10488pointer. 10489 10490Fixed a problem where the _SST execution status was incorrectly returned 10491to 10492the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10493in 1049420080514. _SST is optional and a NOT_FOUND exception should never be 10495returned. BZ 716 10496 10497Fixed a problem where a deleted object could be accessed from within the 10498AML 10499parser. This was a regression introduced in version 20080123 as a fix for 10500the 10501Unload operator. Lin Ming. BZ 10669 10502 10503Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10504operands 10505and eliminated the use of a negative index in a loop. Operands are now 10506displayed in the correct order, not backwards. This also fixes a 10507regression 10508introduced in 20080514 on 64-bit systems where the elimination of 10509ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10510715 10511 10512Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10513exit 10514path did not delete a locally allocated structure. 10515 10516Updated definitions for the DMAR and SRAT tables to synchronize with the 10517current specifications. Includes disassembler support. 10518 10519Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10520loop termination value was used. Loop terminated on iteration early, 10521missing 10522one mutex. Linn Crosetto 10523 10524Example Code and Data Size: These are the sizes for the OS-independent 10525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10526debug version of the code includes the debug output trace mechanism and 10527has a 10528much larger code and data size. 10529 10530 Previous Release: 10531 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10532 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10533 Current Release: 10534 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10535 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10536 105372) iASL Compiler/Disassembler and Tools: 10538 10539Disassembler: Implemented support for EisaId() within _CID objects. Now 10540disassemble integer _CID objects back to EisaId invocations, including 10541multiple integers within _CID packages. Includes single-step support for 10542debugger also. 10543 10544Disassembler: Added support for DMAR and SRAT table definition changes. 10545 10546---------------------------------------- 1054714 May 2008. Summary of changes for version 20080514: 10548 105491) ACPI CA Core Subsystem: 10550 10551Fixed a problem where GPEs were enabled too early during the ACPICA 10552initialization. This could lead to "handler not installed" errors on some 10553machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10554This 10555ensures that all operation regions and devices throughout the namespace 10556have 10557been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10558 10559Implemented a change to the enter sleep code. Moved execution of the _GTS 10560method to just before setting sleep enable bit. The execution was moved 10561from 10562AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10563immediately before the SLP_EN bit is set, as per the ACPI specification. 10564Luming Yu, BZ 1653. 10565 10566Implemented a fix to disable unknown GPEs (2nd version). Now always 10567disable 10568the GPE, even if ACPICA thinks that that it is already disabled. It is 10569possible that the AML or some other code has enabled the GPE unbeknownst 10570to 10571the ACPICA code. 10572 10573Fixed a problem with the Field operator where zero-length fields would 10574return 10575an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10576ASL 10577field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10578 10579Implemented a fix for the Load operator, now load the table at the 10580namespace 10581root. This reverts a change introduced in version 20071019. The table is 10582now 10583loaded at the namespace root even though this goes against the ACPI 10584specification. This provides compatibility with other ACPI 10585implementations. 10586The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10587Ming. 10588 10589Fixed a problem where ACPICA would not Load() tables with unusual 10590signatures. 10591Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10592acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10593Therefore, signature validation is worthless. Apparently MS ACPI accepts 10594such 10595signatures, ACPICA must be compatible. BZ 10454. 10596 10597Fixed a possible negative array index in AcpiUtValidateException. Added 10598NULL 10599fields to the exception string arrays to eliminate a -1 subtraction on 10600the 10601SubStatus field. 10602 10603Updated the debug tracking macros to reduce overall code and data size. 10604Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10605instead of pointers to static strings. Jan Beulich and Bob Moore. 10606 10607Implemented argument count checking in control method invocation via 10608AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10609too 10610many. This applies only to extern programmatic control method execution, 10611not 10612method-to-method calls within the AML. Lin Ming. 10613 10614Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10615no 10616longer needed, especially with the removal of 16-bit support. It was 10617replaced 10618mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10619bit 10620on 1062132/64-bit platforms is required. 10622 10623Added the C const qualifier for appropriate string constants -- mostly 10624MODULE_NAME and printf format strings. Jan Beulich. 10625 10626Example Code and Data Size: These are the sizes for the OS-independent 10627acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10628debug version of the code includes the debug output trace mechanism and 10629has a 10630much larger code and data size. 10631 10632 Previous Release: 10633 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10634 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10635 Current Release: 10636 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10637 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10638 106392) iASL Compiler/Disassembler and Tools: 10640 10641Implemented ACPI table revision ID validation in the disassembler. Zero 10642is 10643always invalid. For DSDTs, the ID controls the interpreter integer width. 106441 10645means 32-bit and this is unusual. 2 or greater is 64-bit. 10646 10647---------------------------------------- 1064821 March 2008. Summary of changes for version 20080321: 10649 106501) ACPI CA Core Subsystem: 10651 10652Implemented an additional change to the GPE support in order to suppress 10653spurious or stray GPEs. The AcpiEvDisableGpe function will now 10654permanently 10655disable incoming GPEs that are neither enabled nor disabled -- meaning 10656that 10657the GPE is unknown to the system. This should prevent future interrupt 10658floods 10659from that GPE. BZ 6217 (Zhang Rui) 10660 10661Fixed a problem where NULL package elements were not returned to the 10662AcpiEvaluateObject interface correctly. The element was simply ignored 10663instead of returning a NULL ACPI_OBJECT package element, potentially 10664causing 10665a buffer overflow and/or confusing the caller who expected a fixed number 10666of 10667elements. BZ 10132 (Lin Ming, Bob Moore) 10668 10669Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10670Dword, 10671Qword), Field, BankField, and IndexField operators when invoked from 10672inside 10673an executing control method. In this case, these operators created 10674namespace 10675nodes that were incorrectly left marked as permanent nodes instead of 10676temporary nodes. This could cause a problem if there is race condition 10677between an exiting control method and a running namespace walk. (Reported 10678by 10679Linn Crosetto) 10680 10681Fixed a problem where the CreateField and CreateXXXField operators would 10682incorrectly allow duplicate names (the name of the field) with no 10683exception 10684generated. 10685 10686Implemented several changes for Notify handling. Added support for new 10687Notify 10688values (ACPI 2.0+) and improved the Notify debug output. Notify on 10689PowerResource objects is no longer allowed, as per the ACPI 10690specification. 10691(Bob Moore, Zhang Rui) 10692 10693All Reference Objects returned via the AcpiEvaluateObject interface are 10694now 10695marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10696for 10697NULL objects - either NULL package elements or unresolved named 10698references. 10699 10700Fixed a problem where an extraneous debug message was produced for 10701package 10702objects (when debugging enabled). The message "Package List length larger 10703than NumElements count" is now produced in the correct case, and is now 10704an 10705error message rather than a debug message. Added a debug message for the 10706opposite case, where NumElements is larger than the Package List (the 10707package 10708will be padded out with NULL elements as per the ACPI spec.) 10709 10710Implemented several improvements for the output of the ASL "Debug" object 10711to 10712clarify and keep all data for a given object on one output line. 10713 10714Fixed two size calculation issues with the variable-length Start 10715Dependent 10716resource descriptor. 10717 10718Example Code and Data Size: These are the sizes for the OS-independent 10719acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10720debug version of the code includes the debug output trace mechanism and 10721has 10722a much larger code and data size. 10723 10724 Previous Release: 10725 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10726 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10727 Current Release: 10728 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10729 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10730 107312) iASL Compiler/Disassembler and Tools: 10732 10733Fixed a problem with the use of the Switch operator where execution of 10734the 10735containing method by multiple concurrent threads could cause an 10736AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10737actual Switch opcode, it must be simulated with local named temporary 10738variables and if/else pairs. The solution chosen was to mark any method 10739that 10740uses Switch as Serialized, thus preventing multiple thread entries. BZ 10741469. 10742 10743---------------------------------------- 1074413 February 2008. Summary of changes for version 20080213: 10745 107461) ACPI CA Core Subsystem: 10747 10748Implemented another MS compatibility design change for GPE/Notify 10749handling. 10750GPEs are now cleared/enabled asynchronously to allow all pending notifies 10751to 10752complete first. It is expected that the OSL will queue the enable request 10753behind all pending notify requests (may require changes to the local host 10754OSL 10755in AcpiOsExecute). Alexey Starikovskiy. 10756 10757Fixed a problem where buffer and package objects passed as arguments to a 10758control method via the external AcpiEvaluateObject interface could cause 10759an 10760AE_AML_INTERNAL exception depending on the order and type of operators 10761executed by the target control method. 10762 10763Fixed a problem where resource descriptor size optimization could cause a 10764problem when a _CRS resource template is passed to a _SRS method. The 10765_SRS 10766resource template must use the same descriptors (with the same size) as 10767returned from _CRS. This change affects the following resource 10768descriptors: 10769IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 107709487) 10771 10772Fixed a problem where a CopyObject to RegionField, BankField, and 10773IndexField 10774objects did not perform an implicit conversion as it should. These types 10775must 10776retain their initial type permanently as per the ACPI specification. 10777However, 10778a CopyObject to all other object types should not perform an implicit 10779conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10780 10781Fixed a problem with the AcpiGetDevices interface where the mechanism to 10782match device CIDs did not examine the entire list of available CIDs, but 10783instead aborted on the first non-matching CID. Andrew Patterson. 10784 10785Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10786was 10787inadvertently changed to return a 16-bit value instead of a 32-bit value, 10788truncating the upper dword of a 64-bit value. This macro is only used to 10789display debug output, so no incorrect calculations were made. Also, 10790reimplemented the macro so that a 64-bit shift is not performed by 10791inefficient compilers. 10792 10793Added missing va_end statements that should correspond with each va_start 10794statement. 10795 10796Example Code and Data Size: These are the sizes for the OS-independent 10797acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10798debug version of the code includes the debug output trace mechanism and 10799has 10800a much larger code and data size. 10801 10802 Previous Release: 10803 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10804 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10805 Current Release: 10806 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10807 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10808 108092) iASL Compiler/Disassembler and Tools: 10810 10811Implemented full disassembler support for the following new ACPI tables: 10812BERT, EINJ, and ERST. Implemented partial disassembler support for the 10813complicated HEST table. These tables support the Windows Hardware Error 10814Architecture (WHEA). 10815 10816---------------------------------------- 1081723 January 2008. Summary of changes for version 20080123: 10818 108191) ACPI CA Core Subsystem: 10820 10821Added the 2008 copyright to all module headers and signons. This affects 10822virtually every file in the ACPICA core subsystem, the iASL compiler, and 10823the tools/utilities. 10824 10825Fixed a problem with the SizeOf operator when used with Package and 10826Buffer 10827objects. These objects have deferred execution for some arguments, and 10828the 10829execution is now completed before the SizeOf is executed. This problem 10830caused 10831unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10832BZ 108339558 10834 10835Implemented an enhancement to the interpreter "slack mode". In the 10836absence 10837of 10838an explicit return or an implicitly returned object from the last 10839executed 10840opcode, a control method will now implicitly return an integer of value 0 10841for 10842Microsoft compatibility. (Lin Ming) BZ 392 10843 10844Fixed a problem with the Load operator where an exception was not 10845returned 10846in 10847the case where the table is already loaded. (Lin Ming) BZ 463 10848 10849Implemented support for the use of DDBHandles as an Indexed Reference, as 10850per 10851the ACPI spec. (Lin Ming) BZ 486 10852 10853Implemented support for UserTerm (Method invocation) for the Unload 10854operator 10855as per the ACPI spec. (Lin Ming) BZ 580 10856 10857Fixed a problem with the LoadTable operator where the OemId and 10858OemTableId 10859input strings could cause unexpected failures if they were shorter than 10860the 10861maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10862 10863Implemented support for UserTerm (Method invocation) for the Unload 10864operator 10865as per the ACPI spec. (Lin Ming) BZ 580 10866 10867Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10868HEST, 10869IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10870 10871Example Code and Data Size: These are the sizes for the OS-independent 10872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10873debug version of the code includes the debug output trace mechanism and 10874has 10875a much larger code and data size. 10876 10877 Previous Release: 10878 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10879 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10880 Current Release: 10881 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10882 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10883 108842) iASL Compiler/Disassembler and Tools: 10885 10886Implemented support in the disassembler for checksum validation on 10887incoming 10888binary DSDTs and SSDTs. If incorrect, a message is displayed within the 10889table 10890header dump at the start of the disassembly. 10891 10892Implemented additional debugging information in the namespace listing 10893file 10894created during compilation. In addition to the namespace hierarchy, the 10895full 10896pathname to each namespace object is displayed. 10897 10898Fixed a problem with the disassembler where invalid ACPI tables could 10899cause 10900faults or infinite loops. 10901 10902Fixed an unexpected parse error when using the optional "parameter types" 10903list in a control method declaration. (Lin Ming) BZ 397 10904 10905Fixed a problem where two External declarations with the same name did 10906not 10907cause an error (Lin Ming) BZ 509 10908 10909Implemented support for full TermArgs (adding Argx, Localx and method 10910invocation) for the ParameterData parameter to the LoadTable operator. 10911(Lin 10912Ming) BZ 583,587 10913 10914---------------------------------------- 1091519 December 2007. Summary of changes for version 20071219: 10916 109171) ACPI CA Core Subsystem: 10918 10919Implemented full support for deferred execution for the TermArg string 10920arguments for DataTableRegion. This enables forward references and full 10921operand resolution for the three string arguments. Similar to 10922OperationRegion 10923deferred argument execution.) Lin Ming. BZ 430 10924 10925Implemented full argument resolution support for the BankValue argument 10926to 10927BankField. Previously, only constants were supported, now any TermArg may 10928be 10929used. Lin Ming BZ 387, 393 10930 10931Fixed a problem with AcpiGetDevices where the search of a branch of the 10932device tree could be terminated prematurely. In accordance with the ACPI 10933specification, the search down the current branch is terminated if a 10934device 10935is both not present and not functional (instead of just not present.) 10936Yakui 10937Zhao. 10938 10939Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 10940if 10941the underlying AML code changed the GPE enable registers. Now, any 10942unknown 10943incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 10944disabled 10945instead of simply ignored. Rui Zhang. 10946 10947Fixed a problem with Index Fields where the Index register was 10948incorrectly 10949limited to a maximum of 32 bits. Now any size may be used. 10950 10951Fixed a couple memory leaks associated with "implicit return" objects 10952when 10953the AML Interpreter slack mode is enabled. Lin Ming BZ 349 10954 10955Example Code and Data Size: These are the sizes for the OS-independent 10956acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10957debug version of the code includes the debug output trace mechanism and 10958has 10959a much larger code and data size. 10960 10961 Previous Release: 10962 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 10963 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 10964 Current Release: 10965 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10966 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10967 10968---------------------------------------- 1096914 November 2007. Summary of changes for version 20071114: 10970 109711) ACPI CA Core Subsystem: 10972 10973Implemented event counters for each of the Fixed Events, the ACPI SCI 10974(interrupt) itself, and control methods executed. Named 10975AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 10976These 10977should be useful for debugging and statistics. 10978 10979Implemented a new external interface, AcpiGetStatistics, to retrieve the 10980contents of the various event counters. Returns the current values for 10981AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 10982AcpiMethodCount. The interface can be expanded in the future if new 10983counters 10984are added. Device drivers should use this interface rather than access 10985the 10986counters directly. 10987 10988Fixed a problem with the FromBCD and ToBCD operators. With some 10989compilers, 10990the ShortDivide function worked incorrectly, causing problems with the 10991BCD 10992functions with large input values. A truncation from 64-bit to 32-bit 10993inadvertently occurred. Internal BZ 435. Lin Ming 10994 10995Fixed a problem with Index references passed as method arguments. 10996References 10997passed as arguments to control methods were dereferenced immediately 10998(before 10999control was passed to the called method). The references are now 11000correctly 11001passed directly to the called method. BZ 5389. Lin Ming 11002 11003Fixed a problem with CopyObject used in conjunction with the Index 11004operator. 11005The reference was incorrectly dereferenced before the copy. The reference 11006is 11007now correctly copied. BZ 5391. Lin Ming 11008 11009Fixed a problem with Control Method references within Package objects. 11010These 11011references are now correctly generated. This completes the package 11012construction overhaul that began in version 20071019. 11013 11014Example Code and Data Size: These are the sizes for the OS-independent 11015acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11016debug version of the code includes the debug output trace mechanism and 11017has 11018a much larger code and data size. 11019 11020 Previous Release: 11021 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11022 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11023 Current Release: 11024 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11025 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11026 11027 110282) iASL Compiler/Disassembler and Tools: 11029 11030The AcpiExec utility now installs handlers for all of the predefined 11031Operation Region types. New types supported are: PCI_Config, CMOS, and 11032PCIBARTarget. 11033 11034Fixed a problem with the 64-bit version of AcpiExec where the extended 11035(64- 11036bit) address fields for the DSDT and FACS within the FADT were not being 11037used, causing truncation of the upper 32-bits of these addresses. Lin 11038Ming 11039and Bob Moore 11040 11041---------------------------------------- 1104219 October 2007. Summary of changes for version 20071019: 11043 110441) ACPI CA Core Subsystem: 11045 11046Fixed a problem with the Alias operator when the target of the alias is a 11047named ASL operator that opens a new scope -- Scope, Device, 11048PowerResource, 11049Processor, and ThermalZone. In these cases, any children of the original 11050operator could not be accessed via the alias, potentially causing 11051unexpected 11052AE_NOT_FOUND exceptions. (BZ 9067) 11053 11054Fixed a problem with the Package operator where all named references were 11055created as object references and left otherwise unresolved. According to 11056the 11057ACPI specification, a Package can only contain Data Objects or references 11058to 11059control methods. The implication is that named references to Data Objects 11060(Integer, Buffer, String, Package, BufferField, Field) should be resolved 11061immediately upon package creation. This is the approach taken with this 11062change. References to all other named objects (Methods, Devices, Scopes, 11063etc.) are all now properly created as reference objects. (BZ 5328) 11064 11065Reverted a change to Notify handling that was introduced in version 1106620070508. This version changed the Notify handling from asynchronous to 11067fully synchronous (Device driver Notify handling with respect to the 11068Notify 11069ASL operator). It was found that this change caused more problems than it 11070solved and was removed by most users. 11071 11072Fixed a problem with the Increment and Decrement operators where the type 11073of 11074the target object could be unexpectedly and incorrectly changed. (BZ 353) 11075Lin Ming. 11076 11077Fixed a problem with the Load and LoadTable operators where the table 11078location within the namespace was ignored. Instead, the table was always 11079loaded into the root or current scope. Lin Ming. 11080 11081Fixed a problem with the Load operator when loading a table from a buffer 11082object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 11083 11084Fixed a problem with the Debug object where a store of a DdbHandle 11085reference 11086object to the Debug object could cause a fault. 11087 11088Added a table checksum verification for the Load operator, in the case 11089where 11090the load is from a buffer. (BZ 578). 11091 11092Implemented additional parameter validation for the LoadTable operator. 11093The 11094length of the input strings SignatureString, OemIdString, and OemTableId 11095are 11096now checked for maximum lengths. (BZ 582) Lin Ming. 11097 11098Example Code and Data Size: These are the sizes for the OS-independent 11099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11100debug version of the code includes the debug output trace mechanism and 11101has 11102a much larger code and data size. 11103 11104 Previous Release: 11105 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11106 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11107 Current Release: 11108 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11109 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11110 11111 111122) iASL Compiler/Disassembler: 11113 11114Fixed a problem where if a single file was specified and the file did not 11115exist, no error message was emitted. (Introduced with wildcard support in 11116version 20070917.) 11117 11118---------------------------------------- 1111919 September 2007. Summary of changes for version 20070919: 11120 111211) ACPI CA Core Subsystem: 11122 11123Designed and implemented new external interfaces to install and remove 11124handlers for ACPI table-related events. Current events that are defined 11125are 11126LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 11127they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 11128AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 11129 11130Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 11131(acpi_serialized option on Linux) could cause some systems to hang during 11132initialization. (Bob Moore) BZ 8171 11133 11134Fixed a problem where objects of certain types (Device, ThermalZone, 11135Processor, PowerResource) can be not found if they are declared and 11136referenced from within the same control method (Lin Ming) BZ 341 11137 11138Example Code and Data Size: These are the sizes for the OS-independent 11139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11140debug version of the code includes the debug output trace mechanism and 11141has 11142a much larger code and data size. 11143 11144 Previous Release: 11145 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11146 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11147 Current Release: 11148 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11149 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11150 11151 111522) iASL Compiler/Disassembler: 11153 11154Implemented support to allow multiple files to be compiled/disassembled 11155in 11156a 11157single invocation. This includes command line wildcard support for both 11158the 11159Windows and Unix versions of the compiler. This feature simplifies the 11160disassembly and compilation of multiple ACPI tables in a single 11161directory. 11162 11163---------------------------------------- 1116408 May 2007. Summary of changes for version 20070508: 11165 111661) ACPI CA Core Subsystem: 11167 11168Implemented a Microsoft compatibility design change for the handling of 11169the 11170Notify AML operator. Previously, notify handlers were dispatched and 11171executed completely asynchronously in a deferred thread. The new design 11172still executes the notify handlers in a different thread, but the 11173original 11174thread that executed the Notify() now waits at a synchronization point 11175for 11176the notify handler to complete. Some machines depend on a synchronous 11177Notify 11178operator in order to operate correctly. 11179 11180Implemented support to allow Package objects to be passed as method 11181arguments to the external AcpiEvaluateObject interface. Previously, this 11182would return the AE_NOT_IMPLEMENTED exception. This feature had not been 11183implemented since there were no reserved control methods that required it 11184until recently. 11185 11186Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 11187that 11188contained invalid non-zero values in reserved fields could cause later 11189failures because these fields have meaning in later revisions of the 11190FADT. 11191For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 11192fields 11193are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 11194 11195Fixed a problem where the Global Lock handle was not properly updated if 11196a 11197thread that acquired the Global Lock via executing AML code then 11198attempted 11199to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 11200Joe 11201Liu. 11202 11203Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 11204could be corrupted if the interrupt being removed was at the head of the 11205list. Reported by Linn Crosetto. 11206 11207Example Code and Data Size: These are the sizes for the OS-independent 11208acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11209debug version of the code includes the debug output trace mechanism and 11210has 11211a much larger code and data size. 11212 11213 Previous Release: 11214 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11215 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11216 Current Release: 11217 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11218 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11219 11220---------------------------------------- 1122120 March 2007. Summary of changes for version 20070320: 11222 112231) ACPI CA Core Subsystem: 11224 11225Implemented a change to the order of interpretation and evaluation of AML 11226operand objects within the AML interpreter. The interpreter now evaluates 11227operands in the order that they appear in the AML stream (and the 11228corresponding ASL code), instead of in the reverse order (after the 11229entire 11230operand list has been parsed). The previous behavior caused several 11231subtle 11232incompatibilities with the Microsoft AML interpreter as well as being 11233somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 11234 11235Implemented a change to the ACPI Global Lock support. All interfaces to 11236the 11237global lock now allow the same thread to acquire the lock multiple times. 11238This affects the AcpiAcquireGlobalLock external interface to the global 11239lock 11240as well as the internal use of the global lock to support AML fields -- a 11241control method that is holding the global lock can now simultaneously 11242access 11243AML fields that require global lock protection. Previously, in both 11244cases, 11245this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 11246to 11247AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 11248Controller. There is no change to the behavior of the AML Acquire 11249operator, 11250as this can already be used to acquire a mutex multiple times by the same 11251thread. BZ 8066. With assistance from Alexey Starikovskiy. 11252 11253Fixed a problem where invalid objects could be referenced in the AML 11254Interpreter after error conditions. During operand evaluation, ensure 11255that 11256the internal "Return Object" field is cleared on error and only valid 11257pointers are stored there. Caused occasional access to deleted objects 11258that 11259resulted in "large reference count" warning messages. Valery Podrezov. 11260 11261Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 11262on 11263deeply nested control method invocations. BZ 7873, local BZ 487. Valery 11264Podrezov. 11265 11266Fixed an internal problem with the handling of result objects on the 11267interpreter result stack. BZ 7872. Valery Podrezov. 11268 11269Removed obsolete code that handled the case where AML_NAME_OP is the 11270target 11271of a reference (Reference.Opcode). This code was no longer necessary. BZ 112727874. Valery Podrezov. 11273 11274Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 11275was 11276a 11277remnant from the previously discontinued 16-bit support. 11278 11279Example Code and Data Size: These are the sizes for the OS-independent 11280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11281debug version of the code includes the debug output trace mechanism and 11282has 11283a much larger code and data size. 11284 11285 Previous Release: 11286 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11287 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11288 Current Release: 11289 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11290 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11291 11292---------------------------------------- 1129326 January 2007. Summary of changes for version 20070126: 11294 112951) ACPI CA Core Subsystem: 11296 11297Added the 2007 copyright to all module headers and signons. This affects 11298virtually every file in the ACPICA core subsystem, the iASL compiler, and 11299the utilities. 11300 11301Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 11302during a table load. A bad pointer was passed in the case where the DSDT 11303is 11304overridden, causing a fault in this case. 11305 11306Example Code and Data Size: These are the sizes for the OS-independent 11307acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11308debug version of the code includes the debug output trace mechanism and 11309has 11310a much larger code and data size. 11311 11312 Previous Release: 11313 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11314 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11315 Current Release: 11316 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11317 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11318 11319---------------------------------------- 1132015 December 2006. Summary of changes for version 20061215: 11321 113221) ACPI CA Core Subsystem: 11323 11324Support for 16-bit ACPICA has been completely removed since it is no 11325longer 11326necessary and it clutters the code. All 16-bit macros, types, and 11327conditional compiles have been removed, cleaning up and simplifying the 11328code 11329across the entire subsystem. DOS support is no longer needed since the 11330bootable Linux firmware kit is now available. 11331 11332The handler for the Global Lock is now removed during AcpiTerminate to 11333enable a clean subsystem restart, via the implementation of the 11334AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 11335HP) 11336 11337Implemented enhancements to the multithreading support within the 11338debugger 11339to enable improved multithreading debugging and evaluation of the 11340subsystem. 11341(Valery Podrezov) 11342 11343Debugger: Enhanced the Statistics/Memory command to emit the total 11344(maximum) 11345memory used during the execution, as well as the maximum memory consumed 11346by 11347each of the various object types. (Valery Podrezov) 11348 11349Example Code and Data Size: These are the sizes for the OS-independent 11350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11351debug version of the code includes the debug output trace mechanism and 11352has 11353a much larger code and data size. 11354 11355 Previous Release: 11356 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11357 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11358 Current Release: 11359 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11360 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11361 11362 113632) iASL Compiler/Disassembler and Tools: 11364 11365AcpiExec: Implemented a new option (-m) to display full memory use 11366statistics upon subsystem/program termination. (Valery Podrezov) 11367 11368---------------------------------------- 1136909 November 2006. Summary of changes for version 20061109: 11370 113711) ACPI CA Core Subsystem: 11372 11373Optimized the Load ASL operator in the case where the source operand is 11374an 11375operation region. Simply map the operation region memory, instead of 11376performing a bytewise read. (Region must be of type SystemMemory, see 11377below.) 11378 11379Fixed the Load ASL operator for the case where the source operand is a 11380region field. A buffer object is also allowed as the source operand. BZ 11381480 11382 11383Fixed a problem where the Load ASL operator allowed the source operand to 11384be 11385an operation region of any type. It is now restricted to regions of type 11386SystemMemory, as per the ACPI specification. BZ 481 11387 11388Additional cleanup and optimizations for the new Table Manager code. 11389 11390AcpiEnable will now fail if all of the required ACPI tables are not 11391loaded 11392(FADT, FACS, DSDT). BZ 477 11393 11394Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11395this 11396header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11397manually optimized to be aligned and will not work if it is byte-packed. 11398 11399Example Code and Data Size: These are the sizes for the OS-independent 11400acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11401debug version of the code includes the debug output trace mechanism and 11402has 11403a much larger code and data size. 11404 11405 Previous Release: 11406 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11407 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11408 Current Release: 11409 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11410 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11411 11412 114132) iASL Compiler/Disassembler and Tools: 11414 11415Fixed a problem where the presence of the _OSI predefined control method 11416within complex expressions could cause an internal compiler error. 11417 11418AcpiExec: Implemented full region support for multiple address spaces. 11419SpaceId is now part of the REGION object. BZ 429 11420 11421---------------------------------------- 1142211 October 2006. Summary of changes for version 20061011: 11423 114241) ACPI CA Core Subsystem: 11425 11426Completed an AML interpreter performance enhancement for control method 11427execution. Previously a 2-pass parse/execution, control methods are now 11428completely parsed and executed in a single pass. This improves overall 11429interpreter performance by ~25%, reduces code size, and reduces CPU stack 11430use. (Valery Podrezov + interpreter changes in version 20051202 that 11431eliminated namespace loading during the pass one parse.) 11432 11433Implemented _CID support for PCI Root Bridge detection. If the _HID does 11434not 11435match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11436now 11437obtained and also checked for an ID match. 11438 11439Implemented additional support for the PCI _ADR execution: upsearch until 11440a 11441device scope is found before executing _ADR. This allows PCI_Config 11442operation regions to be declared locally within control methods 11443underneath 11444PCI device objects. 11445 11446Fixed a problem with a possible race condition between threads executing 11447AcpiWalkNamespace and the AML interpreter. This condition was removed by 11448modifying AcpiWalkNamespace to (by default) ignore all temporary 11449namespace 11450entries created during any concurrent control method execution. An 11451additional namespace race condition is known to exist between 11452AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11453investigation. 11454 11455Restructured the AML ParseLoop function, breaking it into several 11456subfunctions in order to reduce CPU stack use and improve 11457maintainability. 11458(Mikhail Kouzmich) 11459 11460AcpiGetHandle: Fix for parameter validation to detect invalid 11461combinations 11462of prefix handle and pathname. BZ 478 11463 11464Example Code and Data Size: These are the sizes for the OS-independent 11465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11466debug version of the code includes the debug output trace mechanism and 11467has 11468a much larger code and data size. 11469 11470 Previous Release: 11471 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11472 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11473 Current Release: 11474 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11475 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11476 114772) iASL Compiler/Disassembler and Tools: 11478 11479Ported the -g option (get local ACPI tables) to the new ACPICA Table 11480Manager 11481to restore original behavior. 11482 11483---------------------------------------- 1148427 September 2006. Summary of changes for version 20060927: 11485 114861) ACPI CA Core Subsystem: 11487 11488Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11489These functions now use a spinlock for mutual exclusion and the interrupt 11490level indication flag is not needed. 11491 11492Fixed a problem with the Global Lock where the lock could appear to be 11493obtained before it is actually obtained. The global lock semaphore was 11494inadvertently created with one unit instead of zero units. (BZ 464) 11495Fiodor 11496Suietov. 11497 11498Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11499during 11500a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11501 11502Example Code and Data Size: These are the sizes for the OS-independent 11503acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11504debug version of the code includes the debug output trace mechanism and 11505has 11506a much larger code and data size. 11507 11508 Previous Release: 11509 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11510 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11511 Current Release: 11512 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11513 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11514 11515 115162) iASL Compiler/Disassembler and Tools: 11517 11518Fixed a compilation problem with the pre-defined Resource Descriptor 11519field 11520names where an "object does not exist" error could be incorrectly 11521generated 11522if the parent ResourceTemplate pathname places the template within a 11523different namespace scope than the current scope. (BZ 7212) 11524 11525Fixed a problem where the compiler could hang after syntax errors 11526detected 11527in an ElseIf construct. (BZ 453) 11528 11529Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11530operator. An incorrect output filename was produced when this parameter 11531was 11532a null string (""). Now, the original input filename is used as the AML 11533output filename, with an ".aml" extension. 11534 11535Implemented a generic batch command mode for the AcpiExec utility 11536(execute 11537any AML debugger command) (Valery Podrezov). 11538 11539---------------------------------------- 1154012 September 2006. Summary of changes for version 20060912: 11541 115421) ACPI CA Core Subsystem: 11543 11544Enhanced the implementation of the "serialized mode" of the interpreter 11545(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11546specified, instead of creating a serialization semaphore per control 11547method, 11548the interpreter lock is simply no longer released before a blocking 11549operation during control method execution. This effectively makes the AML 11550Interpreter single-threaded. The overhead of a semaphore per-method is 11551eliminated. 11552 11553Fixed a regression where an error was no longer emitted if a control 11554method 11555attempts to create 2 objects of the same name. This once again returns 11556AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11557that 11558will dynamically serialize the control method to possible prevent future 11559errors. (BZ 440) 11560 11561Integrated a fix for a problem with PCI Express HID detection in the PCI 11562Config Space setup procedure. (BZ 7145) 11563 11564Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11565AcpiHwInitialize function - the FADT registers are now validated when the 11566table is loaded. 11567 11568Added two new warnings during FADT verification - 1) if the FADT is 11569larger 11570than the largest known FADT version, and 2) if there is a mismatch 11571between 11572a 1157332-bit block address and the 64-bit X counterpart (when both are non- 11574zero.) 11575 11576Example Code and Data Size: These are the sizes for the OS-independent 11577acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11578debug version of the code includes the debug output trace mechanism and 11579has 11580a much larger code and data size. 11581 11582 Previous Release: 11583 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11584 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11585 Current Release: 11586 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11587 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11588 11589 115902) iASL Compiler/Disassembler and Tools: 11591 11592Fixed a problem with the implementation of the Switch() operator where 11593the 11594temporary variable was declared too close to the actual Switch, instead 11595of 11596at method level. This could cause a problem if the Switch() operator is 11597within a while loop, causing an error on the second iteration. (BZ 460) 11598 11599Disassembler - fix for error emitted for unknown type for target of scope 11600operator. Now, ignore it and continue. 11601 11602Disassembly of an FADT now verifies the input FADT and reports any errors 11603found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11604 11605Disassembly of raw data buffers with byte initialization data now 11606prefixes 11607each output line with the current buffer offset. 11608 11609Disassembly of ASF! table now includes all variable-length data fields at 11610the end of some of the subtables. 11611 11612The disassembler now emits a comment if a buffer appears to be a 11613ResourceTemplate, but cannot be disassembled as such because the EndTag 11614does 11615not appear at the very end of the buffer. 11616 11617AcpiExec - Added the "-t" command line option to enable the serialized 11618mode 11619of the AML interpreter. 11620 11621---------------------------------------- 1162231 August 2006. Summary of changes for version 20060831: 11623 116241) ACPI CA Core Subsystem: 11625 11626Miscellaneous fixes for the Table Manager: 11627- Correctly initialize internal common FADT for all 64-bit "X" fields 11628- Fixed a couple table mapping issues during table load 11629- Fixed a couple alignment issues for IA64 11630- Initialize input array to zero in AcpiInitializeTables 11631- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11632AcpiGetTableByIndex 11633 11634Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11635now 11636immediately disabled to prevent the waking GPE from firing again and to 11637prevent other wake GPEs from interrupting the wake process. 11638 11639Added the AcpiGpeCount global that tracks the number of processed GPEs, 11640to 11641be used for debugging systems with a large number of ACPI interrupts. 11642 11643Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11644both the ACPICA headers and the disassembler. 11645 11646Example Code and Data Size: These are the sizes for the OS-independent 11647acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11648debug version of the code includes the debug output trace mechanism and 11649has 11650a much larger code and data size. 11651 11652 Previous Release: 11653 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11654 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11655 Current Release: 11656 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11657 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11658 11659 116602) iASL Compiler/Disassembler and Tools: 11661 11662Disassembler support for the DMAR ACPI table. 11663 11664---------------------------------------- 1166523 August 2006. Summary of changes for version 20060823: 11666 116671) ACPI CA Core Subsystem: 11668 11669The Table Manager component has been completely redesigned and 11670reimplemented. The new design is much simpler, and reduces the overall 11671code 11672and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11673is 11674now possible to obtain the ACPI tables very early during kernel 11675initialization, even before dynamic memory management is initialized. 11676(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11677 11678Obsolete ACPICA interfaces: 11679 11680- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11681init 11682time). 11683- AcpiLoadTable: Not needed. 11684- AcpiUnloadTable: Not needed. 11685 11686New ACPICA interfaces: 11687 11688- AcpiInitializeTables: Must be called before the table manager can be 11689used. 11690- AcpiReallocateRootTable: Used to transfer the root table to dynamically 11691allocated memory after it becomes available. 11692- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11693tables 11694in the RSDT/XSDT. 11695 11696Other ACPICA changes: 11697 11698- AcpiGetTableHeader returns the actual mapped table header, not a copy. 11699Use 11700AcpiOsUnmapMemory to free this mapping. 11701- AcpiGetTable returns the actual mapped table. The mapping is managed 11702internally and must not be deleted by the caller. Use of this interface 11703causes no additional dynamic memory allocation. 11704- AcpiFindRootPointer: Support for physical addressing has been 11705eliminated, 11706it appeared to be unused. 11707- The interface to AcpiOsMapMemory has changed to be consistent with the 11708other allocation interfaces. 11709- The interface to AcpiOsGetRootPointer has changed to eliminate 11710unnecessary 11711parameters. 11712- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1171364- 11714bit platforms. Was previously 64 bits on all platforms. 11715- The interface to the ACPI Global Lock acquire/release macros have 11716changed 11717slightly since ACPICA no longer keeps a local copy of the FACS with a 11718constructed pointer to the actual global lock. 11719 11720Porting to the new table manager: 11721 11722- AcpiInitializeTables: Must be called once, and can be called anytime 11723during the OS initialization process. It allows the host to specify an 11724area 11725of memory to be used to store the internal version of the RSDT/XSDT (root 11726table). This allows the host to access ACPI tables before memory 11727management 11728is initialized and running. 11729- AcpiReallocateRootTable: Can be called after memory management is 11730running 11731to copy the root table to a dynamically allocated array, freeing up the 11732scratch memory specified in the call to AcpiInitializeTables. 11733- AcpiSubsystemInitialize: This existing interface is independent of the 11734Table Manager, and does not have to be called before the Table Manager 11735can 11736be used, it only must be called before the rest of ACPICA can be used. 11737- ACPI Tables: Some changes have been made to the names and structure of 11738the 11739actbl.h and actbl1.h header files and may require changes to existing 11740code. 11741For example, bitfields have been completely removed because of their lack 11742of 11743portability across C compilers. 11744- Update interfaces to the Global Lock acquire/release macros if local 11745versions are used. (see acwin.h) 11746 11747Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11748 11749New files: tbfind.c 11750 11751Example Code and Data Size: These are the sizes for the OS-independent 11752acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11753debug version of the code includes the debug output trace mechanism and 11754has 11755a much larger code and data size. 11756 11757 Previous Release: 11758 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11759 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11760 Current Release: 11761 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11762 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11763 11764 117652) iASL Compiler/Disassembler and Tools: 11766 11767No changes for this release. 11768 11769---------------------------------------- 1177021 July 2006. Summary of changes for version 20060721: 11771 117721) ACPI CA Core Subsystem: 11773 11774The full source code for the ASL test suite used to validate the iASL 11775compiler and the ACPICA core subsystem is being released with the ACPICA 11776source for the first time. The source is contained in a separate package 11777and 11778consists of over 1100 files that exercise all ASL/AML operators. The 11779package 11780should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11781Fiodor 11782Suietov) 11783 11784Completed a new design and implementation for support of the ACPI Global 11785Lock. On the OS side, the global lock is now treated as a standard AML 11786mutex. Previously, multiple OS threads could "acquire" the global lock 11787simultaneously. However, this could cause the BIOS to be starved out of 11788the 11789lock - especially in cases such as the Embedded Controller driver where 11790there is a tight coupling between the OS and the BIOS. 11791 11792Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11793The Global Lock interrupt handler no longer queues the execution of a 11794separate thread to signal the global lock semaphore. Instead, the 11795semaphore 11796is signaled directly from the interrupt handler. 11797 11798Implemented support within the AML interpreter for package objects that 11799contain a larger AML length (package list length) than the package 11800element 11801count. In this case, the length of the package is truncated to match the 11802package element count. Some BIOS code apparently modifies the package 11803length 11804on the fly, and this change supports this behavior. Provides 11805compatibility 11806with the MS AML interpreter. (With assistance from Fiodor Suietov) 11807 11808Implemented a temporary fix for the BankValue parameter of a Bank Field 11809to 11810support all constant values, now including the Zero and One opcodes. 11811Evaluation of this parameter must eventually be converted to a full 11812TermArg 11813evaluation. A not-implemented error is now returned (temporarily) for 11814non- 11815constant values for this parameter. 11816 11817Fixed problem reports (Fiodor Suietov) integrated: 11818- Fix for premature object deletion after CopyObject on Operation Region 11819(BZ 11820350) 11821 11822Example Code and Data Size: These are the sizes for the OS-independent 11823acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11824debug version of the code includes the debug output trace mechanism and 11825has 11826a much larger code and data size. 11827 11828 Previous Release: 11829 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11830 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11831 Current Release: 11832 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11833 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11834 11835 118362) iASL Compiler/Disassembler and Tools: 11837 11838No changes for this release. 11839 11840---------------------------------------- 1184107 July 2006. Summary of changes for version 20060707: 11842 118431) ACPI CA Core Subsystem: 11844 11845Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11846that do not allow the initialization of address pointers within packed 11847structures - even though the hardware itself may support misaligned 11848transfers. Some of the debug data structures are packed by default to 11849minimize size. 11850 11851Added an error message for the case where AcpiOsGetThreadId() returns 11852zero. 11853A non-zero value is required by the core ACPICA code to ensure the proper 11854operation of AML mutexes and recursive control methods. 11855 11856The DSDT is now the only ACPI table that determines whether the AML 11857interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11858but 11859the hooks for per-table 32/64 switching have been removed from the code. 11860A 11861clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11862 11863Fixed a possible leak of an OwnerID in the error path of 11864AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11865deletion to a single place in AcpiTbUninstallTable to correct possible 11866leaks 11867when using the AcpiTbDeleteTablesByType interface (with assistance from 11868Lance Ortiz.) 11869 11870Fixed a problem with Serialized control methods where the semaphore 11871associated with the method could be over-signaled after multiple method 11872invocations. 11873 11874Fixed two issues with the locking of the internal namespace data 11875structure. 11876Both the Unload() operator and AcpiUnloadTable interface now lock the 11877namespace during the namespace deletion associated with the table unload 11878(with assistance from Linn Crosetto.) 11879 11880Fixed problem reports (Valery Podrezov) integrated: 11881- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11882 11883Fixed problem reports (Fiodor Suietov) integrated: 11884- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11885- On Address Space handler deletion, needless deactivation call (BZ 374) 11886- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11887375) 11888- Possible memory leak, Notify sub-objects of Processor, Power, 11889ThermalZone 11890(BZ 376) 11891- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 11892- Minimum Length of RSDT should be validated (BZ 379) 11893- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 11894Handler (BZ (380) 11895- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 11896loaded 11897(BZ 381) 11898 11899Example Code and Data Size: These are the sizes for the OS-independent 11900acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11901debug version of the code includes the debug output trace mechanism and 11902has 11903a much larger code and data size. 11904 11905 Previous Release: 11906 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11907 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11908 Current Release: 11909 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11910 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11911 11912 119132) iASL Compiler/Disassembler and Tools: 11914 11915Fixed problem reports: 11916Compiler segfault when ASL contains a long (>1024) String declaration (BZ 11917436) 11918 11919---------------------------------------- 1192023 June 2006. Summary of changes for version 20060623: 11921 119221) ACPI CA Core Subsystem: 11923 11924Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 11925allows the type to be customized to the host OS for improved efficiency 11926(since a spinlock is usually a very small object.) 11927 11928Implemented support for "ignored" bits in the ACPI registers. According 11929to 11930the ACPI specification, these bits should be preserved when writing the 11931registers via a read/modify/write cycle. There are 3 bits preserved in 11932this 11933manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 11934 11935Implemented the initial deployment of new OSL mutex interfaces. Since 11936some 11937host operating systems have separate mutex and semaphore objects, this 11938feature was requested. The base code now uses mutexes (and the new mutex 11939interfaces) wherever a binary semaphore was used previously. However, for 11940the current release, the mutex interfaces are defined as macros to map 11941them 11942to the existing semaphore interfaces. Therefore, no OSL changes are 11943required 11944at this time. (See acpiosxf.h) 11945 11946Fixed several problems with the support for the control method SyncLevel 11947parameter. The SyncLevel now works according to the ACPI specification 11948and 11949in concert with the Mutex SyncLevel parameter, since the current 11950SyncLevel 11951is a property of the executing thread. Mutual exclusion for control 11952methods 11953is now implemented with a mutex instead of a semaphore. 11954 11955Fixed three instances of the use of the C shift operator in the bitfield 11956support code (exfldio.c) to avoid the use of a shift value larger than 11957the 11958target data width. The behavior of C compilers is undefined in this case 11959and 11960can cause unpredictable results, and therefore the case must be detected 11961and 11962avoided. (Fiodor Suietov) 11963 11964Added an info message whenever an SSDT or OEM table is loaded dynamically 11965via the Load() or LoadTable() ASL operators. This should improve 11966debugging 11967capability since it will show exactly what tables have been loaded 11968(beyond 11969the tables present in the RSDT/XSDT.) 11970 11971Example Code and Data Size: These are the sizes for the OS-independent 11972acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11973debug version of the code includes the debug output trace mechanism and 11974has 11975a much larger code and data size. 11976 11977 Previous Release: 11978 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 11979 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 11980 Current Release: 11981 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 11982 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 11983 11984 119852) iASL Compiler/Disassembler and Tools: 11986 11987No changes for this release. 11988 11989---------------------------------------- 1199008 June 2006. Summary of changes for version 20060608: 11991 119921) ACPI CA Core Subsystem: 11993 11994Converted the locking mutex used for the ACPI hardware to a spinlock. 11995This 11996change should eliminate all problems caused by attempting to acquire a 11997semaphore at interrupt level, and it means that all ACPICA external 11998interfaces that directly access the ACPI hardware can be safely called 11999from 12000interrupt level. OSL code that implements the semaphore interfaces should 12001be 12002able to eliminate any workarounds for being called at interrupt level. 12003 12004Fixed a regression introduced in 20060526 where the ACPI device 12005initialization could be prematurely aborted with an AE_NOT_FOUND if a 12006device 12007did not have an optional _INI method. 12008 12009Fixed an IndexField issue where a write to the Data Register should be 12010limited in size to the AccessSize (width) of the IndexField itself. (BZ 12011433, 12012Fiodor Suietov) 12013 12014Fixed problem reports (Valery Podrezov) integrated: 12015- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 12016 12017Fixed problem reports (Fiodor Suietov) integrated: 12018- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 12019 12020Removed four global mutexes that were obsolete and were no longer being 12021used. 12022 12023Example Code and Data Size: These are the sizes for the OS-independent 12024acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12025debug version of the code includes the debug output trace mechanism and 12026has 12027a much larger code and data size. 12028 12029 Previous Release: 12030 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12031 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12032 Current Release: 12033 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12034 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12035 12036 120372) iASL Compiler/Disassembler and Tools: 12038 12039Fixed a fault when using -g option (get tables from registry) on Windows 12040machines. 12041 12042Fixed problem reports integrated: 12043- Generate error if CreateField NumBits parameter is zero. (BZ 405) 12044- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 12045Suietov) 12046- Global table revision override (-r) is ignored (BZ 413) 12047 12048---------------------------------------- 1204926 May 2006. Summary of changes for version 20060526: 12050 120511) ACPI CA Core Subsystem: 12052 12053Restructured, flattened, and simplified the internal interfaces for 12054namespace object evaluation - resulting in smaller code, less CPU stack 12055use, 12056and fewer interfaces. (With assistance from Mikhail Kouzmich) 12057 12058Fixed a problem with the CopyObject operator where the first parameter 12059was 12060not typed correctly for the parser, interpreter, compiler, and 12061disassembler. 12062Caused various errors and unexpected behavior. 12063 12064Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 12065produced incorrect results with some C compilers. Since the behavior of C 12066compilers when the shift value is larger than the datatype width is 12067apparently not well defined, the interpreter now detects this condition 12068and 12069simply returns zero as expected in all such cases. (BZ 395) 12070 12071Fixed problem reports (Valery Podrezov) integrated: 12072- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 12073- Allow interpreter to handle nested method declarations (BZ 5361) 12074 12075Fixed problem reports (Fiodor Suietov) integrated: 12076- AcpiTerminate doesn't free debug memory allocation list objects (BZ 12077355) 12078- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 12079356) 12080- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 12081- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 12082- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 12083- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 12084- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 12085- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 12086- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 12087365) 12088- Status of the Global Initialization Handler call not used (BZ 366) 12089- Incorrect object parameter to Global Initialization Handler (BZ 367) 12090 12091Example Code and Data Size: These are the sizes for the OS-independent 12092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12093debug version of the code includes the debug output trace mechanism and 12094has 12095a much larger code and data size. 12096 12097 Previous Release: 12098 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12099 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12100 Current Release: 12101 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12102 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12103 12104 121052) iASL Compiler/Disassembler and Tools: 12106 12107Modified the parser to allow the names IO, DMA, and IRQ to be used as 12108namespace identifiers with no collision with existing resource descriptor 12109macro names. This provides compatibility with other ASL compilers and is 12110most useful for disassembly/recompilation of existing tables without 12111parse 12112errors. (With assistance from Thomas Renninger) 12113 12114Disassembler: fixed an incorrect disassembly problem with the 12115DataTableRegion and CopyObject operators. Fixed a possible fault during 12116disassembly of some Alias operators. 12117 12118---------------------------------------- 1211912 May 2006. Summary of changes for version 20060512: 12120 121211) ACPI CA Core Subsystem: 12122 12123Replaced the AcpiOsQueueForExecution interface with a new interface named 12124AcpiOsExecute. The major difference is that the new interface does not 12125have 12126a Priority parameter, this appeared to be useless and has been replaced 12127by 12128a 12129Type parameter. The Type tells the host what type of execution is being 12130requested, such as global lock handler, notify handler, GPE handler, etc. 12131This allows the host to queue and execute the request as appropriate for 12132the 12133request type, possibly using different work queues and different 12134priorities 12135for the various request types. This enables fixes for multithreading 12136deadlock problems such as BZ #5534, and will require changes to all 12137existing 12138OS interface layers. (Alexey Starikovskiy and Bob Moore) 12139 12140Fixed a possible memory leak associated with the support for the so- 12141called 12142"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 12143Suietov) 12144 12145Fixed a problem with the Load() operator where a table load from an 12146operation region could overwrite an internal table buffer by up to 7 12147bytes 12148and cause alignment faults on IPF systems. (With assistance from Luming 12149Yu) 12150 12151Example Code and Data Size: These are the sizes for the OS-independent 12152acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12153debug version of the code includes the debug output trace mechanism and 12154has 12155a much larger code and data size. 12156 12157 Previous Release: 12158 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12159 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12160 Current Release: 12161 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12162 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12163 12164 12165 121662) iASL Compiler/Disassembler and Tools: 12167 12168Disassembler: Implemented support to cross reference the internal 12169namespace 12170and automatically generate ASL External() statements for symbols not 12171defined 12172within the current table being disassembled. This will simplify the 12173disassembly and recompilation of interdependent tables such as SSDTs 12174since 12175these statements will no longer have to be added manually. 12176 12177Disassembler: Implemented experimental support to automatically detect 12178invocations of external control methods and generate appropriate 12179External() 12180statements. This is problematic because the AML cannot be correctly 12181parsed 12182until the number of arguments for each control method is known. 12183Currently, 12184standalone method invocations and invocations as the source operand of a 12185Store() statement are supported. 12186 12187Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 12188LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 12189LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 12190more readable and likely closer to the original ASL source. 12191 12192---------------------------------------- 1219321 April 2006. Summary of changes for version 20060421: 12194 121951) ACPI CA Core Subsystem: 12196 12197Removed a device initialization optimization introduced in 20051216 where 12198the _STA method was not run unless an _INI was also present for the same 12199device. This optimization could cause problems because it could allow 12200_INI 12201methods to be run within a not-present device subtree. (If a not-present 12202device had no _INI, _STA would not be run, the not-present status would 12203not 12204be discovered, and the children of the device would be incorrectly 12205traversed.) 12206 12207Implemented a new _STA optimization where namespace subtrees that do not 12208contain _INI are identified and ignored during device initialization. 12209Selectively running _STA can significantly improve boot time on large 12210machines (with assistance from Len Brown.) 12211 12212Implemented support for the device initialization case where the returned 12213_STA flags indicate a device not-present but functioning. In this case, 12214_INI 12215is not run, but the device children are examined for presence, as per the 12216ACPI specification. 12217 12218Implemented an additional change to the IndexField support in order to 12219conform to MS behavior. The value written to the Index Register is not 12220simply a byte offset, it is a byte offset in units of the access width of 12221the parent Index Field. (Fiodor Suietov) 12222 12223Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 12224interface is called during the creation of all AML operation regions, and 12225allows the host OS to exert control over what addresses it will allow the 12226AML code to access. Operation Regions whose addresses are disallowed will 12227cause a runtime exception when they are actually accessed (will not 12228affect 12229or abort table loading.) See oswinxf or osunixxf for an example 12230implementation. 12231 12232Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 12233interface allows the host OS to match the various "optional" 12234interface/behavior strings for the _OSI predefined control method as 12235appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 12236for an example implementation. 12237 12238Restructured and corrected various problems in the exception handling 12239code 12240paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 12241(with assistance from Takayoshi Kochi.) 12242 12243Modified the Linux source converter to ignore quoted string literals 12244while 12245converting identifiers from mixed to lower case. This will correct 12246problems 12247with the disassembler and other areas where such strings must not be 12248modified. 12249 12250The ACPI_FUNCTION_* macros no longer require quotes around the function 12251name. This allows the Linux source converter to convert the names, now 12252that 12253the converter ignores quoted strings. 12254 12255Example Code and Data Size: These are the sizes for the OS-independent 12256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12257debug version of the code includes the debug output trace mechanism and 12258has 12259a much larger code and data size. 12260 12261 Previous Release: 12262 12263 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12264 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12265 Current Release: 12266 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12267 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12268 12269 122702) iASL Compiler/Disassembler and Tools: 12271 12272Implemented 3 new warnings for iASL, and implemented multiple warning 12273levels 12274(w2 flag). 12275 122761) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 12277not 12278WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 12279check for the possible timeout, a warning is issued. 12280 122812) Useless operators: If an ASL operator does not specify an optional 12282target 12283operand and it also does not use the function return value from the 12284operator, a warning is issued since the operator effectively does 12285nothing. 12286 122873) Unreferenced objects: If a namespace object is created, but never 12288referenced, a warning is issued. This is a warning level 2 since there 12289are 12290cases where this is ok, such as when a secondary table is loaded that 12291uses 12292the unreferenced objects. Even so, care is taken to only flag objects 12293that 12294don't look like they will ever be used. For example, the reserved methods 12295(starting with an underscore) are usually not referenced because it is 12296expected that the OS will invoke them. 12297 12298---------------------------------------- 1229931 March 2006. Summary of changes for version 20060331: 12300 123011) ACPI CA Core Subsystem: 12302 12303Implemented header file support for the following additional ACPI tables: 12304ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 12305support, 12306all current and known ACPI tables are now defined in the ACPICA headers 12307and 12308are available for use by device drivers and other software. 12309 12310Implemented support to allow tables that contain ACPI names with invalid 12311characters to be loaded. Previously, this would cause the table load to 12312fail, but since there are several known cases of such tables on existing 12313machines, this change was made to enable ACPI support for them. Also, 12314this 12315matches the behavior of the Microsoft ACPI implementation. 12316 12317Fixed a couple regressions introduced during the memory optimization in 12318the 1231920060317 release. The namespace node definition required additional 12320reorganization and an internal datatype that had been changed to 8-bit 12321was 12322restored to 32-bit. (Valery Podrezov) 12323 12324Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 12325could be passed through to AcpiOsReleaseObject which is unexpected. Such 12326null pointers are now trapped and ignored, matching the behavior of the 12327previous implementation before the deployment of AcpiOsReleaseObject. 12328(Valery Podrezov, Fiodor Suietov) 12329 12330Fixed a memory mapping leak during the deletion of a SystemMemory 12331operation 12332region where a cached memory mapping was not deleted. This became a 12333noticeable problem for operation regions that are defined within 12334frequently 12335used control methods. (Dana Meyers) 12336 12337Reorganized the ACPI table header files into two main files: one for the 12338ACPI tables consumed by the ACPICA core, and another for the 12339miscellaneous 12340ACPI tables that are consumed by the drivers and other software. The 12341various 12342FADT definitions were merged into one common section and three different 12343tables (ACPI 1.0, 1.0+, and 2.0) 12344 12345Example Code and Data Size: These are the sizes for the OS-independent 12346acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12347debug version of the code includes the debug output trace mechanism and 12348has 12349a much larger code and data size. 12350 12351 Previous Release: 12352 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12353 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12354 Current Release: 12355 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12356 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12357 12358 123592) iASL Compiler/Disassembler and Tools: 12360 12361Disassembler: Implemented support to decode and format all non-AML ACPI 12362tables (tables other than DSDTs and SSDTs.) This includes the new tables 12363added to the ACPICA headers, therefore all current and known ACPI tables 12364are 12365supported. 12366 12367Disassembler: The change to allow ACPI names with invalid characters also 12368enables the disassembly of such tables. Invalid characters within names 12369are 12370changed to '*' to make the name printable; the iASL compiler will still 12371generate an error for such names, however, since this is an invalid ACPI 12372character. 12373 12374Implemented an option for AcpiXtract (-a) to extract all tables found in 12375the 12376input file. The default invocation extracts only the DSDTs and SSDTs. 12377 12378Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 12379makefile for the AcpiXtract utility. 12380 12381---------------------------------------- 1238217 March 2006. Summary of changes for version 20060317: 12383 123841) ACPI CA Core Subsystem: 12385 12386Implemented the use of a cache object for all internal namespace nodes. 12387Since there are about 1000 static nodes in a typical system, this will 12388decrease memory use for cache implementations that minimize per- 12389allocation 12390overhead (such as a slab allocator.) 12391 12392Removed the reference count mechanism for internal namespace nodes, since 12393it 12394was deemed unnecessary. This reduces the size of each namespace node by 12395about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12396case, 12397and 32 bytes for the 64-bit case. 12398 12399Optimized several internal data structures to reduce object size on 64- 12400bit 12401platforms by packing data within the 64-bit alignment. This includes the 12402frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12403instances corresponding to the namespace objects. 12404 12405Added two new strings for the predefined _OSI method: "Windows 2001.1 12406SP1" 12407and "Windows 2006". 12408 12409Split the allocation tracking mechanism out to a separate file, from 12410utalloc.c to uttrack.c. This mechanism appears to be only useful for 12411application-level code. Kernels may wish to not include uttrack.c in 12412distributions. 12413 12414Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12415associated 12416code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12417macros.) 12418 12419Code and Data Size: These are the sizes for the acpica.lib produced by 12420the 12421Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12422ACPI 12423driver or OSPM code. The debug version of the code includes the debug 12424output 12425trace mechanism and has a much larger code and data size. Note that these 12426values will vary depending on the efficiency of the compiler and the 12427compiler options used during generation. 12428 12429 Previous Release: 12430 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12431 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12432 Current Release: 12433 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12434 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12435 12436 124372) iASL Compiler/Disassembler and Tools: 12438 12439Implemented an ANSI C version of the acpixtract utility. This version 12440will 12441automatically extract the DSDT and all SSDTs from the input acpidump text 12442file and dump the binary output to separate files. It can also display a 12443summary of the input file including the headers for each table found and 12444will extract any single ACPI table, with any signature. (See 12445source/tools/acpixtract) 12446 12447---------------------------------------- 1244810 March 2006. Summary of changes for version 20060310: 12449 124501) ACPI CA Core Subsystem: 12451 12452Tagged all external interfaces to the subsystem with the new 12453ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12454assist 12455kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12456macro. The default definition is NULL. 12457 12458Added the ACPI_THREAD_ID type for the return value from 12459AcpiOsGetThreadId. 12460This allows the host to define this as necessary to simplify kernel 12461integration. The default definition is ACPI_NATIVE_UINT. 12462 12463Fixed two interpreter problems related to error processing, the deletion 12464of 12465objects, and placing invalid pointers onto the internal operator result 12466stack. BZ 6028, 6151 (Valery Podrezov) 12467 12468Increased the reference count threshold where a warning is emitted for 12469large 12470reference counts in order to eliminate unnecessary warnings on systems 12471with 12472large namespaces (especially 64-bit.) Increased the value from 0x400 to 124730x800. 12474 12475Due to universal disagreement as to the meaning of the 'c' in the 12476calloc() 12477function, the ACPI_MEM_CALLOCATE macro has been renamed to 12478ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12479ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12480ACPI_FREE. 12481 12482Code and Data Size: These are the sizes for the acpica.lib produced by 12483the 12484Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12485ACPI 12486driver or OSPM code. The debug version of the code includes the debug 12487output 12488trace mechanism and has a much larger code and data size. Note that these 12489values will vary depending on the efficiency of the compiler and the 12490compiler options used during generation. 12491 12492 Previous Release: 12493 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12494 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12495 Current Release: 12496 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12497 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12498 12499 125002) iASL Compiler/Disassembler: 12501 12502Disassembler: implemented support for symbolic resource descriptor 12503references. If a CreateXxxxField operator references a fixed offset 12504within 12505a 12506resource descriptor, a name is assigned to the descriptor and the offset 12507is 12508translated to the appropriate resource tag and pathname. The addition of 12509this support brings the disassembled code very close to the original ASL 12510source code and helps eliminate run-time errors when the disassembled 12511code 12512is modified (and recompiled) in such a way as to invalidate the original 12513fixed offsets. 12514 12515Implemented support for a Descriptor Name as the last parameter to the 12516ASL 12517Register() macro. This parameter was inadvertently left out of the ACPI 12518specification, and will be added for ACPI 3.0b. 12519 12520Fixed a problem where the use of the "_OSI" string (versus the full path 12521"\_OSI") caused an internal compiler error. ("No back ptr to op") 12522 12523Fixed a problem with the error message that occurs when an invalid string 12524is 12525used for a _HID object (such as one with an embedded asterisk: 12526"*PNP010A".) 12527The correct message is now displayed. 12528 12529---------------------------------------- 1253017 February 2006. Summary of changes for version 20060217: 12531 125321) ACPI CA Core Subsystem: 12533 12534Implemented a change to the IndexField support to match the behavior of 12535the 12536Microsoft AML interpreter. The value written to the Index register is now 12537a 12538byte offset, no longer an index based upon the width of the Data 12539register. 12540This should fix IndexField problems seen on some machines where the Data 12541register is not exactly one byte wide. The ACPI specification will be 12542clarified on this point. 12543 12544Fixed a problem where several resource descriptor types could overrun the 12545internal descriptor buffer due to size miscalculation: VendorShort, 12546VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12547affect all platforms. 12548 12549Fixed a problem where individual resource descriptors were misaligned 12550within 12551the internal buffer, causing alignment faults on IA64 platforms. 12552 12553Code and Data Size: These are the sizes for the acpica.lib produced by 12554the 12555Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12556ACPI 12557driver or OSPM code. The debug version of the code includes the debug 12558output 12559trace mechanism and has a much larger code and data size. Note that these 12560values will vary depending on the efficiency of the compiler and the 12561compiler options used during generation. 12562 12563 Previous Release: 12564 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12565 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12566 Current Release: 12567 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12568 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12569 12570 125712) iASL Compiler/Disassembler: 12572 12573Implemented support for new reserved names: _WDG and _WED are Microsoft 12574extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12575defined method (Throttling Depth Limit.) 12576 12577Fixed a problem where a zero-length VendorShort or VendorLong resource 12578descriptor was incorrectly emitted as a descriptor of length one. 12579 12580---------------------------------------- 1258110 February 2006. Summary of changes for version 20060210: 12582 125831) ACPI CA Core Subsystem: 12584 12585Removed a couple of extraneous ACPI_ERROR messages that appeared during 12586normal execution. These became apparent after the conversion from 12587ACPI_DEBUG_PRINT. 12588 12589Fixed a problem where the CreateField operator could hang if the BitIndex 12590or 12591NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12592 12593Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12594failed with an exception. This also fixes a couple of related RefOf and 12595DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12596 12597Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12598of 12599AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12600BZ 126015480) 12602 12603Implemented a memory cleanup at the end of the execution of each 12604iteration 12605of an AML While() loop, preventing the accumulation of outstanding 12606objects. 12607(Valery Podrezov, BZ 5427) 12608 12609Eliminated a chunk of duplicate code in the object resolution code. 12610(Valery 12611Podrezov, BZ 5336) 12612 12613Fixed several warnings during the 64-bit code generation. 12614 12615The AcpiSrc source code conversion tool now inserts one line of 12616whitespace 12617after an if() statement that is followed immediately by a comment, 12618improving 12619readability of the Linux code. 12620 12621Code and Data Size: The current and previous library sizes for the core 12622subsystem are shown below. These are the code and data sizes for the 12623acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12624These 12625values do not include any ACPI driver or OSPM code. The debug version of 12626the 12627code includes the debug output trace mechanism and has a much larger code 12628and data size. Note that these values will vary depending on the 12629efficiency 12630of the compiler and the compiler options used during generation. 12631 12632 Previous Release: 12633 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12634 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12635 Current Release: 12636 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12637 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12638 12639 126402) iASL Compiler/Disassembler: 12641 12642Fixed a problem with the disassembly of a BankField operator with a 12643complex 12644expression for the BankValue parameter. 12645 12646---------------------------------------- 1264727 January 2006. Summary of changes for version 20060127: 12648 126491) ACPI CA Core Subsystem: 12650 12651Implemented support in the Resource Manager to allow unresolved 12652namestring 12653references within resource package objects for the _PRT method. This 12654support 12655is in addition to the previously implemented unresolved reference support 12656within the AML parser. If the interpreter slack mode is enabled, these 12657unresolved references will be passed through to the caller as a NULL 12658package 12659entry. 12660 12661Implemented and deployed new macros and functions for error and warning 12662messages across the subsystem. These macros are simpler and generate less 12663code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12664ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12665macros remain defined to allow ACPI drivers time to migrate to the new 12666macros. 12667 12668Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12669the 12670Acquire/Release Lock OSL interfaces. 12671 12672Fixed a problem where Alias ASL operators are sometimes not correctly 12673resolved, in both the interpreter and the iASL compiler. 12674 12675Fixed several problems with the implementation of the 12676ConcatenateResTemplate 12677ASL operator. As per the ACPI specification, zero length buffers are now 12678treated as a single EndTag. One-length buffers always cause a fatal 12679exception. Non-zero length buffers that do not end with a full 2-byte 12680EndTag 12681cause a fatal exception. 12682 12683Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12684interface. (With assistance from Thomas Renninger) 12685 12686Code and Data Size: The current and previous library sizes for the core 12687subsystem are shown below. These are the code and data sizes for the 12688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12689These 12690values do not include any ACPI driver or OSPM code. The debug version of 12691the 12692code includes the debug output trace mechanism and has a much larger code 12693and data size. Note that these values will vary depending on the 12694efficiency 12695of the compiler and the compiler options used during generation. 12696 12697 Previous Release: 12698 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12699 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12700 Current Release: 12701 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12702 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12703 12704 127052) iASL Compiler/Disassembler: 12706 12707Fixed an internal error that was generated for any forward references to 12708ASL 12709Alias objects. 12710 12711---------------------------------------- 1271213 January 2006. Summary of changes for version 20060113: 12713 127141) ACPI CA Core Subsystem: 12715 12716Added 2006 copyright to all module headers and signons. This affects 12717virtually every file in the ACPICA core subsystem, iASL compiler, and the 12718utilities. 12719 12720Enhanced the ACPICA error reporting in order to simplify user migration 12721to 12722the non-debug version of ACPICA. Replaced all instances of the 12723ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12724debug 12725levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12726respectively. This preserves all error and warning messages in the non- 12727debug 12728version of the ACPICA code (this has been referred to as the "debug lite" 12729option.) Over 200 cases were converted to create a total of over 380 12730error/warning messages across the ACPICA code. This increases the code 12731and 12732data size of the default non-debug version of the code somewhat (about 1273313K), 12734but all error/warning reporting may be disabled if desired (and code 12735eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12736configuration option. The size of the debug version of ACPICA remains 12737about 12738the same. 12739 12740Fixed a memory leak within the AML Debugger "Set" command. One object was 12741not properly deleted for every successful invocation of the command. 12742 12743Code and Data Size: The current and previous library sizes for the core 12744subsystem are shown below. These are the code and data sizes for the 12745acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12746These 12747values do not include any ACPI driver or OSPM code. The debug version of 12748the 12749code includes the debug output trace mechanism and has a much larger code 12750and data size. Note that these values will vary depending on the 12751efficiency 12752of the compiler and the compiler options used during generation. 12753 12754 Previous Release: 12755 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12756 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12757 Current Release: 12758 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12759 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12760 12761 127622) iASL Compiler/Disassembler: 12763 12764The compiler now officially supports the ACPI 3.0a specification that was 12765released on December 30, 2005. (Specification is available at 12766www.acpi.info) 12767 12768---------------------------------------- 1276916 December 2005. Summary of changes for version 20051216: 12770 127711) ACPI CA Core Subsystem: 12772 12773Implemented optional support to allow unresolved names within ASL Package 12774objects. A null object is inserted in the package when a named reference 12775cannot be located in the current namespace. Enabled via the interpreter 12776slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12777machines 12778that contain such code. 12779 12780Implemented an optimization to the initialization sequence that can 12781improve 12782boot time. During ACPI device initialization, the _STA method is now run 12783if 12784and only if the _INI method exists. The _STA method is used to determine 12785if 12786the device is present; An _INI can only be run if _STA returns present, 12787but 12788it is a waste of time to run the _STA method if the _INI does not exist. 12789(Prototype and assistance from Dong Wei) 12790 12791Implemented use of the C99 uintptr_t for the pointer casting macros if it 12792is 12793available in the current compiler. Otherwise, the default (void *) cast 12794is 12795used as before. 12796 12797Fixed some possible memory leaks found within the execution path of the 12798Break, Continue, If, and CreateField operators. (Valery Podrezov) 12799 12800Fixed a problem introduced in the 20051202 release where an exception is 12801generated during method execution if a control method attempts to declare 12802another method. 12803 12804Moved resource descriptor string constants that are used by both the AML 12805disassembler and AML debugger to the common utilities directory so that 12806these components are independent. 12807 12808Implemented support in the AcpiExec utility (-e switch) to globally 12809ignore 12810exceptions during control method execution (method is not aborted.) 12811 12812Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12813generation. 12814 12815Code and Data Size: The current and previous library sizes for the core 12816subsystem are shown below. These are the code and data sizes for the 12817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12818These 12819values do not include any ACPI driver or OSPM code. The debug version of 12820the 12821code includes the debug output trace mechanism and has a much larger code 12822and data size. Note that these values will vary depending on the 12823efficiency 12824of the compiler and the compiler options used during generation. 12825 12826 Previous Release: 12827 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12828 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12829 Current Release: 12830 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12831 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12832 12833 128342) iASL Compiler/Disassembler: 12835 12836Fixed a problem where a CPU stack overflow fault could occur if a 12837recursive 12838method call was made from within a Return statement. 12839 12840---------------------------------------- 1284102 December 2005. Summary of changes for version 20051202: 12842 128431) ACPI CA Core Subsystem: 12844 12845Modified the parsing of control methods to no longer create namespace 12846objects during the first pass of the parse. Objects are now created only 12847during the execute phase, at the moment the namespace creation operator 12848is 12849encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12850This 12851should eliminate ALREADY_EXISTS exceptions seen on some machines where 12852reentrant control methods are protected by an AML mutex. The mutex will 12853now 12854correctly block multiple threads from attempting to create the same 12855object 12856more than once. 12857 12858Increased the number of available Owner Ids for namespace object tracking 12859from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12860on 12861some machines with a large number of ACPI tables (either static or 12862dynamic). 12863 12864Fixed a problem with the AcpiExec utility where a fault could occur when 12865the 12866-b switch (batch mode) is used. 12867 12868Enhanced the namespace dump routine to output the owner ID for each 12869namespace object. 12870 12871Code and Data Size: The current and previous library sizes for the core 12872subsystem are shown below. These are the code and data sizes for the 12873acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12874These 12875values do not include any ACPI driver or OSPM code. The debug version of 12876the 12877code includes the debug output trace mechanism and has a much larger code 12878and data size. Note that these values will vary depending on the 12879efficiency 12880of the compiler and the compiler options used during generation. 12881 12882 Previous Release: 12883 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12884 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12885 Current Release: 12886 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12887 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12888 12889 128902) iASL Compiler/Disassembler: 12891 12892Fixed a parse error during compilation of certain Switch/Case constructs. 12893To 12894simplify the parse, the grammar now allows for multiple Default 12895statements 12896and this error is now detected and flagged during the analysis phase. 12897 12898Disassembler: The disassembly now includes the contents of the original 12899table header within a comment at the start of the file. This includes the 12900name and version of the original ASL compiler. 12901 12902---------------------------------------- 1290317 November 2005. Summary of changes for version 20051117: 12904 129051) ACPI CA Core Subsystem: 12906 12907Fixed a problem in the AML parser where the method thread count could be 12908decremented below zero if any errors occurred during the method parse 12909phase. 12910This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 12911machines. 12912This also fixed a related regression with the mechanism that detects and 12913corrects methods that cannot properly handle reentrancy (related to the 12914deployment of the new OwnerId mechanism.) 12915 12916Eliminated the pre-parsing of control methods (to detect errors) during 12917table load. Related to the problem above, this was causing unwind issues 12918if 12919any errors occurred during the parse, and it seemed to be overkill. A 12920table 12921load should not be aborted if there are problems with any single control 12922method, thus rendering this feature rather pointless. 12923 12924Fixed a problem with the new table-driven resource manager where an 12925internal 12926buffer overflow could occur for small resource templates. 12927 12928Implemented a new external interface, AcpiGetVendorResource. This 12929interface 12930will find and return a vendor-defined resource descriptor within a _CRS 12931or 12932_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 12933Helgaas. 12934 12935Removed the length limit (200) on string objects as per the upcoming ACPI 129363.0A specification. This affects the following areas of the interpreter: 129371) 12938any implicit conversion of a Buffer to a String, 2) a String object 12939result 12940of the ASL Concatenate operator, 3) the String object result of the ASL 12941ToString operator. 12942 12943Fixed a problem in the Windows OS interface layer (OSL) where a 12944WAIT_FOREVER 12945on a semaphore object would incorrectly timeout. This allows the 12946multithreading features of the AcpiExec utility to work properly under 12947Windows. 12948 12949Updated the Linux makefiles for the iASL compiler and AcpiExec to include 12950the recently added file named "utresrc.c". 12951 12952Code and Data Size: The current and previous library sizes for the core 12953subsystem are shown below. These are the code and data sizes for the 12954acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12955These 12956values do not include any ACPI driver or OSPM code. The debug version of 12957the 12958code includes the debug output trace mechanism and has a much larger code 12959and data size. Note that these values will vary depending on the 12960efficiency 12961of the compiler and the compiler options used during generation. 12962 12963 Previous Release: 12964 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 12965 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12966 Current Release: 12967 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12968 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12969 12970 129712) iASL Compiler/Disassembler: 12972 12973Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 12974specification. For the iASL compiler, this means that string literals 12975within 12976the source ASL can be of any length. 12977 12978Enhanced the listing output to dump the AML code for resource descriptors 12979immediately after the ASL code for each descriptor, instead of in a block 12980at 12981the end of the entire resource template. 12982 12983Enhanced the compiler debug output to dump the entire original parse tree 12984constructed during the parse phase, before any transforms are applied to 12985the 12986tree. The transformed tree is dumped also. 12987 12988---------------------------------------- 1298902 November 2005. Summary of changes for version 20051102: 12990 129911) ACPI CA Core Subsystem: 12992 12993Modified the subsystem initialization sequence to improve GPE support. 12994The 12995GPE initialization has been split into two parts in order to defer 12996execution 12997of the _PRW methods (Power Resources for Wake) until after the hardware 12998is 12999fully initialized and the SCI handler is installed. This allows the _PRW 13000methods to access fields protected by the Global Lock. This will fix 13001systems 13002where a NO_GLOBAL_LOCK exception has been seen during initialization. 13003 13004Converted the ACPI internal object disassemble and display code within 13005the 13006AML debugger to fully table-driven operation, reducing code size and 13007increasing maintainability. 13008 13009Fixed a regression with the ConcatenateResTemplate() ASL operator 13010introduced 13011in the 20051021 release. 13012 13013Implemented support for "local" internal ACPI object types within the 13014debugger "Object" command and the AcpiWalkNamespace external interfaces. 13015These local types include RegionFields, BankFields, IndexFields, Alias, 13016and 13017reference objects. 13018 13019Moved common AML resource handling code into a new file, "utresrc.c". 13020This 13021code is shared by both the Resource Manager and the AML Debugger. 13022 13023Code and Data Size: The current and previous library sizes for the core 13024subsystem are shown below. These are the code and data sizes for the 13025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13026These 13027values do not include any ACPI driver or OSPM code. The debug version of 13028the 13029code includes the debug output trace mechanism and has a much larger code 13030and data size. Note that these values will vary depending on the 13031efficiency 13032of the compiler and the compiler options used during generation. 13033 13034 Previous Release: 13035 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13036 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13037 Current Release: 13038 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13039 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13040 13041 130422) iASL Compiler/Disassembler: 13043 13044Fixed a problem with very large initializer lists (more than 4000 13045elements) 13046for both Buffer and Package objects where the parse stack could overflow. 13047 13048Enhanced the pre-compile source code scan for non-ASCII characters to 13049ignore 13050characters within comment fields. The scan is now always performed and is 13051no 13052longer optional, detecting invalid characters within a source file 13053immediately rather than during the parse phase or later. 13054 13055Enhanced the ASL grammar definition to force early reductions on all 13056list- 13057style grammar elements so that the overall parse stack usage is greatly 13058reduced. This should improve performance and reduce the possibility of 13059parse 13060stack overflow. 13061 13062Eliminated all reduce/reduce conflicts in the iASL parser generation. 13063Also, 13064with the addition of a %expected statement, the compiler generates from 13065source with no warnings. 13066 13067Fixed a possible segment fault in the disassembler if the input filename 13068does not contain a "dot" extension (Thomas Renninger). 13069 13070---------------------------------------- 1307121 October 2005. Summary of changes for version 20051021: 13072 130731) ACPI CA Core Subsystem: 13074 13075Implemented support for the EM64T and other x86-64 processors. This 13076essentially entails recognizing that these processors support non-aligned 13077memory transfers. Previously, all 64-bit processors were assumed to lack 13078hardware support for non-aligned transfers. 13079 13080Completed conversion of the Resource Manager to nearly full table-driven 13081operation. Specifically, the resource conversion code (convert AML to 13082internal format and the reverse) and the debug code to dump internal 13083resource descriptors are fully table-driven, reducing code and data size 13084and 13085improving maintainability. 13086 13087The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 13088word 13089on 64-bit processors instead of a fixed 32-bit word. (With assistance 13090from 13091Alexey Starikovskiy) 13092 13093Implemented support within the resource conversion code for the Type- 13094Specific byte within the various ACPI 3.0 *WordSpace macros. 13095 13096Fixed some issues within the resource conversion code for the type- 13097specific 13098flags for both Memory and I/O address resource descriptors. For Memory, 13099implemented support for the MTP and TTP flags. For I/O, split the TRS and 13100TTP flags into two separate fields. 13101 13102Code and Data Size: The current and previous library sizes for the core 13103subsystem are shown below. These are the code and data sizes for the 13104acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13105These 13106values do not include any ACPI driver or OSPM code. The debug version of 13107the 13108code includes the debug output trace mechanism and has a much larger code 13109and data size. Note that these values will vary depending on the 13110efficiency 13111of the compiler and the compiler options used during generation. 13112 13113 Previous Release: 13114 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13115 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13116 Current Release: 13117 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13118 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13119 13120 13121 131222) iASL Compiler/Disassembler: 13123 13124Relaxed a compiler restriction that disallowed a ResourceIndex byte if 13125the 13126corresponding ResourceSource string was not also present in a resource 13127descriptor declaration. This restriction caused problems with existing 13128AML/ASL code that includes the Index byte without the string. When such 13129AML 13130was disassembled, it could not be compiled without modification. Further, 13131the modified code created a resource template with a different size than 13132the 13133original, breaking code that used fixed offsets into the resource 13134template 13135buffer. 13136 13137Removed a recent feature of the disassembler to ignore a lone 13138ResourceIndex 13139byte. This byte is now emitted if present so that the exact AML can be 13140reproduced when the disassembled code is recompiled. 13141 13142Improved comments and text alignment for the resource descriptor code 13143emitted by the disassembler. 13144 13145Implemented disassembler support for the ACPI 3.0 AccessSize field within 13146a 13147Register() resource descriptor. 13148 13149---------------------------------------- 1315030 September 2005. Summary of changes for version 20050930: 13151 131521) ACPI CA Core Subsystem: 13153 13154Completed a major overhaul of the Resource Manager code - specifically, 13155optimizations in the area of the AML/internal resource conversion code. 13156The 13157code has been optimized to simplify and eliminate duplicated code, CPU 13158stack 13159use has been decreased by optimizing function parameters and local 13160variables, and naming conventions across the manager have been 13161standardized 13162for clarity and ease of maintenance (this includes function, parameter, 13163variable, and struct/typedef names.) The update may force changes in some 13164driver code, depending on how resources are handled by the host OS. 13165 13166All Resource Manager dispatch and information tables have been moved to a 13167single location for clarity and ease of maintenance. One new file was 13168created, named "rsinfo.c". 13169 13170The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 13171guarantee that the argument is not evaluated twice, making them less 13172prone 13173to macro side-effects. However, since there exists the possibility of 13174additional stack use if a particular compiler cannot optimize them (such 13175as 13176in the debug generation case), the original macros are optionally 13177available. 13178Note that some invocations of the return_VALUE macro may now cause size 13179mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 13180to 13181eliminate these. (From Randy Dunlap) 13182 13183Implemented a new mechanism to enable debug tracing for individual 13184control 13185methods. A new external interface, AcpiDebugTrace, is provided to enable 13186this mechanism. The intent is to allow the host OS to easily enable and 13187disable tracing for problematic control methods. This interface can be 13188easily exposed to a user or debugger interface if desired. See the file 13189psxface.c for details. 13190 13191AcpiUtCallocate will now return a valid pointer if a length of zero is 13192specified - a length of one is used and a warning is issued. This matches 13193the behavior of AcpiUtAllocate. 13194 13195Code and Data Size: The current and previous library sizes for the core 13196subsystem are shown below. These are the code and data sizes for the 13197acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13198These 13199values do not include any ACPI driver or OSPM code. The debug version of 13200the 13201code includes the debug output trace mechanism and has a much larger code 13202and data size. Note that these values will vary depending on the 13203efficiency 13204of the compiler and the compiler options used during generation. 13205 13206 Previous Release: 13207 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13208 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13209 Current Release: 13210 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13211 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13212 13213 132142) iASL Compiler/Disassembler: 13215 13216A remark is issued if the effective compile-time length of a package or 13217buffer is zero. Previously, this was a warning. 13218 13219---------------------------------------- 1322016 September 2005. Summary of changes for version 20050916: 13221 132221) ACPI CA Core Subsystem: 13223 13224Fixed a problem within the Resource Manager where support for the Generic 13225Register descriptor was not fully implemented. This descriptor is now 13226fully 13227recognized, parsed, disassembled, and displayed. 13228 13229Completely restructured the Resource Manager code to utilize table-driven 13230dispatch and lookup, eliminating many of the large switch() statements. 13231This 13232reduces overall subsystem code size and code complexity. Affects the 13233resource parsing and construction, disassembly, and debug dump output. 13234 13235Cleaned up and restructured the debug dump output for all resource 13236descriptors. Improved readability of the output and reduced code size. 13237 13238Fixed a problem where changes to internal data structures caused the 13239optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 13240 13241Code and Data Size: The current and previous library sizes for the core 13242subsystem are shown below. These are the code and data sizes for the 13243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13244These 13245values do not include any ACPI driver or OSPM code. The debug version of 13246the 13247code includes the debug output trace mechanism and has a much larger code 13248and data size. Note that these values will vary depending on the 13249efficiency 13250of the compiler and the compiler options used during generation. 13251 13252 Previous Release: 13253 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13254 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13255 Current Release: 13256 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13257 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13258 13259 132602) iASL Compiler/Disassembler: 13261 13262Updated the disassembler to automatically insert an EndDependentFn() 13263macro 13264into the ASL stream if this macro is missing in the original AML code, 13265simplifying compilation of the resulting ASL module. 13266 13267Fixed a problem in the disassembler where a disassembled ResourceSource 13268string (within a large resource descriptor) was not surrounded by quotes 13269and 13270not followed by a comma, causing errors when the resulting ASL module was 13271compiled. Also, escape sequences within a ResourceSource string are now 13272handled correctly (especially "\\") 13273 13274---------------------------------------- 1327502 September 2005. Summary of changes for version 20050902: 13276 132771) ACPI CA Core Subsystem: 13278 13279Fixed a problem with the internal Owner ID allocation and deallocation 13280mechanisms for control method execution and recursive method invocation. 13281This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 13282messages seen on some systems. Recursive method invocation depth is 13283currently limited to 255. (Alexey Starikovskiy) 13284 13285Completely eliminated all vestiges of support for the "module-level 13286executable code" until this support is fully implemented and debugged. 13287This 13288should eliminate the NO_RETURN_VALUE exceptions seen during table load on 13289some systems that invoke this support. 13290 13291Fixed a problem within the resource manager code where the transaction 13292flags 13293for a 64-bit address descriptor were handled incorrectly in the type- 13294specific flag byte. 13295 13296Consolidated duplicate code within the address descriptor resource 13297manager 13298code, reducing overall subsystem code size. 13299 13300Fixed a fault when using the AML debugger "disassemble" command to 13301disassemble individual control methods. 13302 13303Removed references to the "release_current" directory within the Unix 13304release package. 13305 13306Code and Data Size: The current and previous core subsystem library sizes 13307are shown below. These are the code and data sizes for the acpica.lib 13308produced by the Microsoft Visual C++ 6.0 compiler. These values do not 13309include any ACPI driver or OSPM code. The debug version of the code 13310includes 13311the debug output trace mechanism and has a much larger code and data 13312size. 13313Note that these values will vary depending on the efficiency of the 13314compiler 13315and the compiler options used during generation. 13316 13317 Previous Release: 13318 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13319 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13320 Current Release: 13321 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13322 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13323 13324 133252) iASL Compiler/Disassembler: 13326 13327Implemented an error check for illegal duplicate values in the interrupt 13328and 13329dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 13330Interrupt(). 13331 13332Implemented error checking for the Irq() and IrqNoFlags() macros to 13333detect 13334too many values in the interrupt list (16 max) and invalid values in the 13335list (range 0 - 15) 13336 13337The maximum length string literal within an ASL file is now restricted to 13338200 characters as per the ACPI specification. 13339 13340Fixed a fault when using the -ln option (generate namespace listing). 13341 13342Implemented an error check to determine if a DescriptorName within a 13343resource descriptor has already been used within the current scope. 13344 13345---------------------------------------- 1334615 August 2005. Summary of changes for version 20050815: 13347 133481) ACPI CA Core Subsystem: 13349 13350Implemented a full bytewise compare to determine if a table load request 13351is 13352attempting to load a duplicate table. The compare is performed if the 13353table 13354signatures and table lengths match. This will allow different tables with 13355the same OEM Table ID and revision to be loaded - probably against the 13356ACPI 13357specification, but discovered in the field nonetheless. 13358 13359Added the changes.txt logfile to each of the zipped release packages. 13360 13361Code and Data Size: Current and previous core subsystem library sizes are 13362shown below. These are the code and data sizes for the acpica.lib 13363produced 13364by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13365any ACPI driver or OSPM code. The debug version of the code includes the 13366debug output trace mechanism and has a much larger code and data size. 13367Note 13368that these values will vary depending on the efficiency of the compiler 13369and 13370the compiler options used during generation. 13371 13372 Previous Release: 13373 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13374 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13375 Current Release: 13376 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13377 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13378 13379 133802) iASL Compiler/Disassembler: 13381 13382Fixed a problem where incorrect AML code could be generated for Package 13383objects if optimization is disabled (via the -oa switch). 13384 13385Fixed a problem with where incorrect AML code is generated for variable- 13386length packages when the package length is not specified and the number 13387of 13388initializer values is greater than 255. 13389 13390 13391---------------------------------------- 1339229 July 2005. Summary of changes for version 20050729: 13393 133941) ACPI CA Core Subsystem: 13395 13396Implemented support to ignore an attempt to install/load a particular 13397ACPI 13398table more than once. Apparently there exists BIOS code that repeatedly 13399attempts to load the same SSDT upon certain events. With assistance from 13400Venkatesh Pallipadi. 13401 13402Restructured the main interface to the AML parser in order to correctly 13403handle all exceptional conditions. This will prevent leakage of the 13404OwnerId 13405resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13406some 13407machines. With assistance from Alexey Starikovskiy. 13408 13409Support for "module level code" has been disabled in this version due to 13410a 13411number of issues that have appeared on various machines. The support can 13412be 13413enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13414compilation. When the issues are fully resolved, the code will be enabled 13415by 13416default again. 13417 13418Modified the internal functions for debug print support to define the 13419FunctionName parameter as a (const char *) for compatibility with 13420compiler 13421built-in macros such as __FUNCTION__, etc. 13422 13423Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13424 13425Implemented support to display an object count summary for the AML 13426Debugger 13427commands Object and Methods. 13428 13429Code and Data Size: Current and previous core subsystem library sizes are 13430shown below. These are the code and data sizes for the acpica.lib 13431produced 13432by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13433any ACPI driver or OSPM code. The debug version of the code includes the 13434debug output trace mechanism and has a much larger code and data size. 13435Note 13436that these values will vary depending on the efficiency of the compiler 13437and 13438the compiler options used during generation. 13439 13440 Previous Release: 13441 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13442 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13443 Current Release: 13444 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13445 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13446 13447 134482) iASL Compiler/Disassembler: 13449 13450Fixed a regression that appeared in the 20050708 version of the compiler 13451where an error message was inadvertently emitted for invocations of the 13452_OSI 13453reserved control method. 13454 13455---------------------------------------- 1345608 July 2005. Summary of changes for version 20050708: 13457 134581) ACPI CA Core Subsystem: 13459 13460The use of the CPU stack in the debug version of the subsystem has been 13461considerably reduced. Previously, a debug structure was declared in every 13462function that used the debug macros. This structure has been removed in 13463favor of declaring the individual elements as parameters to the debug 13464functions. This reduces the cumulative stack use during nested execution 13465of 13466ACPI function calls at the cost of a small increase in the code size of 13467the 13468debug version of the subsystem. With assistance from Alexey Starikovskiy 13469and 13470Len Brown. 13471 13472Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13473headers to define a macro that will return the current function name at 13474runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13475by 13476the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13477compiler-dependent header, the function name is saved on the CPU stack 13478(one 13479pointer per function.) This mechanism is used because apparently there 13480exists no standard ANSI-C defined macro that that returns the function 13481name. 13482 13483Redesigned and reimplemented the "Owner ID" mechanism used to track 13484namespace objects created/deleted by ACPI tables and control method 13485execution. A bitmap is now used to allocate and free the IDs, thus 13486solving 13487the wraparound problem present in the previous implementation. The size 13488of 13489the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13490Starikovskiy). 13491 13492Removed the UINT32_BIT and UINT16_BIT types that were used for the 13493bitfield 13494flag definitions within the headers for the predefined ACPI tables. These 13495have been replaced by UINT8_BIT in order to increase the code portability 13496of 13497the subsystem. If the use of UINT8 remains a problem, we may be forced to 13498eliminate bitfields entirely because of a lack of portability. 13499 13500Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13501This 13502is a frequently used function and this improvement increases the 13503performance 13504of the entire subsystem (Alexey Starikovskiy). 13505 13506Fixed several possible memory leaks and the inverse - premature object 13507deletion (Alexey Starikovskiy). 13508 13509Code and Data Size: Current and previous core subsystem library sizes are 13510shown below. These are the code and data sizes for the acpica.lib 13511produced 13512by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13513any ACPI driver or OSPM code. The debug version of the code includes the 13514debug output trace mechanism and has a much larger code and data size. 13515Note 13516that these values will vary depending on the efficiency of the compiler 13517and 13518the compiler options used during generation. 13519 13520 Previous Release: 13521 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13522 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13523 Current Release: 13524 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13525 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13526 13527---------------------------------------- 1352824 June 2005. Summary of changes for version 20050624: 13529 135301) ACPI CA Core Subsystem: 13531 13532Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13533the host-defined cache object. This allows the OSL implementation to 13534define 13535and type this object in any manner desired, simplifying the OSL 13536implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13537Linux, and should be defined in the OS-specific header file for other 13538operating systems as required. 13539 13540Changed the interface to AcpiOsAcquireObject to directly return the 13541requested object as the function return (instead of ACPI_STATUS.) This 13542change was made for performance reasons, since this is the purpose of the 13543interface in the first place. AcpiOsAcquireObject is now similar to the 13544AcpiOsAllocate interface. 13545 13546Implemented a new AML debugger command named Businfo. This command 13547displays 13548information about all devices that have an associate _PRT object. The 13549_ADR, 13550_HID, _UID, and _CID are displayed for these devices. 13551 13552Modified the initialization sequence in AcpiInitializeSubsystem to call 13553the 13554OSL interface AcpiOslInitialize first, before any local initialization. 13555This 13556change was required because the global initialization now calls OSL 13557interfaces. 13558 13559Enhanced the Dump command to display the entire contents of Package 13560objects 13561(including all sub-objects and their values.) 13562 13563Restructured the code base to split some files because of size and/or 13564because the code logically belonged in a separate file. New files are 13565listed 13566below. All makefiles and project files included in the ACPI CA release 13567have 13568been updated. 13569 utilities/utcache.c /* Local cache interfaces */ 13570 utilities/utmutex.c /* Local mutex support */ 13571 utilities/utstate.c /* State object support */ 13572 interpreter/parser/psloop.c /* Main AML parse loop */ 13573 13574Code and Data Size: Current and previous core subsystem library sizes are 13575shown below. These are the code and data sizes for the acpica.lib 13576produced 13577by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13578any ACPI driver or OSPM code. The debug version of the code includes the 13579debug output trace mechanism and has a much larger code and data size. 13580Note 13581that these values will vary depending on the efficiency of the compiler 13582and 13583the compiler options used during generation. 13584 13585 Previous Release: 13586 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13587 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13588 Current Release: 13589 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13590 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13591 13592 135932) iASL Compiler/Disassembler: 13594 13595Fixed a regression introduced in version 20050513 where the use of a 13596Package 13597object within a Case() statement caused a compile time exception. The 13598original behavior has been restored (a Match() operator is emitted.) 13599 13600---------------------------------------- 1360117 June 2005. Summary of changes for version 20050617: 13602 136031) ACPI CA Core Subsystem: 13604 13605Moved the object cache operations into the OS interface layer (OSL) to 13606allow 13607the host OS to handle these operations if desired (for example, the Linux 13608OSL will invoke the slab allocator). This support is optional; the 13609compile 13610time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13611cache 13612code in the ACPI CA core. The new OSL interfaces are shown below. See 13613utalloc.c for an example implementation, and acpiosxf.h for the exact 13614interface definitions. With assistance from Alexey Starikovskiy. 13615 AcpiOsCreateCache 13616 AcpiOsDeleteCache 13617 AcpiOsPurgeCache 13618 AcpiOsAcquireObject 13619 AcpiOsReleaseObject 13620 13621Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13622return 13623and restore a flags parameter. This fits better with many OS lock models. 13624Note: the current execution state (interrupt handler or not) is no longer 13625passed to these interfaces. If necessary, the OSL must determine this 13626state 13627by itself, a simple and fast operation. With assistance from Alexey 13628Starikovskiy. 13629 13630Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13631present if the revision of the RSDP was 2 or greater. According to the 13632ACPI 13633specification, the XSDT is optional in all cases, and the table manager 13634therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13635Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13636contain 13637only the RSDT. 13638 13639Fixed an interpreter problem with the Mid() operator in the case of an 13640input 13641string where the resulting output string is of zero length. It now 13642correctly 13643returns a valid, null terminated string object instead of a string object 13644with a null pointer. 13645 13646Fixed a problem with the control method argument handling to allow a 13647store 13648to an Arg object that already contains an object of type Device. The 13649Device 13650object is now correctly overwritten. Previously, an error was returned. 13651 13652 13653Enhanced the debugger Find command to emit object values in addition to 13654the 13655found object pathnames. The output format is the same as the dump 13656namespace 13657command. 13658 13659Enhanced the debugger Set command. It now has the ability to set the 13660value 13661of any Named integer object in the namespace (Previously, only method 13662locals 13663and args could be set.) 13664 13665Code and Data Size: Current and previous core subsystem library sizes are 13666shown below. These are the code and data sizes for the acpica.lib 13667produced 13668by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13669any ACPI driver or OSPM code. The debug version of the code includes the 13670debug output trace mechanism and has a much larger code and data size. 13671Note 13672that these values will vary depending on the efficiency of the compiler 13673and 13674the compiler options used during generation. 13675 13676 Previous Release: 13677 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13678 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13679 Current 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 13683 136842) iASL Compiler/Disassembler: 13685 13686Fixed a regression in the disassembler where if/else/while constructs 13687were 13688output incorrectly. This problem was introduced in the previous release 13689(20050526). This problem also affected the single-step disassembly in the 13690debugger. 13691 13692Fixed a problem where compiling the reserved _OSI method would randomly 13693(but 13694rarely) produce compile errors. 13695 13696Enhanced the disassembler to emit compilable code in the face of 13697incorrect 13698AML resource descriptors. If the optional ResourceSourceIndex is present, 13699but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13700disassembly. Otherwise, the resulting code cannot be compiled without 13701errors. 13702 13703---------------------------------------- 1370426 May 2005. Summary of changes for version 20050526: 13705 137061) ACPI CA Core Subsystem: 13707 13708Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13709the module level (not within a control method.) These opcodes are 13710executed 13711exactly once at the time the table is loaded. This type of code was legal 13712up 13713until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13714in 13715order to provide backwards compatibility with earlier BIOS 13716implementations. 13717This eliminates the "Encountered executable code at module level" warning 13718that was previously generated upon detection of such code. 13719 13720Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13721inadvertently be generated during the lookup of namespace objects in the 13722second pass parse of ACPI tables and control methods. It appears that 13723this 13724problem could occur during the resolution of forward references to 13725namespace 13726objects. 13727 13728Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13729corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13730allows the deadlock detection debug code to be compiled out in the normal 13731case, improving mutex performance (and overall subsystem performance) 13732considerably. 13733 13734Implemented a handful of miscellaneous fixes for possible memory leaks on 13735error conditions and error handling control paths. These fixes were 13736suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13737 13738Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13739(tbxfroot.c) 13740to prevent a fault in this error case. 13741 13742Code and Data Size: Current and previous core subsystem library sizes are 13743shown below. These are the code and data sizes for the acpica.lib 13744produced 13745by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13746any ACPI driver or OSPM code. The debug version of the code includes the 13747debug output trace mechanism and has a much larger code and data size. 13748Note 13749that these values will vary depending on the efficiency of the compiler 13750and 13751the compiler options used during generation. 13752 13753 Previous Release: 13754 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13755 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13756 Current Release: 13757 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13758 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13759 13760 137612) iASL Compiler/Disassembler: 13762 13763Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13764the module level (not within a control method.) These operators will be 13765executed once at the time the table is loaded. This type of code was 13766legal 13767up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13768compiler in order to provide backwards compatibility with earlier BIOS 13769ASL 13770code. 13771 13772The ACPI integer width (specified via the table revision ID or the -r 13773override, 32 or 64 bits) is now used internally during compile-time 13774constant 13775folding to ensure that constants are truncated to 32 bits if necessary. 13776Previously, the revision ID value was only emitted in the AML table 13777header. 13778 13779An error message is now generated for the Mutex and Method operators if 13780the 13781SyncLevel parameter is outside the legal range of 0 through 15. 13782 13783Fixed a problem with the Method operator ParameterTypes list handling 13784(ACPI 137853.0). Previously, more than 2 types or 2 arguments generated a syntax 13786error. 13787The actual underlying implementation of method argument typechecking is 13788still under development, however. 13789 13790---------------------------------------- 1379113 May 2005. Summary of changes for version 20050513: 13792 137931) ACPI CA Core Subsystem: 13794 13795Implemented support for PCI Express root bridges -- added support for 13796device 13797PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13798 13799The interpreter now automatically truncates incoming 64-bit constants to 1380032 13801bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13802This 13803also affects the iASL compiler constant folding. (Note: as per below, the 13804iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13805 13806Fixed a problem where string and buffer objects with "static" pointers 13807(pointers to initialization data within an ACPI table) were not handled 13808consistently. The internal object copy operation now always copies the 13809data 13810to a newly allocated buffer, regardless of whether the source object is 13811static or not. 13812 13813Fixed a problem with the FromBCD operator where an implicit result 13814conversion was improperly performed while storing the result to the 13815target 13816operand. Since this is an "explicit conversion" operator, the implicit 13817conversion should never be performed on the output. 13818 13819Fixed a problem with the CopyObject operator where a copy to an existing 13820named object did not always completely overwrite the existing object 13821stored 13822at name. Specifically, a buffer-to-buffer copy did not delete the 13823existing 13824buffer. 13825 13826Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13827and 13828structs for consistency. 13829 13830Code and Data Size: Current and previous core subsystem library sizes are 13831shown below. These are the code and data sizes for the acpica.lib 13832produced 13833by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13834any ACPI driver or OSPM code. The debug version of the code includes the 13835debug output trace mechanism and has a much larger code and data size. 13836Note 13837that these values will vary depending on the efficiency of the compiler 13838and 13839the compiler options used during generation. 13840 13841 Previous Release: 13842 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13843 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13844 Current Release: (Same sizes) 13845 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13846 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13847 13848 138492) iASL Compiler/Disassembler: 13850 13851The compiler now emits a warning if an attempt is made to generate a 64- 13852bit 13853integer constant from within a 32-bit ACPI table (Revision < 2). The 13854integer 13855is truncated to 32 bits. 13856 13857Fixed a problem with large package objects: if the static length of the 13858package is greater than 255, the "variable length package" opcode is 13859emitted. Previously, this caused an error. This requires an update to the 13860ACPI spec, since it currently (incorrectly) states that packages larger 13861than 13862255 elements are not allowed. 13863 13864The disassembler now correctly handles variable length packages and 13865packages 13866larger than 255 elements. 13867 13868---------------------------------------- 1386908 April 2005. Summary of changes for version 20050408: 13870 138711) ACPI CA Core Subsystem: 13872 13873Fixed three cases in the interpreter where an "index" argument to an ASL 13874function was still (internally) 32 bits instead of the required 64 bits. 13875This was the Index argument to the Index, Mid, and Match operators. 13876 13877The "strupr" function is now permanently local (AcpiUtStrupr), since this 13878is 13879not a POSIX-defined function and not present in most kernel-level C 13880libraries. All references to the C library strupr function have been 13881removed 13882from the headers. 13883 13884Completed the deployment of static functions/prototypes. All prototypes 13885with 13886the static attribute have been moved from the headers to the owning C 13887file. 13888 13889Implemented an extract option (-e) for the AcpiBin utility (AML binary 13890utility). This option allows the utility to extract individual ACPI 13891tables 13892from the output of AcpiDmp. It provides the same functionality of the 13893acpixtract.pl perl script without the worry of setting the correct perl 13894options. AcpiBin runs on Windows and has not yet been generated/validated 13895in 13896the Linux/Unix environment (but should be soon). 13897 13898Updated and fixed the table dump option for AcpiBin (-d). This option 13899converts a single ACPI table to a hex/ascii file, similar to the output 13900of 13901AcpiDmp. 13902 13903Code and Data Size: Current and previous core subsystem library sizes are 13904shown below. These are the code and data sizes for the acpica.lib 13905produced 13906by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13907any ACPI driver or OSPM code. The debug version of the code includes the 13908debug output trace mechanism and has a much larger code and data size. 13909Note 13910that these values will vary depending on the efficiency of the compiler 13911and 13912the compiler options used during generation. 13913 13914 Previous Release: 13915 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13916 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13917 Current Release: 13918 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13919 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13920 13921 139222) iASL Compiler/Disassembler: 13923 13924Disassembler fix: Added a check to ensure that the table length found in 13925the 13926ACPI table header within the input file is not longer than the actual 13927input 13928file size. This indicates some kind of file or table corruption. 13929 13930---------------------------------------- 1393129 March 2005. Summary of changes for version 20050329: 13932 139331) ACPI CA Core Subsystem: 13934 13935An error is now generated if an attempt is made to create a Buffer Field 13936of 13937length zero (A CreateField with a length operand of zero.) 13938 13939The interpreter now issues a warning whenever executable code at the 13940module 13941level is detected during ACPI table load. This will give some idea of the 13942prevalence of this type of code. 13943 13944Implemented support for references to named objects (other than control 13945methods) within package objects. 13946 13947Enhanced package object output for the debug object. Package objects are 13948now 13949completely dumped, showing all elements. 13950 13951Enhanced miscellaneous object output for the debug object. Any object can 13952now be written to the debug object (for example, a device object can be 13953written, and the type of the object will be displayed.) 13954 13955The "static" qualifier has been added to all local functions across both 13956the 13957core subsystem and the iASL compiler. 13958 13959The number of "long" lines (> 80 chars) within the source has been 13960significantly reduced, by about 1/3. 13961 13962Cleaned up all header files to ensure that all CA/iASL functions are 13963prototyped (even static functions) and the formatting is consistent. 13964 13965Two new header files have been added, acopcode.h and acnames.h. 13966 13967Removed several obsolete functions that were no longer used. 13968 13969Code and Data Size: Current and previous core subsystem library sizes are 13970shown below. These are the code and data sizes for the acpica.lib 13971produced 13972by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13973any ACPI driver or OSPM code. The debug version of the code includes the 13974debug output trace mechanism and has a much larger code and data size. 13975Note 13976that these values will vary depending on the efficiency of the compiler 13977and 13978the compiler options used during generation. 13979 13980 Previous Release: 13981 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13982 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13983 Current Release: 13984 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 13985 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 13986 13987 13988 139892) iASL Compiler/Disassembler: 13990 13991Fixed a problem with the resource descriptor generation/support. For the 13992ResourceSourceIndex and the ResourceSource fields, both must be present, 13993or 13994both must be not present - can't have one without the other. 13995 13996The compiler now returns non-zero from the main procedure if any errors 13997have 13998occurred during the compilation. 13999 14000 14001---------------------------------------- 1400209 March 2005. Summary of changes for version 20050309: 14003 140041) ACPI CA Core Subsystem: 14005 14006The string-to-buffer implicit conversion code has been modified again 14007after 14008a change to the ACPI specification. In order to match the behavior of 14009the 14010other major ACPI implementation, the target buffer is no longer truncated 14011if 14012the source string is smaller than an existing target buffer. This change 14013requires an update to the ACPI spec, and should eliminate the recent 14014AE_AML_BUFFER_LIMIT issues. 14015 14016The "implicit return" support was rewritten to a new algorithm that 14017solves 14018the general case. Rather than attempt to determine when a method is about 14019to 14020exit, the result of every ASL operator is saved momentarily until the 14021very 14022next ASL operator is executed. Therefore, no matter how the method exits, 14023there will always be a saved implicit return value. This feature is only 14024enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 14025eliminate 14026AE_AML_NO_RETURN_VALUE errors when enabled. 14027 14028Implemented implicit conversion support for the predicate (operand) of 14029the 14030If, Else, and While operators. String and Buffer arguments are 14031automatically 14032converted to Integers. 14033 14034Changed the string-to-integer conversion behavior to match the new ACPI 14035errata: "If no integer object exists, a new integer is created. The ASCII 14036string is interpreted as a hexadecimal constant. Each string character is 14037interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 14038with the first character as the most significant digit, and ending with 14039the 14040first non-hexadecimal character or end-of-string." This means that the 14041first 14042non-hex character terminates the conversion and this is the code that was 14043changed. 14044 14045Fixed a problem where the ObjectType operator would fail (fault) when 14046used 14047on an Index of a Package which pointed to a null package element. The 14048operator now properly returns zero (Uninitialized) in this case. 14049 14050Fixed a problem where the While operator used excessive memory by not 14051properly popping the result stack during execution. There was no memory 14052leak 14053after execution, however. (Code provided by Valery Podrezov.) 14054 14055Fixed a problem where references to control methods within Package 14056objects 14057caused the method to be invoked, instead of producing a reference object 14058pointing to the method. 14059 14060Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 14061to 14062improve performance and reduce code size. (Code provided by Alexey 14063Starikovskiy.) 14064 14065Code and Data Size: Current and previous core subsystem library sizes are 14066shown below. These are the code and data sizes for the acpica.lib 14067produced 14068by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14069any ACPI driver or OSPM code. The debug version of the code includes the 14070debug output trace mechanism and has a much larger code and data size. 14071Note 14072that these values will vary depending on the efficiency of the compiler 14073and 14074the compiler options used during generation. 14075 14076 Previous Release: 14077 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14078 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14079 Current Release: 14080 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14081 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14082 14083 140842) iASL Compiler/Disassembler: 14085 14086Fixed a problem with the Return operator with no arguments. Since the AML 14087grammar for the byte encoding requires an operand for the Return opcode, 14088the 14089compiler now emits a Return(Zero) for this case. An ACPI specification 14090update has been written for this case. 14091 14092For tables other than the DSDT, namepath optimization is automatically 14093disabled. This is because SSDTs can be loaded anywhere in the namespace, 14094the 14095compiler has no knowledge of where, and thus cannot optimize namepaths. 14096 14097Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 14098inadvertently omitted from the ACPI specification, and will require an 14099update to the spec. 14100 14101The source file scan for ASCII characters is now optional (-a). This 14102change 14103was made because some vendors place non-ascii characters within comments. 14104However, the scan is simply a brute-force byte compare to ensure all 14105characters in the file are in the range 0x00 to 0x7F. 14106 14107Fixed a problem with the CondRefOf operator where the compiler was 14108inappropriately checking for the existence of the target. Since the point 14109of 14110the operator is to check for the existence of the target at run-time, the 14111compiler no longer checks for the target existence. 14112 14113Fixed a problem where errors generated from the internal AML interpreter 14114during constant folding were not handled properly, causing a fault. 14115 14116Fixed a problem with overly aggressive range checking for the Stall 14117operator. The valid range (max 255) is now only checked if the operand is 14118of 14119type Integer. All other operand types cannot be statically checked. 14120 14121Fixed a problem where control method references within the RefOf, 14122DeRefOf, 14123and ObjectType operators were not treated properly. They are now treated 14124as 14125actual references, not method invocations. 14126 14127Fixed and enhanced the "list namespace" option (-ln). This option was 14128broken 14129a number of releases ago. 14130 14131Improved error handling for the Field, IndexField, and BankField 14132operators. 14133The compiler now cleanly reports and recovers from errors in the field 14134component (FieldUnit) list. 14135 14136Fixed a disassembler problem where the optional ResourceDescriptor fields 14137TRS and TTP were not always handled correctly. 14138 14139Disassembler - Comments in output now use "//" instead of "/*" 14140 14141---------------------------------------- 1414228 February 2005. Summary of changes for version 20050228: 14143 141441) ACPI CA Core Subsystem: 14145 14146Fixed a problem where the result of an Index() operator (an object 14147reference) must increment the reference count on the target object for 14148the 14149life of the object reference. 14150 14151Implemented AML Interpreter and Debugger support for the new ACPI 3.0 14152Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 14153WordSpace 14154resource descriptors. 14155 14156Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 14157Space Descriptor" string, indicating interpreter support for the 14158descriptors 14159above. 14160 14161Implemented header support for the new ACPI 3.0 FADT flag bits. 14162 14163Implemented header support for the new ACPI 3.0 PCI Express bits for the 14164PM1 14165status/enable registers. 14166 14167Updated header support for the MADT processor local Apic struct and MADT 14168platform interrupt source struct for new ACPI 3.0 fields. 14169 14170Implemented header support for the SRAT and SLIT ACPI tables. 14171 14172Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 14173flag 14174at runtime. 14175 14176Code and Data Size: Current and previous core subsystem library sizes are 14177shown below. These are the code and data sizes for the acpica.lib 14178produced 14179by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14180any ACPI driver or OSPM code. The debug version of the code includes the 14181debug output trace mechanism and has a much larger code and data size. 14182Note 14183that these values will vary depending on the efficiency of the compiler 14184and 14185the compiler options used during generation. 14186 14187 Previous Release: 14188 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14189 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14190 Current Release: 14191 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14192 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14193 14194 141952) iASL Compiler/Disassembler: 14196 14197Fixed a problem with the internal 64-bit String-to-integer conversion 14198with 14199strings less than two characters long. 14200 14201Fixed a problem with constant folding where the result of the Index() 14202operator can not be considered a constant. This means that Index() cannot 14203be 14204a type3 opcode and this will require an update to the ACPI specification. 14205 14206Disassembler: Implemented support for the TTP, MTP, and TRS resource 14207descriptor fields. These fields were inadvertently ignored and not output 14208in 14209the disassembly of the resource descriptor. 14210 14211 14212 ---------------------------------------- 1421311 February 2005. Summary of changes for version 20050211: 14214 142151) ACPI CA Core Subsystem: 14216 14217Implemented ACPI 3.0 support for implicit conversion within the Match() 14218operator. MatchObjects can now be of type integer, buffer, or string 14219instead 14220of just type integer. Package elements are implicitly converted to the 14221type 14222of the MatchObject. This change aligns the behavior of Match() with the 14223behavior of the other logical operators (LLess(), etc.) It also requires 14224an 14225errata change to the ACPI specification as this support was intended for 14226ACPI 3.0, but was inadvertently omitted. 14227 14228Fixed a problem with the internal implicit "to buffer" conversion. 14229Strings 14230that are converted to buffers will cause buffer truncation if the string 14231is 14232smaller than the target buffer. Integers that are converted to buffers 14233will 14234not cause buffer truncation, only zero extension (both as per the ACPI 14235spec.) The problem was introduced when code was added to truncate the 14236buffer, but this should not be performed in all cases, only the string 14237case. 14238 14239Fixed a problem with the Buffer and Package operators where the 14240interpreter 14241would get confused if two such operators were used as operands to an ASL 14242operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 14243stack was not being popped after the execution of these operators, 14244resulting 14245in an AE_NO_RETURN_VALUE exception. 14246 14247Fixed a problem with constructs of the form Store(Index(...),...). The 14248reference object returned from Index was inadvertently resolved to an 14249actual 14250value. This problem was introduced in version 20050114 when the behavior 14251of 14252Store() was modified to restrict the object types that can be used as the 14253source operand (to match the ACPI specification.) 14254 14255Reduced excessive stack use within the AcpiGetObjectInfo procedure. 14256 14257Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 14258 14259Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 14260 14261Code and Data Size: Current and previous core subsystem library sizes are 14262shown below. These are the code and data sizes for the acpica.lib 14263produced 14264by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14265any ACPI driver or OSPM code. The debug version of the code includes the 14266debug output trace mechanism and has a much larger code and data size. 14267Note 14268that these values will vary depending on the efficiency of the compiler 14269and 14270the compiler options used during generation. 14271 14272 Previous Release: 14273 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14274 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14275 Current Release: 14276 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14277 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14278 14279 142802) iASL Compiler/Disassembler: 14281 14282Fixed a code generation problem in the constant folding optimization code 14283where incorrect code was generated if a constant was reduced to a buffer 14284object (i.e., a reduced type 5 opcode.) 14285 14286Fixed a typechecking problem for the ToBuffer operator. Caused by an 14287incorrect return type in the internal opcode information table. 14288 14289---------------------------------------- 1429025 January 2005. Summary of changes for version 20050125: 14291 142921) ACPI CA Core Subsystem: 14293 14294Fixed a recently introduced problem with the Global Lock where the 14295underlying semaphore was not created. This problem was introduced in 14296version 20050114, and caused an AE_AML_NO_OPERAND exception during an 14297Acquire() operation on _GL. 14298 14299The local object cache is now optional, and is disabled by default. Both 14300AcpiExec and the iASL compiler enable the cache because they run in user 14301mode and this enhances their performance. #define 14302ACPI_ENABLE_OBJECT_CACHE 14303to enable the local cache. 14304 14305Fixed an issue in the internal function AcpiUtEvaluateObject concerning 14306the 14307optional "implicit return" support where an error was returned if no 14308return 14309object was expected, but one was implicitly returned. AE_OK is now 14310returned 14311in this case and the implicitly returned object is deleted. 14312AcpiUtEvaluateObject is only occasionally used, and only to execute 14313reserved 14314methods such as _STA and _INI where the return type is known up front. 14315 14316Fixed a few issues with the internal convert-to-integer code. It now 14317returns 14318an error if an attempt is made to convert a null string, a string of only 14319blanks/tabs, or a zero-length buffer. This affects both implicit 14320conversion 14321and explicit conversion via the ToInteger() operator. 14322 14323The internal debug code in AcpiUtAcquireMutex has been commented out. It 14324is 14325not needed for normal operation and should increase the performance of 14326the 14327entire subsystem. The code remains in case it is needed for debug 14328purposes 14329again. 14330 14331The AcpiExec source and makefile are included in the Unix/Linux package 14332for 14333the first time. 14334 14335Code and Data Size: Current and previous core subsystem library sizes are 14336shown below. These are the code and data sizes for the acpica.lib 14337produced 14338by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14339any ACPI driver or OSPM code. The debug version of the code includes the 14340debug output trace mechanism and has a much larger code and data size. 14341Note 14342that these values will vary depending on the efficiency of the compiler 14343and 14344the compiler options used during generation. 14345 14346 Previous Release: 14347 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14348 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14349 Current Release: 14350 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14351 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14352 143532) iASL Compiler/Disassembler: 14354 14355Switch/Case support: A warning is now issued if the type of the Switch 14356value 14357cannot be determined at compile time. For example, Switch(Arg0) will 14358generate the warning, and the type is assumed to be an integer. As per 14359the 14360ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 14361the 14362warning. 14363 14364Switch/Case support: Implemented support for buffer and string objects as 14365the switch value. This is an ACPI 3.0 feature, now that LEqual supports 14366buffers and strings. 14367 14368Switch/Case support: The emitted code for the LEqual() comparisons now 14369uses 14370the switch value as the first operand, not the second. The case value is 14371now 14372the second operand, and this allows the case value to be implicitly 14373converted to the type of the switch value, not the other way around. 14374 14375Switch/Case support: Temporary variables are now emitted immediately 14376within 14377the control method, not at the global level. This means that there are 14378now 1437936 temps available per-method, not 36 temps per-module as was the case 14380with 14381the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 14382 14383---------------------------------------- 1438414 January 2005. Summary of changes for version 20050114: 14385 14386Added 2005 copyright to all module headers. This affects every module in 14387the core subsystem, iASL compiler, and the utilities. 14388 143891) ACPI CA Core Subsystem: 14390 14391Fixed an issue with the String-to-Buffer conversion code where the string 14392null terminator was not included in the buffer after conversion, but 14393there 14394is existing ASL that assumes the string null terminator is included. This 14395is 14396the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14397introduced in the previous version when the code was updated to correctly 14398set the converted buffer size as per the ACPI specification. The ACPI 14399spec 14400is ambiguous and will be updated to specify that the null terminator must 14401be 14402included in the converted buffer. This also affects the ToBuffer() ASL 14403operator. 14404 14405Fixed a problem with the Mid() ASL/AML operator where it did not work 14406correctly on Buffer objects. Newly created sub-buffers were not being 14407marked 14408as initialized. 14409 14410 14411Fixed a problem in AcpiTbFindTable where incorrect string compares were 14412performed on the OemId and OemTableId table header fields. These fields 14413are 14414not null terminated, so strncmp is now used instead of strcmp. 14415 14416Implemented a restriction on the Store() ASL/AML operator to align the 14417behavior with the ACPI specification. Previously, any object could be 14418used 14419as the source operand. Now, the only objects that may be used are 14420Integers, 14421Buffers, Strings, Packages, Object References, and DDB Handles. If 14422necessary, the original behavior can be restored by enabling the 14423EnableInterpreterSlack flag. 14424 14425Enhanced the optional "implicit return" support to allow an implicit 14426return 14427value from methods that are invoked externally via the AcpiEvaluateObject 14428interface. This enables implicit returns from the _STA and _INI methods, 14429for example. 14430 14431Changed the Revision() ASL/AML operator to return the current version of 14432the 14433AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14434returned 14435the supported ACPI version (This is the function of the _REV method). 14436 14437Updated the _REV predefined method to return the currently supported 14438version 14439of ACPI, now 3. 14440 14441Implemented batch mode option for the AcpiExec utility (-b). 14442 14443Code and Data Size: Current and previous core subsystem library sizes are 14444shown below. These are the code and data sizes for the acpica.lib 14445produced 14446by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14447any ACPI driver or OSPM code. The debug version of the code includes the 14448debug output trace mechanism and has a much larger code and data size. 14449Note 14450that these values will vary depending on the efficiency of the compiler 14451and 14452the compiler options used during generation. 14453 14454 Previous Release: 14455 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14456 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14457 Current Release: 14458 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14459 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14460 14461---------------------------------------- 1446210 December 2004. Summary of changes for version 20041210: 14463 14464ACPI 3.0 support is nearing completion in both the iASL compiler and the 14465ACPI CA core subsystem. 14466 144671) ACPI CA Core Subsystem: 14468 14469Fixed a problem in the ToDecimalString operator where the resulting 14470string 14471length was incorrectly calculated. The length is now calculated exactly, 14472eliminating incorrect AE_STRING_LIMIT exceptions. 14473 14474Fixed a problem in the ToHexString operator to allow a maximum 200 14475character 14476string to be produced. 14477 14478Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14479copy 14480routine where the length of the resulting buffer was not truncated to the 14481new size (if the target buffer already existed). 14482 14483Code and Data Size: Current and previous core subsystem library sizes are 14484shown below. These are the code and data sizes for the acpica.lib 14485produced 14486by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14487any ACPI driver or OSPM code. The debug version of the code includes the 14488debug output trace mechanism and has a much larger code and data size. 14489Note 14490that these values will vary depending on the efficiency of the compiler 14491and 14492the compiler options used during generation. 14493 14494 Previous Release: 14495 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14496 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14497 Current Release: 14498 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14499 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14500 14501 145022) iASL Compiler/Disassembler: 14503 14504Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14505ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14506Includes support in the disassembler. 14507 14508Implemented support for the new (ACPI 3.0) parameter to the Register 14509macro, 14510AccessSize. 14511 14512Fixed a problem where the _HE resource name for the Interrupt macro was 14513referencing bit 0 instead of bit 1. 14514 14515Implemented check for maximum 255 interrupts in the Interrupt macro. 14516 14517Fixed a problem with the predefined resource descriptor names where 14518incorrect AML code was generated if the offset within the resource buffer 14519was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14520but did not update the surrounding package lengths. 14521 14522Changes to the Dma macro: All channels within the channel list must be 14523in 14524the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14525optional (default is BusMaster). 14526 14527Implemented check for maximum 7 data bytes for the VendorShort macro. 14528 14529The ReadWrite parameter is now optional for the Memory32 and similar 14530macros. 14531 14532---------------------------------------- 1453303 December 2004. Summary of changes for version 20041203: 14534 145351) ACPI CA Core Subsystem: 14536 14537The low-level field insertion/extraction code (exfldio) has been 14538completely 14539rewritten to eliminate unnecessary complexity, bugs, and boundary 14540conditions. 14541 14542Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14543ToDecimalString 14544operators where the input operand could be inadvertently deleted if no 14545conversion was necessary (e.g., if the input to ToInteger was an Integer 14546object.) 14547 14548Fixed a problem with the ToDecimalString and ToHexString where an 14549incorrect 14550exception code was returned if the resulting string would be > 200 chars. 14551AE_STRING_LIMIT is now returned. 14552 14553Fixed a problem with the Concatenate operator where AE_OK was always 14554returned, even if the operation failed. 14555 14556Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14557semaphores to be allocated. 14558 14559Code and Data Size: Current and previous core subsystem library sizes are 14560shown below. These are the code and data sizes for the acpica.lib 14561produced 14562by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14563any ACPI driver or OSPM code. The debug version of the code includes the 14564debug output trace mechanism and has a much larger code and data size. 14565Note 14566that these values will vary depending on the efficiency of the compiler 14567and 14568the compiler options used during generation. 14569 14570 Previous Release: 14571 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14572 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14573 Current Release: 14574 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14575 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14576 14577 145782) iASL Compiler/Disassembler: 14579 14580Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14581recently introduced in 20041119. 14582 14583Fixed a problem with the ToUUID macro where the upper nybble of each 14584buffer 14585byte was inadvertently set to zero. 14586 14587---------------------------------------- 1458819 November 2004. Summary of changes for version 20041119: 14589 145901) ACPI CA Core Subsystem: 14591 14592Fixed a problem in the internal ConvertToInteger routine where new 14593integers 14594were not truncated to 32 bits for 32-bit ACPI tables. This routine 14595converts 14596buffers and strings to integers. 14597 14598Implemented support to store a value to an Index() on a String object. 14599This 14600is an ACPI 2.0 feature that had not yet been implemented. 14601 14602Implemented new behavior for storing objects to individual package 14603elements 14604(via the Index() operator). The previous behavior was to invoke the 14605implicit 14606conversion rules if an object was already present at the index. The new 14607behavior is to simply delete any existing object and directly store the 14608new 14609object. Although the ACPI specification seems unclear on this subject, 14610other 14611ACPI implementations behave in this manner. (This is the root of the 14612AE_BAD_HEX_CONSTANT issue.) 14613 14614Modified the RSDP memory scan mechanism to support the extended checksum 14615for 14616ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14617RSDP signature is found with a valid checksum. 14618 14619Code and Data Size: Current and previous core subsystem library sizes are 14620shown below. These are the code and data sizes for the acpica.lib 14621produced 14622by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14623any ACPI driver or OSPM code. The debug version of the code includes the 14624debug output trace mechanism and has a much larger code and data size. 14625Note 14626that these values will vary depending on the efficiency of the compiler 14627and 14628the compiler options used during generation. 14629 14630 Previous Release: 14631 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14632 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14633 Current Release: 14634 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14635 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14636 14637 146382) iASL Compiler/Disassembler: 14639 14640Fixed a missing semicolon in the aslcompiler.y file. 14641 14642---------------------------------------- 1464305 November 2004. Summary of changes for version 20041105: 14644 146451) ACPI CA Core Subsystem: 14646 14647Implemented support for FADT revision 2. This was an interim table 14648(between 14649ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14650 14651Implemented optional support to allow uninitialized LocalX and ArgX 14652variables in a control method. The variables are initialized to an 14653Integer 14654object with a value of zero. This support is enabled by setting the 14655AcpiGbl_EnableInterpreterSlack flag to TRUE. 14656 14657Implemented support for Integer objects for the SizeOf operator. Either 146584 14659or 8 is returned, depending on the current integer size (32-bit or 64- 14660bit, 14661depending on the parent table revision). 14662 14663Fixed a problem in the implementation of the SizeOf and ObjectType 14664operators 14665where the operand was resolved to a value too early, causing incorrect 14666return values for some objects. 14667 14668Fixed some possible memory leaks during exceptional conditions. 14669 14670Code and Data Size: Current and previous core subsystem library sizes are 14671shown below. These are the code and data sizes for the acpica.lib 14672produced 14673by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14674any ACPI driver or OSPM code. The debug version of the code includes the 14675debug output trace mechanism and has a much larger code and data size. 14676Note 14677that these values will vary depending on the efficiency of the compiler 14678and 14679the compiler options used during generation. 14680 14681 Previous Release: 14682 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14683 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14684 Current Release: 14685 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14686 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14687 14688 146892) iASL Compiler/Disassembler: 14690 14691Implemented support for all ACPI 3.0 reserved names and methods. 14692 14693Implemented all ACPI 3.0 grammar elements in the front-end, including 14694support for semicolons. 14695 14696Implemented the ACPI 3.0 Function() and ToUUID() macros 14697 14698Fixed a problem in the disassembler where a Scope() operator would not be 14699emitted properly if the target of the scope was in another table. 14700 14701---------------------------------------- 1470215 October 2004. Summary of changes for version 20041015: 14703 14704Note: ACPI CA is currently undergoing an in-depth and complete formal 14705evaluation to test/verify the following areas. Other suggestions are 14706welcome. This will result in an increase in the frequency of releases and 14707the number of bug fixes in the next few months. 14708 - Functional tests for all ASL/AML operators 14709 - All implicit/explicit type conversions 14710 - Bit fields and operation regions 14711 - 64-bit math support and 32-bit-only "truncated" math support 14712 - Exceptional conditions, both compiler and interpreter 14713 - Dynamic object deletion and memory leaks 14714 - ACPI 3.0 support when implemented 14715 - External interfaces to the ACPI subsystem 14716 14717 147181) ACPI CA Core Subsystem: 14719 14720Fixed two alignment issues on 64-bit platforms - within debug statements 14721in 14722AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14723Address 14724field within the non-aligned ACPI generic address structure. 14725 14726Fixed a problem in the Increment and Decrement operators where incorrect 14727operand resolution could result in the inadvertent modification of the 14728original integer when the integer is passed into another method as an 14729argument and the arg is then incremented/decremented. 14730 14731Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14732bit 14733BCD number were truncated during conversion. 14734 14735Fixed a problem in the ToDecimal operator where the length of the 14736resulting 14737string could be set incorrectly too long if the input operand was a 14738Buffer 14739object. 14740 14741Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14742(0) 14743within a buffer would prematurely terminate a compare between buffer 14744objects. 14745 14746Added a check for string overflow (>200 characters as per the ACPI 14747specification) during the Concatenate operator with two string operands. 14748 14749Code and Data Size: Current and previous core subsystem library sizes are 14750shown below. These are the code and data sizes for the acpica.lib 14751produced 14752by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14753any ACPI driver or OSPM code. The debug version of the code includes the 14754debug output trace mechanism and has a much larger code and data size. 14755Note 14756that these values will vary depending on the efficiency of the compiler 14757and 14758the compiler options used during generation. 14759 14760 Previous Release: 14761 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14762 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14763 Current Release: 14764 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14765 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14766 14767 14768 147692) iASL Compiler/Disassembler: 14770 14771Allow the use of the ObjectType operator on uninitialized Locals and Args 14772(returns 0 as per the ACPI specification). 14773 14774Fixed a problem where the compiler would fault if there was a syntax 14775error 14776in the FieldName of all of the various CreateXXXField operators. 14777 14778Disallow the use of lower case letters within the EISAID macro, as per 14779the 14780ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14781Where 14782U is an uppercase letter and N is a hex digit. 14783 14784 14785---------------------------------------- 1478606 October 2004. Summary of changes for version 20041006: 14787 147881) ACPI CA Core Subsystem: 14789 14790Implemented support for the ACPI 3.0 Timer operator. This ASL function 14791implements a 64-bit timer with 100 nanosecond granularity. 14792 14793Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14794implement the ACPI 3.0 Timer operator. This allows the host OS to 14795implement 14796the timer with the best clock available. Also, it keeps the core 14797subsystem 14798out of the clock handling business, since the host OS (usually) performs 14799this function. 14800 14801Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14802functions use a 64-bit address which is part of the packed ACPI Generic 14803Address Structure. Since the structure is non-aligned, the alignment 14804macros 14805are now used to extract the address to a local variable before use. 14806 14807Fixed a problem where the ToInteger operator assumed all input strings 14808were 14809hexadecimal. The operator now handles both decimal strings and hex 14810strings 14811(prefixed with "0x"). 14812 14813Fixed a problem where the string length in the string object created as a 14814result of the internal ConvertToString procedure could be incorrect. This 14815potentially affected all implicit conversions and also the 14816ToDecimalString 14817and ToHexString operators. 14818 14819Fixed two problems in the ToString operator. If the length parameter was 14820zero, an incorrect string object was created and the value of the input 14821length parameter was inadvertently changed from zero to Ones. 14822 14823Fixed a problem where the optional ResourceSource string in the 14824ExtendedIRQ 14825resource macro was ignored. 14826 14827Simplified the interfaces to the internal division functions, reducing 14828code 14829size and complexity. 14830 14831Code and Data Size: Current and previous core subsystem library sizes are 14832shown below. These are the code and data sizes for the acpica.lib 14833produced 14834by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14835any ACPI driver or OSPM code. The debug version of the code includes the 14836debug output trace mechanism and has a much larger code and data size. 14837Note 14838that these values will vary depending on the efficiency of the compiler 14839and 14840the compiler options used during generation. 14841 14842 Previous Release: 14843 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14844 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14845 Current Release: 14846 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14847 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14848 14849 148502) iASL Compiler/Disassembler: 14851 14852Implemented support for the ACPI 3.0 Timer operator. 14853 14854Fixed a problem where the Default() operator was inadvertently ignored in 14855a 14856Switch/Case block. This was a problem in the translation of the Switch 14857statement to If...Else pairs. 14858 14859Added support to allow a standalone Return operator, with no parentheses 14860(or 14861operands). 14862 14863Fixed a problem with code generation for the ElseIf operator where the 14864translated Else...If parse tree was improperly constructed leading to the 14865loss of some code. 14866 14867---------------------------------------- 1486822 September 2004. Summary of changes for version 20040922: 14869 148701) ACPI CA Core Subsystem: 14871 14872Fixed a problem with the implementation of the LNot() operator where 14873"Ones" 14874was not returned for the TRUE case. Changed the code to return Ones 14875instead 14876of (!Arg) which was usually 1. This change affects iASL constant folding 14877for 14878this operator also. 14879 14880Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14881not 14882initialized properly -- Now zero the entire buffer in this case where the 14883buffer already exists. 14884 14885Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14886Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14887related code considerably. This will require changes/updates to all OS 14888interface layers (OSLs.) 14889 14890Implemented a new external interface, AcpiInstallExceptionHandler, to 14891allow 14892a system exception handler to be installed. This handler is invoked upon 14893any 14894run-time exception that occurs during control method execution. 14895 14896Added support for the DSDT in AcpiTbFindTable. This allows the 14897DataTableRegion() operator to access the local copy of the DSDT. 14898 14899Code and Data Size: Current and previous core subsystem library sizes are 14900shown below. These are the code and data sizes for the acpica.lib 14901produced 14902by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14903any ACPI driver or OSPM code. The debug version of the code includes the 14904debug output trace mechanism and has a much larger code and data size. 14905Note 14906that these values will vary depending on the efficiency of the compiler 14907and 14908the compiler options used during generation. 14909 14910 Previous Release: 14911 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 14912 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 14913 Current Release: 14914 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14915 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14916 14917 149182) iASL Compiler/Disassembler: 14919 14920Fixed a problem with constant folding and the LNot operator. LNot was 14921returning 1 in the TRUE case, not Ones as per the ACPI specification. 14922This 14923could result in the generation of an incorrect folded/reduced constant. 14924 14925End-Of-File is now allowed within a "//"-style comment. A parse error no 14926longer occurs if such a comment is at the very end of the input ASL 14927source 14928file. 14929 14930Implemented the "-r" option to override the Revision in the table header. 14931The initial use of this option will be to simplify the evaluation of the 14932AML 14933interpreter by allowing a single ASL source module to be compiled for 14934either 1493532-bit or 64-bit integers. 14936 14937 14938---------------------------------------- 1493927 August 2004. Summary of changes for version 20040827: 14940 149411) ACPI CA Core Subsystem: 14942 14943- Implemented support for implicit object conversion in the non-numeric 14944logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 14945and 14946LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 14947the second operand is implicitly converted on the fly to match the type 14948of 14949the first operand. For example: 14950 14951 LEqual (Source1, Source2) 14952 14953Source1 and Source2 must each evaluate to an integer, a string, or a 14954buffer. 14955The data type of Source1 dictates the required type of Source2. Source2 14956is 14957implicitly converted if necessary to match the type of Source1. 14958 14959- Updated and corrected the behavior of the string conversion support. 14960The 14961rules concerning conversion of buffers to strings (according to the ACPI 14962specification) are as follows: 14963 14964ToDecimalString - explicit byte-wise conversion of buffer to string of 14965decimal values (0-255) separated by commas. ToHexString - explicit byte- 14966wise 14967conversion of buffer to string of hex values (0-FF) separated by commas. 14968ToString - explicit byte-wise conversion of buffer to string. Byte-by- 14969byte 14970copy with no transform except NULL terminated. Any other implicit buffer- 14971to- 14972string conversion - byte-wise conversion of buffer to string of hex 14973values 14974(0-FF) separated by spaces. 14975 14976- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 14977 14978- Fixed a problem in AcpiNsGetPathnameLength where the returned length 14979was 14980one byte too short in the case of a node in the root scope. This could 14981cause a fault during debug output. 14982 14983- Code and Data Size: Current and previous core subsystem library sizes 14984are 14985shown below. These are the code and data sizes for the acpica.lib 14986produced 14987by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14988any ACPI driver or OSPM code. The debug version of the code includes the 14989debug output trace mechanism and has a much larger code and data size. 14990Note 14991that these values will vary depending on the efficiency of the compiler 14992and 14993the compiler options used during generation. 14994 14995 Previous Release: 14996 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14997 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14998 Current Release: 14999 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15000 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15001 15002 150032) iASL Compiler/Disassembler: 15004 15005- Fixed a Linux generation error. 15006 15007 15008---------------------------------------- 1500916 August 2004. Summary of changes for version 20040816: 15010 150111) ACPI CA Core Subsystem: 15012 15013Designed and implemented support within the AML interpreter for the so- 15014called "implicit return". This support returns the result of the last 15015ASL 15016operation within a control method, in the absence of an explicit Return() 15017operator. A few machines depend on this behavior, even though it is not 15018explicitly supported by the ASL language. It is optional support that 15019can 15020be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 15021 15022Removed support for the PCI_Config address space from the internal low 15023level 15024hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 15025support was not used internally, and would not work correctly anyway 15026because 15027the PCI bus number and segment number were not supported. There are 15028separate interfaces for PCI configuration space access because of the 15029unique 15030interface. 15031 15032Code and Data Size: Current and previous core subsystem library sizes are 15033shown below. These are the code and data sizes for the acpica.lib 15034produced 15035by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15036any ACPI driver or OSPM code. The debug version of the code includes the 15037debug output trace mechanism and has a much larger code and data size. 15038Note 15039that these values will vary depending on the efficiency of the compiler 15040and 15041the compiler options used during generation. 15042 15043 Previous Release: 15044 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15045 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15046 Current Release: 15047 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15048 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15049 15050 150512) iASL Compiler/Disassembler: 15052 15053Fixed a problem where constants in ASL expressions at the root level (not 15054within a control method) could be inadvertently truncated during code 15055generation. This problem was introduced in the 20040715 release. 15056 15057 15058---------------------------------------- 1505915 July 2004. Summary of changes for version 20040715: 15060 150611) ACPI CA Core Subsystem: 15062 15063Restructured the internal HW GPE interfaces to pass/track the current 15064state 15065of interrupts (enabled/disabled) in order to avoid possible deadlock and 15066increase flexibility of the interfaces. 15067 15068Implemented a "lexicographical compare" for String and Buffer objects 15069within 15070the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 15071- 15072as per further clarification to the ACPI specification. Behavior is 15073similar 15074to C library "strcmp". 15075 15076Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 15077external function. In the 32-bit non-debug case, the stack use has been 15078reduced from 168 bytes to 32 bytes. 15079 15080Deployed a new run-time configuration flag, 15081AcpiGbl_EnableInterpreterSlack, 15082whose purpose is to allow the AML interpreter to forgive certain bad AML 15083constructs. Default setting is FALSE. 15084 15085Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 15086IO 15087support code. If enabled, it allows field access to go beyond the end of 15088a 15089region definition if the field is within the region length rounded up to 15090the 15091next access width boundary (a common coding error.) 15092 15093Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 15094ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 15095these 15096symbols are lowercase by the latest version of the AcpiSrc tool. 15097 15098The prototypes for the PCI interfaces in acpiosxf.h have been updated to 15099rename "Register" to simply "Reg" to prevent certain compilers from 15100complaining. 15101 15102Code and Data Size: Current and previous core subsystem library sizes are 15103shown below. These are the code and data sizes for the acpica.lib 15104produced 15105by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15106any ACPI driver or OSPM code. The debug version of the code includes the 15107debug output trace mechanism and has a much larger code and data size. 15108Note 15109that these values will vary depending on the efficiency of the compiler 15110and 15111the compiler options used during generation. 15112 15113 Previous Release: 15114 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15115 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15116 Current Release: 15117 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15118 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15119 15120 151212) iASL Compiler/Disassembler: 15122 15123Implemented full support for Package objects within the Case() operator. 15124Note: The Break() operator is currently not supported within Case blocks 15125(TermLists) as there is some question about backward compatibility with 15126ACPI 151271.0 interpreters. 15128 15129 15130Fixed a problem where complex terms were not supported properly within 15131the 15132Switch() operator. 15133 15134Eliminated extraneous warning for compiler-emitted reserved names of the 15135form "_T_x". (Used in Switch/Case operators.) 15136 15137Eliminated optimization messages for "_T_x" objects and small constants 15138within the DefinitionBlock operator. 15139 15140 15141---------------------------------------- 1514215 June 2004. Summary of changes for version 20040615: 15143 151441) ACPI CA Core Subsystem: 15145 15146Implemented support for Buffer and String objects (as per ACPI 2.0) for 15147the 15148following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15149LLessEqual. 15150 15151All directory names in the entire source package are lower case, as they 15152were in earlier releases. 15153 15154Implemented "Disassemble" command in the AML debugger that will 15155disassemble 15156a single control method. 15157 15158Code and Data Size: Current and previous core subsystem library sizes are 15159shown below. These are the code and data sizes for the acpica.lib 15160produced 15161by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15162any ACPI driver or OSPM code. The debug version of the code includes the 15163debug output trace mechanism and has a much larger code and data size. 15164Note 15165that these values will vary depending on the efficiency of the compiler 15166and 15167the compiler options used during generation. 15168 15169 Previous Release: 15170 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15171 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15172 15173 Current Release: 15174 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15175 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15176 15177 151782) iASL Compiler/Disassembler: 15179 15180Implemented support for Buffer and String objects (as per ACPI 2.0) for 15181the 15182following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15183LLessEqual. 15184 15185All directory names in the entire source package are lower case, as they 15186were in earlier releases. 15187 15188Fixed a fault when using the -g or -d<nofilename> options if the FADT was 15189not found. 15190 15191Fixed an issue with the Windows version of the compiler where later 15192versions 15193of Windows place the FADT in the registry under the name "FADT" and not 15194"FACP" as earlier versions did. This applies when using the -g or - 15195d<nofilename> options. The compiler now looks for both strings as 15196necessary. 15197 15198Fixed a problem with compiler namepath optimization where a namepath 15199within 15200the Scope() operator could not be optimized if the namepath was a subpath 15201of 15202the current scope path. 15203 15204---------------------------------------- 1520527 May 2004. Summary of changes for version 20040527: 15206 152071) ACPI CA Core Subsystem: 15208 15209Completed a new design and implementation for EBDA (Extended BIOS Data 15210Area) 15211support in the RSDP scan code. The original code improperly scanned for 15212the 15213EBDA by simply scanning from memory location 0 to 0x400. The correct 15214method 15215is to first obtain the EBDA pointer from within the BIOS data area, then 15216scan 1K of memory starting at the EBDA pointer. There appear to be few 15217if 15218any machines that place the RSDP in the EBDA, however. 15219 15220Integrated a fix for a possible fault during evaluation of BufferField 15221arguments. Obsolete code that was causing the problem was removed. 15222 15223Found and fixed a problem in the Field Support Code where data could be 15224corrupted on a bit field read that starts on an aligned boundary but does 15225not end on an aligned boundary. Merged the read/write "datum length" 15226calculation code into a common procedure. 15227 15228Rolled in a couple of changes to the FreeBSD-specific header. 15229 15230 15231Code and Data Size: Current and previous core subsystem library sizes are 15232shown below. These are the code and data sizes for the acpica.lib 15233produced 15234by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15235any ACPI driver or OSPM code. The debug version of the code includes the 15236debug output trace mechanism and has a much larger code and data size. 15237Note 15238that these values will vary depending on the efficiency of the compiler 15239and 15240the compiler options used during generation. 15241 15242 Previous Release: 15243 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15244 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15245 Current Release: 15246 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15247 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15248 15249 152502) iASL Compiler/Disassembler: 15251 15252Fixed a generation warning produced by some overly-verbose compilers for 15253a 1525464-bit constant. 15255 15256---------------------------------------- 1525714 May 2004. Summary of changes for version 20040514: 15258 152591) ACPI CA Core Subsystem: 15260 15261Fixed a problem where hardware GPE enable bits sometimes not set properly 15262during and after GPE method execution. Result of 04/27 changes. 15263 15264Removed extra "clear all GPEs" when sleeping/waking. 15265 15266Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 15267AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 15268to 15269the new AcpiEv* calls as appropriate. 15270 15271ACPI_OS_NAME was removed from the OS-specific headers. The default name 15272is 15273now "Microsoft Windows NT" for maximum compatibility. However this can 15274be 15275changed by modifying the acconfig.h file. 15276 15277Allow a single invocation of AcpiInstallNotifyHandler for a handler that 15278traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 15279 15280Run _INI methods on ThermalZone objects. This is against the ACPI 15281specification, but there is apparently ASL code in the field that has 15282these 15283_INI methods, and apparently "other" AML interpreters execute them. 15284 15285Performed a full 16/32/64 bit lint that resulted in some small changes. 15286 15287Added a sleep simulation command to the AML debugger to test sleep code. 15288 15289Code and Data Size: Current and previous core subsystem library sizes are 15290shown below. These are the code and data sizes for the acpica.lib 15291produced 15292by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15293any ACPI driver or OSPM code. The debug version of the code includes the 15294debug output trace mechanism and has a much larger code and data size. 15295Note 15296that these values will vary depending on the efficiency of the compiler 15297and 15298the compiler options used during generation. 15299 15300 Previous Release: 15301 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15302 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15303 Current Release: 15304 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15305 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15306 15307---------------------------------------- 1530827 April 2004. Summary of changes for version 20040427: 15309 153101) ACPI CA Core Subsystem: 15311 15312Completed a major overhaul of the GPE handling within ACPI CA. There are 15313now three types of GPEs: wake-only, runtime-only, and combination 15314wake/run. 15315The only GPEs allowed to be combination wake/run are for button-style 15316devices such as a control-method power button, control-method sleep 15317button, 15318or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 15319not 15320referenced by any _PRW methods are marked for "runtime" and hardware 15321enabled. Any GPE that is referenced by a _PRW method is marked for 15322"wake" 15323(and disabled at runtime). However, at sleep time, only those GPEs that 15324have been specifically enabled for wake via the AcpiEnableGpe interface 15325will 15326actually be hardware enabled. 15327 15328A new external interface has been added, AcpiSetGpeType(), that is meant 15329to 15330be used by device drivers to force a GPE to a particular type. It will 15331be 15332especially useful for the drivers for the button devices mentioned above. 15333 15334Completed restructuring of the ACPI CA initialization sequence so that 15335default operation region handlers are installed before GPEs are 15336initialized 15337and the _PRW methods are executed. This will prevent errors when the 15338_PRW 15339methods attempt to access system memory or I/O space. 15340 15341GPE enable/disable no longer reads the GPE enable register. We now keep 15342the 15343enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 15344thus no longer depend on the hardware to maintain these bits. 15345 15346Always clear the wake status and fixed/GPE status bits before sleep, even 15347for state S5. 15348 15349Improved the AML debugger output for displaying the GPE blocks and their 15350current status. 15351 15352Added new strings for the _OSI method, of the form "Windows 2001 SPx" 15353where 15354x = 0,1,2,3,4. 15355 15356Fixed a problem where the physical address was incorrectly calculated 15357when 15358the Load() operator was used to directly load from an Operation Region 15359(vs. 15360loading from a Field object.) Also added check for minimum table length 15361for 15362this case. 15363 15364Fix for multiple mutex acquisition. Restore original thread SyncLevel on 15365mutex release. 15366 15367Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 15368consistency with the other fields returned. 15369 15370Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 15371structure for each GPE in the system, so the size of this structure is 15372important. 15373 15374CPU stack requirement reduction: Cleaned up the method execution and 15375object 15376evaluation paths so that now a parameter structure is passed, instead of 15377copying the various method parameters over and over again. 15378 15379In evregion.c: Correctly exit and reenter the interpreter region if and 15380only if dispatching an operation region request to a user-installed 15381handler. 15382Do not exit/reenter when dispatching to a default handler (e.g., default 15383system memory or I/O handlers) 15384 15385 15386Notes for updating drivers for the new GPE support. The following 15387changes 15388must be made to ACPI-related device drivers that are attached to one or 15389more 15390GPEs: (This information will be added to the ACPI CA Programmer 15391Reference.) 15392 153931) AcpiInstallGpeHandler no longer automatically enables the GPE, you 15394must 15395explicitly call AcpiEnableGpe. 153962) There is a new interface called AcpiSetGpeType. This should be called 15397before enabling the GPE. Also, this interface will automatically disable 15398the GPE if it is currently enabled. 153993) AcpiEnableGpe no longer supports a GPE type flag. 15400 15401Specific drivers that must be changed: 154021) EC driver: 15403 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15404AeGpeHandler, NULL); 15405 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15406 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15407 154082) Button Drivers (Power, Lid, Sleep): 15409Run _PRW method under parent device 15410If _PRW exists: /* This is a control-method button */ 15411 Extract GPE number and possibly GpeDevice 15412 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15413 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15414 15415For all other devices that have _PRWs, we automatically set the GPE type 15416to 15417ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15418This 15419must be done on a selective basis, usually requiring some kind of user 15420app 15421to allow the user to pick the wake devices. 15422 15423 15424Code and Data Size: Current and previous core subsystem library sizes are 15425shown below. These are the code and data sizes for the acpica.lib 15426produced 15427by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15428any ACPI driver or OSPM code. The debug version of the code includes the 15429debug output trace mechanism and has a much larger code and data size. 15430Note 15431that these values will vary depending on the efficiency of the compiler 15432and 15433the compiler options used during generation. 15434 15435 Previous Release: 15436 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15437 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15438 Current Release: 15439 15440 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15441 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15442 15443 15444 15445---------------------------------------- 1544602 April 2004. Summary of changes for version 20040402: 15447 154481) ACPI CA Core Subsystem: 15449 15450Fixed an interpreter problem where an indirect store through an ArgX 15451parameter was incorrectly applying the "implicit conversion rules" during 15452the store. From the ACPI specification: "If the target is a method local 15453or 15454argument (LocalX or ArgX), no conversion is performed and the result is 15455stored directly to the target". The new behavior is to disable implicit 15456conversion during ALL stores to an ArgX. 15457 15458Changed the behavior of the _PRW method scan to ignore any and all errors 15459returned by a given _PRW. This prevents the scan from aborting from the 15460failure of any single _PRW. 15461 15462Moved the runtime configuration parameters from the global init procedure 15463to 15464static variables in acglobal.h. This will allow the host to override the 15465default values easily. 15466 15467Code and Data Size: Current and previous core subsystem library sizes are 15468shown below. These are the code and data sizes for the acpica.lib 15469produced 15470by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15471any ACPI driver or OSPM code. The debug version of the code includes the 15472debug output trace mechanism and has a much larger code and data size. 15473Note 15474that these values will vary depending on the efficiency of the compiler 15475and 15476the compiler options used during generation. 15477 15478 Previous Release: 15479 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15480 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15481 Current Release: 15482 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15483 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15484 15485 154862) iASL Compiler/Disassembler: 15487 15488iASL now fully disassembles SSDTs. However, External() statements are 15489not 15490generated automatically for unresolved symbols at this time. This is a 15491planned feature for future implementation. 15492 15493Fixed a scoping problem in the disassembler that occurs when the type of 15494the 15495target of a Scope() operator is overridden. This problem caused an 15496incorrectly nested internal namespace to be constructed. 15497 15498Any warnings or errors that are emitted during disassembly are now 15499commented 15500out automatically so that the resulting file can be recompiled without 15501any 15502hand editing. 15503 15504---------------------------------------- 1550526 March 2004. Summary of changes for version 20040326: 15506 155071) ACPI CA Core Subsystem: 15508 15509Implemented support for "wake" GPEs via interaction between GPEs and the 15510_PRW methods. Every GPE that is pointed to by one or more _PRWs is 15511identified as a WAKE GPE and by default will no longer be enabled at 15512runtime. Previously, we were blindly enabling all GPEs with a 15513corresponding 15514_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15515We 15516believe this has been the cause of thousands of "spurious" GPEs on some 15517systems. 15518 15519This new GPE behavior is can be reverted to the original behavior (enable 15520ALL GPEs at runtime) via a runtime flag. 15521 15522Fixed a problem where aliased control methods could not access objects 15523properly. The proper scope within the namespace was not initialized 15524(transferred to the target of the aliased method) before executing the 15525target method. 15526 15527Fixed a potential race condition on internal object deletion on the 15528return 15529object in AcpiEvaluateObject. 15530 15531Integrated a fix for resource descriptors where both _MEM and _MTP were 15532being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15533wide, 0x0F instead of 0x03.) 15534 15535Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15536preventing 15537a 15538fault in some cases. 15539 15540Updated Notify() values for debug statements in evmisc.c 15541 15542Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15543 15544Code and Data Size: Current and previous core subsystem library sizes are 15545shown below. These are the code and data sizes for the acpica.lib 15546produced 15547by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15548any ACPI driver or OSPM code. The debug version of the code includes the 15549debug output trace mechanism and has a much larger code and data size. 15550Note 15551that these values will vary depending on the efficiency of the compiler 15552and 15553the compiler options used during generation. 15554 15555 Previous Release: 15556 15557 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15558 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15559 Current Release: 15560 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15561 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15562 15563---------------------------------------- 1556411 March 2004. Summary of changes for version 20040311: 15565 155661) ACPI CA Core Subsystem: 15567 15568Fixed a problem where errors occurring during the parse phase of control 15569method execution did not abort cleanly. For example, objects created and 15570installed in the namespace were not deleted. This caused all subsequent 15571invocations of the method to return the AE_ALREADY_EXISTS exception. 15572 15573Implemented a mechanism to force a control method to "Serialized" 15574execution 15575if the method attempts to create namespace objects. (The root of the 15576AE_ALREADY_EXISTS problem.) 15577 15578Implemented support for the predefined _OSI "internal" control method. 15579Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15580and 15581"Windows 2001.1", and can be easily upgraded for new strings as 15582necessary. 15583This feature will allow "other" operating systems to execute the fully 15584tested, "Windows" code path through the ASL code 15585 15586Global Lock Support: Now allows multiple acquires and releases with any 15587internal thread. Removed concept of "owning thread" for this special 15588mutex. 15589 15590Fixed two functions that were inappropriately declaring large objects on 15591the 15592CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15593during 15594method execution considerably. 15595 15596Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15597S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15598 15599Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15600defined on the machine. 15601 15602Implemented two runtime options: One to force all control method 15603execution 15604to "Serialized" to mimic Windows behavior, another to disable _OSI 15605support 15606if it causes problems on a given machine. 15607 15608Code and Data Size: Current and previous core subsystem library sizes are 15609shown below. These are the code and data sizes for the acpica.lib 15610produced 15611by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15612any ACPI driver or OSPM code. The debug version of the code includes the 15613debug output trace mechanism and has a much larger code and data size. 15614Note 15615that these values will vary depending on the efficiency of the compiler 15616and 15617the compiler options used during generation. 15618 15619 Previous Release: 15620 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15621 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15622 Current Release: 15623 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15624 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15625 156262) iASL Compiler/Disassembler: 15627 15628Fixed an array size problem for FreeBSD that would cause the compiler to 15629fault. 15630 15631---------------------------------------- 1563220 February 2004. Summary of changes for version 20040220: 15633 15634 156351) ACPI CA Core Subsystem: 15636 15637Implemented execution of _SxD methods for Device objects in the 15638GetObjectInfo interface. 15639 15640Fixed calls to _SST method to pass the correct arguments. 15641 15642Added a call to _SST on wake to restore to "working" state. 15643 15644Check for End-Of-Buffer failure case in the WalkResources interface. 15645 15646Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15647structures to the beginning of the file. 15648 15649After wake, clear GPE status register(s) before enabling GPEs. 15650 15651After wake, clear/enable power button. (Perhaps we should clear/enable 15652all 15653fixed events upon wake.) 15654 15655Fixed a couple of possible memory leaks in the Namespace manager. 15656 15657Integrated latest acnetbsd.h file. 15658 15659---------------------------------------- 1566011 February 2004. Summary of changes for version 20040211: 15661 15662 156631) ACPI CA Core Subsystem: 15664 15665Completed investigation and implementation of the call-by-reference 15666mechanism for control method arguments. 15667 15668Fixed a problem where a store of an object into an indexed package could 15669fail if the store occurs within a different method than the method that 15670created the package. 15671 15672Fixed a problem where the ToDecimal operator could return incorrect 15673results. 15674 15675Fixed a problem where the CopyObject operator could fail on some of the 15676more 15677obscure objects (e.g., Reference objects.) 15678 15679Improved the output of the Debug object to display buffer, package, and 15680index objects. 15681 15682Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15683return 15684the expected result. 15685 15686Added permanent ACPI_REPORT_ERROR macros for all instances of the 15687ACPI_AML_INTERNAL exception. 15688 15689Integrated latest version of acfreebsd.h 15690 15691---------------------------------------- 1569216 January 2004. Summary of changes for version 20040116: 15693 15694The purpose of this release is primarily to update the copyright years in 15695each module, thus causing a huge number of diffs. There are a few small 15696functional changes, however. 15697 156981) ACPI CA Core Subsystem: 15699 15700Improved error messages when there is a problem finding one or more of 15701the 15702required base ACPI tables 15703 15704Reintroduced the definition of APIC_HEADER in actbl.h 15705 15706Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15707 15708Removed extraneous reference to NewObj in dsmthdat.c 15709 157102) iASL compiler 15711 15712Fixed a problem introduced in December that disabled the correct 15713disassembly 15714of Resource Templates 15715 15716 15717---------------------------------------- 1571803 December 2003. Summary of changes for version 20031203: 15719 157201) ACPI CA Core Subsystem: 15721 15722Changed the initialization of Operation Regions during subsystem 15723init to perform two entire walks of the ACPI namespace; The first 15724to initialize the regions themselves, the second to execute the 15725_REG methods. This fixed some interdependencies across _REG 15726methods found on some machines. 15727 15728Fixed a problem where a Store(Local0, Local1) could simply update 15729the object reference count, and not create a new copy of the 15730object if the Local1 is uninitialized. 15731 15732Implemented support for the _SST reserved method during sleep 15733transitions. 15734 15735Implemented support to clear the SLP_TYP and SLP_EN bits when 15736waking up, this is apparently required by some machines. 15737 15738When sleeping, clear the wake status only if SleepState is not S5. 15739 15740Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15741pointer arithmetic advanced a string pointer too far. 15742 15743Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15744could be returned if the requested table has not been loaded. 15745 15746Within the support for IRQ resources, restructured the handling of 15747the active and edge/level bits. 15748 15749Fixed a few problems in AcpiPsxExecute() where memory could be 15750leaked under certain error conditions. 15751 15752Improved error messages for the cases where the ACPI mode could 15753not be entered. 15754 15755Code and Data Size: Current and previous core subsystem library 15756sizes are shown below. These are the code and data sizes for the 15757acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15758these values do not include any ACPI driver or OSPM code. The 15759debug version of the code includes the debug output trace 15760mechanism and has a much larger code and data size. Note that 15761these values will vary depending on the efficiency of the compiler 15762and the compiler options used during generation. 15763 15764 Previous Release (20031029): 15765 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15766 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15767 Current Release: 15768 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15769 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15770 157712) iASL Compiler/Disassembler: 15772 15773Implemented a fix for the iASL disassembler where a bad index was 15774generated. This was most noticeable on 64-bit platforms 15775 15776 15777---------------------------------------- 1577829 October 2003. Summary of changes for version 20031029: 15779 157801) ACPI CA Core Subsystem: 15781 15782 15783Fixed a problem where a level-triggered GPE with an associated 15784_Lxx control method was incorrectly cleared twice. 15785 15786Fixed a problem with the Field support code where an access can 15787occur beyond the end-of-region if the field is non-aligned but 15788extends to the very end of the parent region (resulted in an 15789AE_AML_REGION_LIMIT exception.) 15790 15791Fixed a problem with ACPI Fixed Events where an RT Clock handler 15792would not get invoked on an RTC event. The RTC event bitmasks for 15793the PM1 registers were not being initialized properly. 15794 15795Implemented support for executing _STA and _INI methods for 15796Processor objects. Although this is currently not part of the 15797ACPI specification, there is existing ASL code that depends on the 15798init-time execution of these methods. 15799 15800Implemented and deployed a GetDescriptorName function to decode 15801the various types of internal descriptors. Guards against null 15802descriptors during debug output also. 15803 15804Implemented and deployed a GetNodeName function to extract the 4- 15805character namespace node name. This function simplifies the debug 15806and error output, as well as guarding against null pointers during 15807output. 15808 15809Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15810simplify the debug and error output of 64-bit integers. This 15811macro replaces the HIDWORD and LODWORD macros for dumping these 15812integers. 15813 15814Updated the implementation of the Stall() operator to only call 15815AcpiOsStall(), and also return an error if the operand is larger 15816than 255. This preserves the required behavior of not 15817relinquishing the processor, as would happen if AcpiOsSleep() was 15818called for "long stalls". 15819 15820Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15821initialized are now treated as NOOPs. 15822 15823Cleaned up a handful of warnings during 64-bit generation. 15824 15825Fixed a reported error where and incorrect GPE number was passed 15826to the GPE dispatch handler. This value is only used for error 15827output, however. Used this opportunity to clean up and streamline 15828the GPE dispatch code. 15829 15830Code and Data Size: Current and previous core subsystem library 15831sizes are shown below. These are the code and data sizes for the 15832acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15833these values do not include any ACPI driver or OSPM code. The 15834 15835debug version of the code includes the debug output trace 15836mechanism and has a much larger code and data size. Note that 15837these values will vary depending on the efficiency of the compiler 15838and the compiler options used during generation. 15839 15840 Previous Release (20031002): 15841 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15842 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15843 Current Release: 15844 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15845 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15846 15847 158482) iASL Compiler/Disassembler: 15849 15850Updated the iASL compiler to return an error if the operand to the 15851Stall() operator is larger than 255. 15852 15853 15854---------------------------------------- 1585502 October 2003. Summary of changes for version 20031002: 15856 15857 158581) ACPI CA Core Subsystem: 15859 15860Fixed a problem with Index Fields where the index was not 15861incremented for fields that require multiple writes to the 15862index/data registers (Fields that are wider than the data 15863register.) 15864 15865Fixed a problem with all Field objects where a write could go 15866beyond the end-of-field if the field was larger than the access 15867granularity and therefore required multiple writes to complete the 15868request. An extra write beyond the end of the field could happen 15869inadvertently. 15870 15871Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15872would incorrectly be returned if the width of the Data Register 15873was larger than the specified field access width. 15874 15875Completed fixes for LoadTable() and Unload() and verified their 15876operation. Implemented full support for the "DdbHandle" object 15877throughout the ACPI CA subsystem. 15878 15879Implemented full support for the MADT and ECDT tables in the ACPI 15880CA header files. Even though these tables are not directly 15881consumed by ACPI CA, the header definitions are useful for ACPI 15882device drivers. 15883 15884Integrated resource descriptor fixes posted to the Linux ACPI 15885list. This included checks for minimum descriptor length, and 15886support for trailing NULL strings within descriptors that have 15887optional string elements. 15888 15889Code and Data Size: Current and previous core subsystem library 15890sizes are shown below. These are the code and data sizes for the 15891acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15892these values do not include any ACPI driver or OSPM code. The 15893debug version of the code includes the debug output trace 15894mechanism and has a much larger code and data size. Note that 15895these values will vary depending on the efficiency of the compiler 15896and the compiler options used during generation. 15897 15898 Previous Release (20030918): 15899 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15900 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15901 Current Release: 15902 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15903 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15904 15905 159062) iASL Compiler: 15907 15908Implemented detection of non-ASCII characters within the input 15909source ASL file. This catches attempts to compile binary (AML) 15910files early in the compile, with an informative error message. 15911 15912Fixed a problem where the disassembler would fault if the output 15913filename could not be generated or if the output file could not be 15914opened. 15915 15916---------------------------------------- 1591718 September 2003. Summary of changes for version 20030918: 15918 15919 159201) ACPI CA Core Subsystem: 15921 15922Found and fixed a longstanding problem with the late execution of 15923the various deferred AML opcodes (such as Operation Regions, 15924Buffer Fields, Buffers, and Packages). If the name string 15925specified for the name of the new object placed the object in a 15926scope other than the current scope, the initialization/execution 15927of the opcode failed. The solution to this problem was to 15928implement a mechanism where the late execution of such opcodes 15929does not attempt to lookup/create the name a second time in an 15930incorrect scope. This fixes the "region size computed 15931incorrectly" problem. 15932 15933Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 15934Global Lock AE_BAD_PARAMETER error. 15935 15936Fixed several 64-bit issues with prototypes, casting and data 15937types. 15938 15939Removed duplicate prototype from acdisasm.h 15940 15941Fixed an issue involving EC Operation Region Detach (Shaohua Li) 15942 15943Code and Data Size: Current and previous core subsystem library 15944sizes are shown below. These are the code and data sizes for the 15945acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15946these values do not include any ACPI driver or OSPM code. The 15947debug version of the code includes the debug output trace 15948mechanism and has a much larger code and data size. Note that 15949these values will vary depending on the efficiency of the compiler 15950and the compiler options used during generation. 15951 15952 Previous Release: 15953 15954 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15955 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15956 Current Release: 15957 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 15958 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 15959 15960 159612) Linux: 15962 15963Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 15964correct sleep time in seconds. 15965 15966---------------------------------------- 1596714 July 2003. Summary of changes for version 20030619: 15968 159691) ACPI CA Core Subsystem: 15970 15971Parse SSDTs in order discovered, as opposed to reverse order 15972(Hrvoje Habjanic) 15973 15974Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 15975Klausner, 15976 Nate Lawson) 15977 15978 159792) Linux: 15980 15981Dynamically allocate SDT list (suggested by Andi Kleen) 15982 15983proc function return value cleanups (Andi Kleen) 15984 15985Correctly handle NMI watchdog during long stalls (Andrew Morton) 15986 15987Make it so acpismp=force works (reported by Andrew Morton) 15988 15989 15990---------------------------------------- 1599119 June 2003. Summary of changes for version 20030619: 15992 159931) ACPI CA Core Subsystem: 15994 15995Fix To/FromBCD, eliminating the need for an arch-specific #define. 15996 15997Do not acquire a semaphore in the S5 shutdown path. 15998 15999Fix ex_digits_needed for 0. (Takayoshi Kochi) 16000 16001Fix sleep/stall code reversal. (Andi Kleen) 16002 16003Revert a change having to do with control method calling 16004semantics. 16005 160062) Linux: 16007 16008acpiphp update (Takayoshi Kochi) 16009 16010Export acpi_disabled for sonypi (Stelian Pop) 16011 16012Mention acpismp=force in config help 16013 16014Re-add acpitable.c and acpismp=force. This improves backwards 16015 16016compatibility and also cleans up the code to a significant degree. 16017 16018Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 16019 16020---------------------------------------- 1602122 May 2003. Summary of changes for version 20030522: 16022 160231) ACPI CA Core Subsystem: 16024 16025Found and fixed a reported problem where an AE_NOT_FOUND error 16026occurred occasionally during _BST evaluation. This turned out to 16027be an Owner ID allocation issue where a called method did not get 16028a new ID assigned to it. Eventually, (after 64k calls), the Owner 16029ID UINT16 would wraparound so that the ID would be the same as the 16030caller's and the called method would delete the caller's 16031namespace. 16032 16033Implemented extended error reporting for control methods that are 16034aborted due to a run-time exception. Output includes the exact 16035AML instruction that caused the method abort, a dump of the method 16036locals and arguments at the time of the abort, and a trace of all 16037nested control method calls. 16038 16039Modified the interpreter to allow the creation of buffers of zero 16040length from the AML code. Implemented new code to ensure that no 16041attempt is made to actually allocate a memory buffer (of length 16042zero) - instead, a simple buffer object with a NULL buffer pointer 16043and length zero is created. A warning is no longer issued when 16044the AML attempts to create a zero-length buffer. 16045 16046Implemented a workaround for the "leading asterisk issue" in 16047_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 16048asterisk is automatically removed if present in any HID, UID, or 16049CID strings. The iASL compiler will still flag this asterisk as 16050an error, however. 16051 16052Implemented full support for _CID methods that return a package of 16053multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 16054now additionally returns a device _CID list if present. This 16055required a change to the external interface in order to pass an 16056ACPI_BUFFER object as a parameter since the _CID list is of 16057variable length. 16058 16059Fixed a problem with the new AE_SAME_HANDLER exception where 16060handler initialization code did not know about this exception. 16061 16062Code and Data Size: Current and previous core subsystem library 16063sizes are shown below. These are the code and data sizes for the 16064acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16065these values do not include any ACPI driver or OSPM code. The 16066debug version of the code includes the debug output trace 16067mechanism and has a much larger code and data size. Note that 16068these values will vary depending on the efficiency of the compiler 16069and the compiler options used during generation. 16070 16071 Previous Release (20030509): 16072 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16073 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16074 Current Release: 16075 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16076 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16077 16078 160792) Linux: 16080 16081Fixed a bug in which we would reinitialize the ACPI interrupt 16082after it was already working, thus disabling all ACPI and the IRQs 16083for any other device sharing the interrupt. (Thanks to Stian 16084Jordet) 16085 16086Toshiba driver update (John Belmonte) 16087 16088Return only 0 or 1 for our interrupt handler status (Andrew 16089Morton) 16090 16091 160923) iASL Compiler: 16093 16094Fixed a reported problem where multiple (nested) ElseIf() 16095statements were not handled correctly by the compiler, resulting 16096in incorrect warnings and incorrect AML code. This was a problem 16097in both the ASL parser and the code generator. 16098 16099 161004) Documentation: 16101 16102Added changes to existing interfaces, new exception codes, and new 16103text concerning reference count object management versus garbage 16104collection. 16105 16106---------------------------------------- 1610709 May 2003. Summary of changes for version 20030509. 16108 16109 161101) ACPI CA Core Subsystem: 16111 16112Changed the subsystem initialization sequence to hold off 16113installation of address space handlers until the hardware has been 16114initialized and the system has entered ACPI mode. This is because 16115the installation of space handlers can cause _REG methods to be 16116run. Previously, the _REG methods could potentially be run before 16117ACPI mode was enabled. 16118 16119Fixed some memory leak issues related to address space handler and 16120notify handler installation. There were some problems with the 16121reference count mechanism caused by the fact that the handler 16122objects are shared across several namespace objects. 16123 16124Fixed a reported problem where reference counts within the 16125namespace were not properly updated when named objects created by 16126method execution were deleted. 16127 16128Fixed a reported problem where multiple SSDTs caused a deletion 16129issue during subsystem termination. Restructured the table data 16130structures to simplify the linked lists and the related code. 16131 16132Fixed a problem where the table ID associated with secondary 16133tables (SSDTs) was not being propagated into the namespace objects 16134created by those tables. This would only present a problem for 16135tables that are unloaded at run-time, however. 16136 16137Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 16138type as the length parameter (instead of UINT32). 16139 16140Solved a long-standing problem where an ALREADY_EXISTS error 16141appears on various systems. This problem could happen when there 16142are multiple PCI_Config operation regions under a single PCI root 16143bus. This doesn't happen very frequently, but there are some 16144systems that do this in the ASL. 16145 16146Fixed a reported problem where the internal DeleteNode function 16147was incorrectly handling the case where a namespace node was the 16148first in the parent's child list, and had additional peers (not 16149the only child, but first in the list of children.) 16150 16151Code and Data Size: Current core subsystem library sizes are shown 16152below. These are the code and data sizes for the acpica.lib 16153produced by the Microsoft Visual C++ 6.0 compiler, and these 16154values do not include any ACPI driver or OSPM code. The debug 16155version of the code includes the debug output trace mechanism and 16156has a much larger code and data size. Note that these values will 16157vary depending on the efficiency of the compiler and the compiler 16158options used during generation. 16159 16160 Previous Release 16161 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16162 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16163 Current Release: 16164 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16165 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16166 16167 161682) Linux: 16169 16170Allow ":" in OS override string (Ducrot Bruno) 16171 16172Kobject fix (Greg KH) 16173 16174 161753 iASL Compiler/Disassembler: 16176 16177Fixed a problem in the generation of the C source code files (AML 16178is emitted in C source statements for BIOS inclusion) where the 16179Ascii dump that appears within a C comment at the end of each line 16180could cause a compile time error if the AML sequence happens to 16181have an open comment or close comment sequence embedded. 16182 16183 16184---------------------------------------- 1618524 April 2003. Summary of changes for version 20030424. 16186 16187 161881) ACPI CA Core Subsystem: 16189 16190Support for big-endian systems has been implemented. Most of the 16191support has been invisibly added behind big-endian versions of the 16192ACPI_MOVE_* macros. 16193 16194Fixed a problem in AcpiHwDisableGpeBlock() and 16195AcpiHwClearGpeBlock() where an incorrect offset was passed to the 16196low level hardware write routine. The offset parameter was 16197actually eliminated from the low level read/write routines because 16198they had become obsolete. 16199 16200Fixed a problem where a handler object was deleted twice during 16201the removal of a fixed event handler. 16202 16203 162042) Linux: 16205 16206A fix for SMP systems with link devices was contributed by 16207 16208Compaq's Dan Zink. 16209 16210(2.5) Return whether we handled the interrupt in our IRQ handler. 16211(Linux ISRs no longer return void, so we can propagate the handler 16212return value from the ACPI CA core back to the OS.) 16213 16214 16215 162163) Documentation: 16217 16218The ACPI CA Programmer Reference has been updated to reflect new 16219interfaces and changes to existing interfaces. 16220 16221---------------------------------------- 1622228 March 2003. Summary of changes for version 20030328. 16223 162241) ACPI CA Core Subsystem: 16225 16226The GPE Block Device support has been completed. New interfaces 16227are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 16228interfaces (enable, disable, clear, getstatus) have been split 16229into separate interfaces for Fixed Events and General Purpose 16230Events (GPEs) in order to support GPE Block Devices properly. 16231 16232Fixed a problem where the error message "Failed to acquire 16233semaphore" would appear during operations on the embedded 16234controller (EC). 16235 16236Code and Data Size: Current core subsystem library sizes are shown 16237below. These are the code and data sizes for the acpica.lib 16238produced by the Microsoft Visual C++ 6.0 compiler, and these 16239values do not include any ACPI driver or OSPM code. The debug 16240version of the code includes the debug output trace mechanism and 16241has a much larger code and data size. Note that these values will 16242vary depending on the efficiency of the compiler and the compiler 16243options used during generation. 16244 16245 Previous Release 16246 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16247 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16248 Current Release: 16249 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16250 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16251 16252 16253---------------------------------------- 1625428 February 2003. Summary of changes for version 20030228. 16255 16256 162571) ACPI CA Core Subsystem: 16258 16259The GPE handling and dispatch code has been completely overhauled 16260in preparation for support of GPE Block Devices (ID ACPI0006). 16261This affects internal data structures and code only; there should 16262be no differences visible externally. One new file has been 16263added, evgpeblk.c 16264 16265The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 16266fields that are used to determine the GPE block lengths. The 16267REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 16268structures are ignored. This is per the ACPI specification but it 16269isn't very clear. The full 256 Block 0/1 GPEs are now supported 16270(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 16271 16272In the SCI interrupt handler, removed the read of the PM1_CONTROL 16273register to look at the SCI_EN bit. On some machines, this read 16274causes an SMI event and greatly slows down SCI events. (This may 16275in fact be the cause of slow battery status response on some 16276systems.) 16277 16278Fixed a problem where a store of a NULL string to a package object 16279could cause the premature deletion of the object. This was seen 16280during execution of the battery _BIF method on some systems, 16281resulting in no battery data being returned. 16282 16283Added AcpiWalkResources interface to simplify parsing of resource 16284lists. 16285 16286Code and Data Size: Current core subsystem library sizes are shown 16287below. These are the code and data sizes for the acpica.lib 16288produced by the Microsoft Visual C++ 6.0 compiler, and these 16289values do not include any ACPI driver or OSPM code. The debug 16290version of the code includes the debug output trace mechanism and 16291has a much larger code and data size. Note that these values will 16292vary depending on the efficiency of the compiler and the compiler 16293options used during generation. 16294 16295 Previous Release 16296 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16297 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16298 Current Release: 16299 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16300 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16301 16302 163032) Linux 16304 16305S3 fixes (Ole Rohne) 16306 16307Update ACPI PHP driver with to use new acpi_walk_resource API 16308(Bjorn Helgaas) 16309 16310Add S4BIOS support (Pavel Machek) 16311 16312Map in entire table before performing checksum (John Stultz) 16313 16314Expand the mem= cmdline to allow the specification of reserved and 16315ACPI DATA blocks (Pavel Machek) 16316 16317Never use ACPI on VISWS 16318 16319Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 16320 16321Revert a change that allowed P_BLK lengths to be 4 or 5. This is 16322causing us to think that some systems support C2 when they really 16323don't. 16324 16325Do not count processor objects for non-present CPUs (Thanks to 16326Dominik Brodowski) 16327 16328 163293) iASL Compiler: 16330 16331Fixed a problem where ASL include files could not be found and 16332opened. 16333 16334Added support for the _PDC reserved name. 16335 16336 16337---------------------------------------- 1633822 January 2003. Summary of changes for version 20030122. 16339 16340 163411) ACPI CA Core Subsystem: 16342 16343Added a check for constructs of the form: Store (Local0, Local0) 16344where Local0 is not initialized. Apparently, some BIOS 16345programmers believe that this is a NOOP. Since this store doesn't 16346do anything anyway, the new prototype behavior will ignore this 16347error. This is a case where we can relax the strict checking in 16348the interpreter in the name of compatibility. 16349 16350 163512) Linux 16352 16353The AcpiSrc Source Conversion Utility has been released with the 16354Linux package for the first time. This is the utility that is 16355used to convert the ACPI CA base source code to the Linux version. 16356 16357(Both) Handle P_BLK lengths shorter than 6 more gracefully 16358 16359(Both) Move more headers to include/acpi, and delete an unused 16360header. 16361 16362(Both) Move drivers/acpi/include directory to include/acpi 16363 16364(Both) Boot functions don't use cmdline, so don't pass it around 16365 16366(Both) Remove include of unused header (Adrian Bunk) 16367 16368(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 16369the 16370former now also includes the latter, acpiphp.h only needs the one, 16371now. 16372 16373(2.5) Make it possible to select method of bios restoring after S3 16374resume. [=> no more ugly ifdefs] (Pavel Machek) 16375 16376(2.5) Make proc write interfaces work (Pavel Machek) 16377 16378(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 16379 16380(2.5) Break out ACPI Perf code into its own module, under cpufreq 16381(Dominik Brodowski) 16382 16383(2.4) S4BIOS support (Ducrot Bruno) 16384 16385(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 16386Visinoni) 16387 16388 163893) iASL Compiler: 16390 16391Added support to disassemble SSDT and PSDTs. 16392 16393Implemented support to obtain SSDTs from the Windows registry if 16394available. 16395 16396 16397---------------------------------------- 1639809 January 2003. Summary of changes for version 20030109. 16399 164001) ACPI CA Core Subsystem: 16401 16402Changed the behavior of the internal Buffer-to-String conversion 16403function. The current ACPI specification states that the contents 16404of the buffer are "converted to a string of two-character 16405hexadecimal numbers, each separated by a space". Unfortunately, 16406this definition is not backwards compatible with existing ACPI 1.0 16407implementations (although the behavior was not defined in the ACPI 164081.0 specification). The new behavior simply copies data from the 16409buffer to the string until a null character is found or the end of 16410the buffer is reached. The new String object is always null 16411terminated. This problem was seen during the generation of _BIF 16412battery data where incorrect strings were returned for battery 16413type, etc. This will also require an errata to the ACPI 16414specification. 16415 16416Renamed all instances of NATIVE_UINT and NATIVE_INT to 16417ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16418 16419Copyright in all module headers (both Linux and non-Linux) has be 16420updated to 2003. 16421 16422Code and Data Size: Current core subsystem library sizes are shown 16423below. These are the code and data sizes for the acpica.lib 16424produced by the Microsoft Visual C++ 6.0 compiler, and these 16425values do not include any ACPI driver or OSPM code. The debug 16426version of the code includes the debug output trace mechanism and 16427has a much larger code and data size. Note that these values will 16428vary depending on the efficiency of the compiler and the compiler 16429options used during generation. 16430 16431 Previous Release 16432 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16433 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16434 Current Release: 16435 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16436 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16437 16438 164392) Linux 16440 16441Fixed an oops on module insertion/removal (Matthew Tippett) 16442 16443(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16444 16445(2.5) Replace pr_debug (Randy Dunlap) 16446 16447(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16448 16449(Both) Eliminate spawning of thread from timer callback, in favor 16450of schedule_work() 16451 16452(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16453 16454(Both) Added define for Fixed Function HW region (Matthew Wilcox) 16455 16456(Both) Add missing statics to button.c (Pavel Machek) 16457 16458Several changes have been made to the source code translation 16459utility that generates the Linux Code in order to make the code 16460more "Linux-like": 16461 16462All typedefs on structs and unions have been removed in keeping 16463with the Linux coding style. 16464 16465Removed the non-Linux SourceSafe module revision number from each 16466module header. 16467 16468Completed major overhaul of symbols to be lowercase for linux. 16469Doubled the number of symbols that are lowercase. 16470 16471Fixed a problem where identifiers within procedure headers and 16472within quotes were not fully lower cased (they were left with a 16473starting capital.) 16474 16475Some C macros whose only purpose is to allow the generation of 16- 16476bit code are now completely removed in the Linux code, increasing 16477readability and maintainability. 16478 16479---------------------------------------- 16480 1648112 December 2002. Summary of changes for version 20021212. 16482 16483 164841) ACPI CA Core Subsystem: 16485 16486Fixed a problem where the creation of a zero-length AML Buffer 16487would cause a fault. 16488 16489Fixed a problem where a Buffer object that pointed to a static AML 16490buffer (in an ACPI table) could inadvertently be deleted, causing 16491memory corruption. 16492 16493Fixed a problem where a user buffer (passed in to the external 16494ACPI CA interfaces) could be overwritten if the buffer was too 16495small to complete the operation, causing memory corruption. 16496 16497Fixed a problem in the Buffer-to-String conversion code where a 16498string of length one was always returned, regardless of the size 16499of the input Buffer object. 16500 16501Removed the NATIVE_CHAR data type across the entire source due to 16502lack of need and lack of consistent use. 16503 16504Code and Data Size: Current core subsystem library sizes are shown 16505below. These are the code and data sizes for the acpica.lib 16506produced by the Microsoft Visual C++ 6.0 compiler, and these 16507values do not include any ACPI driver or OSPM code. The debug 16508version of the code includes the debug output trace mechanism and 16509has a much larger code and data size. Note that these values will 16510vary depending on the efficiency of the compiler and the compiler 16511options used during generation. 16512 16513 Previous Release 16514 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16515 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16516 Current Release: 16517 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16518 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16519 16520 16521---------------------------------------- 1652205 December 2002. Summary of changes for version 20021205. 16523 165241) ACPI CA Core Subsystem: 16525 16526Fixed a problem where a store to a String or Buffer object could 16527cause corruption of the DSDT if the object type being stored was 16528the same as the target object type and the length of the object 16529being stored was equal to or smaller than the original (existing) 16530target object. This was seen to cause corruption of battery _BIF 16531buffers if the _BIF method modified the buffer on the fly. 16532 16533Fixed a problem where an internal error was generated if a control 16534method invocation was used in an OperationRegion, Buffer, or 16535Package declaration. This was caused by the deferred parsing of 16536the control method and thus the deferred creation of the internal 16537method object. The solution to this problem was to create the 16538internal method object at the moment the method is encountered in 16539the first pass - so that subsequent references to the method will 16540able to obtain the required parameter count and thus properly 16541parse the method invocation. This problem presented itself as an 16542AE_AML_INTERNAL during the pass 1 parse phase during table load. 16543 16544Fixed a problem where the internal String object copy routine did 16545not always allocate sufficient memory for the target String object 16546and caused memory corruption. This problem was seen to cause 16547"Allocation already present in list!" errors as memory allocation 16548became corrupted. 16549 16550Implemented a new function for the evaluation of namespace objects 16551that allows the specification of the allowable return object 16552types. This simplifies a lot of code that checks for a return 16553object of one or more specific objects returned from the 16554evaluation (such as _STA, etc.) This may become and external 16555function if it would be useful to ACPI-related drivers. 16556 16557Completed another round of prefixing #defines with "ACPI_" for 16558clarity. 16559 16560Completed additional code restructuring to allow more modular 16561linking for iASL compiler and AcpiExec. Several files were split 16562creating new files. New files: nsparse.c dsinit.c evgpe.c 16563 16564Implemented an abort mechanism to terminate an executing control 16565method via the AML debugger. This feature is useful for debugging 16566control methods that depend (wait) for specific hardware 16567responses. 16568 16569Code and Data Size: Current core subsystem library sizes are shown 16570below. These are the code and data sizes for the acpica.lib 16571produced by the Microsoft Visual C++ 6.0 compiler, and these 16572values do not include any ACPI driver or OSPM code. The debug 16573version of the code includes the debug output trace mechanism and 16574has a much larger code and data size. Note that these values will 16575vary depending on the efficiency of the compiler and the compiler 16576options used during generation. 16577 16578 Previous Release 16579 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16580 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16581 Current Release: 16582 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16583 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16584 16585 165862) iASL Compiler/Disassembler 16587 16588Fixed a compiler code generation problem for "Interrupt" Resource 16589Descriptors. If specified in the ASL, the optional "Resource 16590Source Index" and "Resource Source" fields were not inserted into 16591the correct location within the AML resource descriptor, creating 16592an invalid descriptor. 16593 16594Fixed a disassembler problem for "Interrupt" resource descriptors. 16595The optional "Resource Source Index" and "Resource Source" fields 16596were ignored. 16597 16598 16599---------------------------------------- 1660022 November 2002. Summary of changes for version 20021122. 16601 16602 166031) ACPI CA Core Subsystem: 16604 16605Fixed a reported problem where an object stored to a Method Local 16606or Arg was not copied to a new object during the store - the 16607object pointer was simply copied to the Local/Arg. This caused 16608all subsequent operations on the Local/Arg to also affect the 16609original source of the store operation. 16610 16611Fixed a problem where a store operation to a Method Local or Arg 16612was not completed properly if the Local/Arg contained a reference 16613(from RefOf) to a named field. The general-purpose store-to- 16614namespace-node code is now used so that this case is handled 16615automatically. 16616 16617Fixed a problem where the internal object copy routine would cause 16618a protection fault if the object being copied was a Package and 16619contained either 1) a NULL package element or 2) a nested sub- 16620package. 16621 16622Fixed a problem with the GPE initialization that resulted from an 16623ambiguity in the ACPI specification. One section of the 16624specification states that both the address and length of the GPE 16625block must be zero if the block is not supported. Another section 16626implies that only the address need be zero if the block is not 16627supported. The code has been changed so that both the address and 16628the length must be non-zero to indicate a valid GPE block (i.e., 16629if either the address or the length is zero, the GPE block is 16630invalid.) 16631 16632Code and Data Size: Current core subsystem library sizes are shown 16633below. These are the code and data sizes for the acpica.lib 16634produced by the Microsoft Visual C++ 6.0 compiler, and these 16635values do not include any ACPI driver or OSPM code. The debug 16636version of the code includes the debug output trace mechanism and 16637has a much larger code and data size. Note that these values will 16638vary depending on the efficiency of the compiler and the compiler 16639options used during generation. 16640 16641 Previous Release 16642 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16643 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16644 Current Release: 16645 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16646 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16647 16648 166492) Linux 16650 16651Cleaned up EC driver. Exported an external EC read/write 16652interface. By going through this, other drivers (most notably 16653sonypi) will be able to serialize access to the EC. 16654 16655 166563) iASL Compiler/Disassembler 16657 16658Implemented support to optionally generate include files for both 16659ASM and C (the -i switch). This simplifies BIOS development by 16660automatically creating include files that contain external 16661declarations for the symbols that are created within the 16662 16663(optionally generated) ASM and C AML source files. 16664 16665 16666---------------------------------------- 1666715 November 2002. Summary of changes for version 20021115. 16668 166691) ACPI CA Core Subsystem: 16670 16671Fixed a memory leak problem where an error during resolution of 16672 16673method arguments during a method invocation from another method 16674failed to cleanup properly by deleting all successfully resolved 16675argument objects. 16676 16677Fixed a problem where the target of the Index() operator was not 16678correctly constructed if the source object was a package. This 16679problem has not been detected because the use of a target operand 16680with Index() is very rare. 16681 16682Fixed a problem with the Index() operator where an attempt was 16683made to delete the operand objects twice. 16684 16685Fixed a problem where an attempt was made to delete an operand 16686twice during execution of the CondRefOf() operator if the target 16687did not exist. 16688 16689Implemented the first of perhaps several internal create object 16690functions that create and initialize a specific object type. This 16691consolidates duplicated code wherever the object is created, thus 16692shrinking the size of the subsystem. 16693 16694Implemented improved debug/error messages for errors that occur 16695during nested method invocations. All executing method pathnames 16696are displayed (with the error) as the call stack is unwound - thus 16697simplifying debug. 16698 16699Fixed a problem introduced in the 10/02 release that caused 16700premature deletion of a buffer object if a buffer was used as an 16701ASL operand where an integer operand is required (Thus causing an 16702implicit object conversion from Buffer to Integer.) The change in 16703the 10/02 release was attempting to fix a memory leak (albeit 16704incorrectly.) 16705 16706Code and Data Size: Current core subsystem library sizes are shown 16707below. These are the code and data sizes for the acpica.lib 16708produced by the Microsoft Visual C++ 6.0 compiler, and these 16709values do not include any ACPI driver or OSPM code. The debug 16710version of the code includes the debug output trace mechanism and 16711has a much larger code and data size. Note that these values will 16712vary depending on the efficiency of the compiler and the compiler 16713options used during generation. 16714 16715 Previous Release 16716 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16717 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16718 Current Release: 16719 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16720 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16721 16722 167232) Linux 16724 16725Changed the implementation of the ACPI semaphores to use down() 16726instead of down_interruptable(). It is important that the 16727execution of ACPI control methods not be interrupted by signals. 16728Methods must run to completion, or the system may be left in an 16729unknown/unstable state. 16730 16731Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16732(Shawn Starr) 16733 16734 167353) iASL Compiler/Disassembler 16736 16737 16738Changed the default location of output files. All output files 16739are now placed in the current directory by default instead of in 16740the directory of the source file. This change may affect some 16741existing makefiles, but it brings the behavior of the compiler in 16742line with other similar tools. The location of the output files 16743can be overridden with the -p command line switch. 16744 16745 16746---------------------------------------- 1674711 November 2002. Summary of changes for version 20021111. 16748 16749 167500) ACPI Specification 2.0B is released and is now available at: 16751http://www.acpi.info/index.html 16752 16753 167541) ACPI CA Core Subsystem: 16755 16756Implemented support for the ACPI 2.0 SMBus Operation Regions. 16757This includes the early detection and handoff of the request to 16758the SMBus region handler (avoiding all of the complex field 16759support code), and support for the bidirectional return packet 16760from an SMBus write operation. This paves the way for the 16761development of SMBus drivers in each host operating system. 16762 16763Fixed a problem where the semaphore WAIT_FOREVER constant was 16764defined as 32 bits, but must be 16 bits according to the ACPI 16765specification. This had the side effect of causing ASL 16766Mutex/Event timeouts even though the ASL code requested a wait 16767forever. Changed all internal references to the ACPI timeout 16768parameter to 16 bits to prevent future problems. Changed the name 16769of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16770 16771Code and Data Size: Current core subsystem library sizes are shown 16772below. These are the code and data sizes for the acpica.lib 16773produced by the Microsoft Visual C++ 6.0 compiler, and these 16774values do not include any ACPI driver or OSPM code. The debug 16775version of the code includes the debug output trace mechanism and 16776has a much larger code and data size. Note that these values will 16777vary depending on the efficiency of the compiler and the compiler 16778options used during generation. 16779 16780 Previous Release 16781 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16782 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16783 Current Release: 16784 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16785 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16786 16787 167882) Linux 16789 16790Module loading/unloading fixes (John Cagle) 16791 16792 167933) iASL Compiler/Disassembler 16794 16795Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16796 16797Implemented support for the disassembly of all SMBus protocol 16798keywords (SMBQuick, SMBWord, etc.) 16799 16800---------------------------------------- 1680101 November 2002. Summary of changes for version 20021101. 16802 16803 168041) ACPI CA Core Subsystem: 16805 16806Fixed a problem where platforms that have a GPE1 block but no GPE0 16807block were not handled correctly. This resulted in a "GPE 16808overlap" error message. GPE0 is no longer required. 16809 16810Removed code added in the previous release that inserted nodes 16811into the namespace in alphabetical order. This caused some side- 16812effects on various machines. The root cause of the problem is 16813still under investigation since in theory, the internal ordering 16814of the namespace nodes should not matter. 16815 16816 16817Enhanced error reporting for the case where a named object is not 16818found during control method execution. The full ACPI namepath 16819(name reference) of the object that was not found is displayed in 16820this case. 16821 16822Note: as a result of the overhaul of the namespace object types in 16823the previous release, the namespace nodes for the predefined 16824scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16825instead of ACPI_TYPE_ANY. This simplifies the namespace 16826management code but may affect code that walks the namespace tree 16827looking for specific object types. 16828 16829Code and Data Size: Current core subsystem library sizes are shown 16830below. These are the code and data sizes for the acpica.lib 16831produced by the Microsoft Visual C++ 6.0 compiler, and these 16832values do not include any ACPI driver or OSPM code. The debug 16833version of the code includes the debug output trace mechanism and 16834has a much larger code and data size. Note that these values will 16835vary depending on the efficiency of the compiler and the compiler 16836options used during generation. 16837 16838 Previous Release 16839 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16840 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16841 Current Release: 16842 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16843 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16844 16845 168462) Linux 16847 16848Fixed a problem introduced in the previous release where the 16849Processor and Thermal objects were not recognized and installed in 16850/proc. This was related to the scope type change described above. 16851 16852 168533) iASL Compiler/Disassembler 16854 16855Implemented the -g option to get all of the required ACPI tables 16856from the registry and save them to files (Windows version of the 16857compiler only.) The required tables are the FADT, FACS, and DSDT. 16858 16859Added ACPI table checksum validation during table disassembly in 16860order to catch corrupted tables. 16861 16862 16863---------------------------------------- 1686422 October 2002. Summary of changes for version 20021022. 16865 168661) ACPI CA Core Subsystem: 16867 16868Implemented a restriction on the Scope operator that the target 16869must already exist in the namespace at the time the operator is 16870encountered (during table load or method execution). In other 16871words, forward references are not allowed and Scope() cannot 16872create a new object. This changes the previous behavior where the 16873interpreter would create the name if not found. This new behavior 16874correctly enables the search-to-root algorithm during namespace 16875lookup of the target name. Because of this upsearch, this fixes 16876the known Compaq _SB_.OKEC problem and makes both the AML 16877interpreter and iASL compiler compatible with other ACPI 16878implementations. 16879 16880Completed a major overhaul of the internal ACPI object types for 16881the ACPI Namespace and the associated operand objects. Many of 16882these types had become obsolete with the introduction of the two- 16883pass namespace load. This cleanup simplifies the code and makes 16884the entire namespace load mechanism much clearer and easier to 16885understand. 16886 16887Improved debug output for tracking scope opening/closing to help 16888diagnose scoping issues. The old scope name as well as the new 16889scope name are displayed. Also improved error messages for 16890problems with ASL Mutex objects and error messages for GPE 16891problems. 16892 16893Cleaned up the namespace dump code, removed obsolete code. 16894 16895All string output (for all namespace/object dumps) now uses the 16896common ACPI string output procedure which handles escapes properly 16897and does not emit non-printable characters. 16898 16899Fixed some issues with constants in the 64-bit version of the 16900local C library (utclib.c) 16901 16902 169032) Linux 16904 16905EC Driver: No longer attempts to acquire the Global Lock at 16906interrupt level. 16907 16908 169093) iASL Compiler/Disassembler 16910 16911Implemented ACPI 2.0B grammar change that disallows all Type 1 and 169122 opcodes outside of a control method. This means that the 16913"executable" operators (versus the "namespace" operators) cannot 16914be used at the table level; they can only be used within a control 16915method. 16916 16917Implemented the restriction on the Scope() operator where the 16918target must already exist in the namespace at the time the 16919operator is encountered (during ASL compilation). In other words, 16920forward references are not allowed and Scope() cannot create a new 16921object. This makes the iASL compiler compatible with other ACPI 16922implementations and makes the Scope() implementation adhere to the 16923ACPI specification. 16924 16925Fixed a problem where namepath optimization for the Alias operator 16926was optimizing the wrong path (of the two namepaths.) This caused 16927a "Missing alias link" error message. 16928 16929Fixed a problem where an "unknown reserved name" warning could be 16930incorrectly generated for names like "_SB" when the trailing 16931underscore is not used in the original ASL. 16932 16933Fixed a problem where the reserved name check did not handle 16934NamePaths with multiple NameSegs correctly. The first nameseg of 16935the NamePath was examined instead of the last NameSeg. 16936 16937 16938---------------------------------------- 16939 1694002 October 2002. Summary of changes for this release. 16941 16942 169431) ACPI CA Core Subsystem version 20021002: 16944 16945Fixed a problem where a store/copy of a string to an existing 16946string did not always set the string length properly in the String 16947object. 16948 16949Fixed a reported problem with the ToString operator where the 16950behavior was identical to the ToHexString operator instead of just 16951simply converting a raw buffer to a string data type. 16952 16953Fixed a problem where CopyObject and the other "explicit" 16954conversion operators were not updating the internal namespace node 16955type as part of the store operation. 16956 16957Fixed a memory leak during implicit source operand conversion 16958where the original object was not deleted if it was converted to a 16959new object of a different type. 16960 16961Enhanced error messages for all problems associated with namespace 16962lookups. Common procedure generates and prints the lookup name as 16963well as the formatted status. 16964 16965Completed implementation of a new design for the Alias support 16966within the namespace. The existing design did not handle the case 16967where a new object was assigned to one of the two names due to the 16968use of an explicit conversion operator, resulting in the two names 16969pointing to two different objects. The new design simply points 16970the Alias name to the original name node - not to the object. 16971This results in a level of indirection that must be handled in the 16972name resolution mechanism. 16973 16974Code and Data Size: Current core subsystem library sizes are shown 16975below. These are the code and data sizes for the acpica.lib 16976produced by the Microsoft Visual C++ 6.0 compiler, and these 16977values do not include any ACPI driver or OSPM code. The debug 16978version of the code includes the debug output trace mechanism and 16979has a larger code and data size. Note that these values will vary 16980depending on the efficiency of the compiler and the compiler 16981options used during generation. 16982 16983 Previous Release 16984 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16985 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16986 Current Release: 16987 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16988 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16989 16990 169912) Linux 16992 16993Initialize thermal driver's timer before it is used. (Knut 16994Neumann) 16995 16996Allow handling negative celsius values. (Kochi Takayoshi) 16997 16998Fix thermal management and make trip points. R/W (Pavel Machek) 16999 17000Fix /proc/acpi/sleep. (P. Christeas) 17001 17002IA64 fixes. (David Mosberger) 17003 17004Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 17005 17006Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 17007Brodowski) 17008 17009 170103) iASL Compiler/Disassembler 17011 17012Clarified some warning/error messages. 17013 17014 17015---------------------------------------- 1701618 September 2002. Summary of changes for this release. 17017 17018 170191) ACPI CA Core Subsystem version 20020918: 17020 17021Fixed a reported problem with reference chaining (via the Index() 17022and RefOf() operators) in the ObjectType() and SizeOf() operators. 17023The definition of these operators includes the dereferencing of 17024all chained references to return information on the base object. 17025 17026Fixed a problem with stores to indexed package elements - the 17027existing code would not complete the store if an "implicit 17028conversion" was not performed. In other words, if the existing 17029object (package element) was to be replaced completely, the code 17030didn't handle this case. 17031 17032Relaxed typechecking on the ASL "Scope" operator to allow the 17033target name to refer to an object of type Integer, String, or 17034Buffer, in addition to the scoping object types (Device, 17035predefined Scopes, Processor, PowerResource, and ThermalZone.) 17036This allows existing AML code that has workarounds for a bug in 17037Windows to function properly. A warning is issued, however. This 17038affects both the AML interpreter and the iASL compiler. Below is 17039an example of this type of ASL code: 17040 17041 Name(DEB,0x00) 17042 Scope(DEB) 17043 { 17044 17045Fixed some reported problems with 64-bit integer support in the 17046local implementation of C library functions (clib.c) 17047 17048 170492) Linux 17050 17051Use ACPI fix map region instead of IOAPIC region, since it is 17052undefined in non-SMP. 17053 17054Ensure that the SCI has the proper polarity and trigger, even on 17055systems that do not have an interrupt override entry in the MADT. 17056 170572.5 big driver reorganization (Pat Mochel) 17058 17059Use early table mapping code from acpitable.c (Andi Kleen) 17060 17061New blacklist entries (Andi Kleen) 17062 17063Blacklist improvements. Split blacklist code out into a separate 17064file. Move checking the blacklist to very early. Previously, we 17065would use ACPI tables, and then halfway through init, check the 17066blacklist -- too late. Now, it's early enough to completely fall- 17067back to non-ACPI. 17068 17069 170703) iASL Compiler/Disassembler version 20020918: 17071 17072Fixed a problem where the typechecking code didn't know that an 17073alias could point to a method. In other words, aliases were not 17074being dereferenced during typechecking. 17075 17076 17077---------------------------------------- 1707829 August 2002. Summary of changes for this release. 17079 170801) ACPI CA Core Subsystem Version 20020829: 17081 17082If the target of a Scope() operator already exists, it must be an 17083object type that actually opens a scope -- such as a Device, 17084Method, Scope, etc. This is a fatal runtime error. Similar error 17085check has been added to the iASL compiler also. 17086 17087Tightened up the namespace load to disallow multiple names in the 17088same scope. This previously was allowed if both objects were of 17089the same type. (i.e., a lookup was the same as entering a new 17090name). 17091 17092 170932) Linux 17094 17095Ensure that the ACPI interrupt has the proper trigger and 17096polarity. 17097 17098local_irq_disable is extraneous. (Matthew Wilcox) 17099 17100Make "acpi=off" actually do what it says, and not use the ACPI 17101interpreter *or* the tables. 17102 17103Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 17104Takayoshi) 17105 17106 171073) iASL Compiler/Disassembler Version 20020829: 17108 17109Implemented namepath optimization for name declarations. For 17110example, a declaration like "Method (\_SB_.ABCD)" would get 17111optimized to "Method (ABCD)" if the declaration is within the 17112\_SB_ scope. This optimization is in addition to the named 17113reference path optimization first released in the previous 17114version. This would seem to complete all possible optimizations 17115for namepaths within the ASL/AML. 17116 17117If the target of a Scope() operator already exists, it must be an 17118object type that actually opens a scope -- such as a Device, 17119Method, Scope, etc. 17120 17121Implemented a check and warning for unreachable code in the same 17122block below a Return() statement. 17123 17124Fixed a problem where the listing file was not generated if the 17125compiler aborted if the maximum error count was exceeded (200). 17126 17127Fixed a problem where the typechecking of method return values was 17128broken. This includes the check for a return value when the 17129method is invoked as a TermArg (a return value is expected.) 17130 17131Fixed a reported problem where EOF conditions during a quoted 17132string or comment caused a fault. 17133 17134 17135---------------------------------------- 1713615 August 2002. Summary of changes for this release. 17137 171381) ACPI CA Core Subsystem Version 20020815: 17139 17140Fixed a reported problem where a Store to a method argument that 17141contains a reference did not perform the indirect store correctly. 17142This problem was created during the conversion to the new 17143reference object model - the indirect store to a method argument 17144code was not updated to reflect the new model. 17145 17146Reworked the ACPI mode change code to better conform to ACPI 2.0, 17147handle corner cases, and improve code legibility (Kochi Takayoshi) 17148 17149Fixed a problem with the pathname parsing for the carat (^) 17150prefix. The heavy use of the carat operator by the new namepath 17151optimization in the iASL compiler uncovered a problem with the AML 17152interpreter handling of this prefix. In the case where one or 17153more carats precede a single nameseg, the nameseg was treated as 17154standalone and the search rule (to root) was inadvertently 17155applied. This could cause both the iASL compiler and the 17156interpreter to find the wrong object or to miss the error that 17157should occur if the object does not exist at that exact pathname. 17158 17159Found and fixed the problem where the HP Pavilion DSDT would not 17160load. This was a relatively minor tweak to the table loading code 17161(a problem caused by the unexpected encounter with a method 17162invocation not within a control method), but it does not solve the 17163overall issue of the execution of AML code at the table level. 17164This investigation is still ongoing. 17165 17166Code and Data Size: Current core subsystem library sizes are shown 17167below. These are the code and data sizes for the acpica.lib 17168produced by the Microsoft Visual C++ 6.0 compiler, and these 17169values do not include any ACPI driver or OSPM code. The debug 17170version of the code includes the debug output trace mechanism and 17171has a larger code and data size. Note that these values will vary 17172depending on the efficiency of the compiler and the compiler 17173options used during generation. 17174 17175 Previous Release 17176 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17177 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17178 Current Release: 17179 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17180 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17181 17182 171832) Linux 17184 17185Remove redundant slab.h include (Brad Hards) 17186 17187Fix several bugs in thermal.c (Herbert Nachtnebel) 17188 17189Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 17190 17191Change acpi_system_suspend to use updated irq functions (Pavel 17192Machek) 17193 17194Export acpi_get_firmware_table (Matthew Wilcox) 17195 17196Use proper root proc entry for ACPI (Kochi Takayoshi) 17197 17198Fix early-boot table parsing (Bjorn Helgaas) 17199 17200 172013) iASL Compiler/Disassembler 17202 17203Reworked the compiler options to make them more consistent and to 17204use two-letter options where appropriate. We were running out of 17205sensible letters. This may break some makefiles, so check the 17206current options list by invoking the compiler with no parameters. 17207 17208Completed the design and implementation of the ASL namepath 17209optimization option for the compiler. This option optimizes all 17210references to named objects to the shortest possible path. The 17211first attempt tries to utilize a single nameseg (4 characters) and 17212the "search-to-root" algorithm used by the interpreter. If that 17213cannot be used (because either the name is not in the search path 17214or there is a conflict with another object with the same name), 17215the pathname is optimized using the carat prefix (usually a 17216shorter string than specifying the entire path from the root.) 17217 17218Implemented support to obtain the DSDT from the Windows registry 17219(when the disassembly option is specified with no input file). 17220Added this code as the implementation for AcpiOsTableOverride in 17221the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 17222utility) to scan memory for the DSDT to the AcpiOsTableOverride 17223function in the DOS OSL to make the disassembler truly OS 17224independent. 17225 17226Implemented a new option to disassemble and compile in one step. 17227When used without an input filename, this option will grab the 17228DSDT from the local machine, disassemble it, and compile it in one 17229step. 17230 17231Added a warning message for invalid escapes (a backslash followed 17232by any character other than the allowable escapes). This catches 17233the quoted string error "\_SB_" (which should be "\\_SB_" ). 17234 17235Also, there are numerous instances in the ACPI specification where 17236this error occurs. 17237 17238Added a compiler option to disable all optimizations. This is 17239basically the "compatibility mode" because by using this option, 17240the AML code will come out exactly the same as other ASL 17241compilers. 17242 17243Added error messages for incorrectly ordered dependent resource 17244functions. This includes: missing EndDependentFn macro at end of 17245dependent resource list, nested dependent function macros (both 17246start and end), and missing StartDependentFn macro. These are 17247common errors that should be caught at compile time. 17248 17249Implemented _OSI support for the disassembler and compiler. _OSI 17250must be included in the namespace for proper disassembly (because 17251the disassembler must know the number of arguments.) 17252 17253Added an "optimization" message type that is optional (off by 17254default). This message is used for all optimizations - including 17255constant folding, integer optimization, and namepath optimization. 17256 17257---------------------------------------- 1725825 July 2002. Summary of changes for this release. 17259 17260 172611) ACPI CA Core Subsystem Version 20020725: 17262 17263The AML Disassembler has been enhanced to produce compilable ASL 17264code and has been integrated into the iASL compiler (see below) as 17265well as the single-step disassembly for the AML debugger and the 17266disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 17267resource templates and macros are fully supported. The 17268disassembler has been tested on over 30 different AML files, 17269producing identical AML when the resulting disassembled ASL file 17270is recompiled with the same ASL compiler. 17271 17272Modified the Resource Manager to allow zero interrupts and zero 17273dma channels during the GetCurrentResources call. This was 17274causing problems on some platforms. 17275 17276Added the AcpiOsRedirectOutput interface to the OSL to simplify 17277output redirection for the AcpiOsPrintf and AcpiOsVprintf 17278interfaces. 17279 17280Code and Data Size: Current core subsystem library sizes are shown 17281below. These are the code and data sizes for the acpica.lib 17282produced by the Microsoft Visual C++ 6.0 compiler, and these 17283values do not include any ACPI driver or OSPM code. The debug 17284version of the code includes the debug output trace mechanism and 17285has a larger code and data size. Note that these values will vary 17286depending on the efficiency of the compiler and the compiler 17287options used during generation. 17288 17289 Previous Release 17290 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17291 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17292 Current Release: 17293 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17294 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17295 17296 172972) Linux 17298 17299Fixed a panic in the EC driver (Dominik Brodowski) 17300 17301Implemented checksum of the R/XSDT itself during Linux table scan 17302(Richard Schaal) 17303 17304 173053) iASL compiler 17306 17307The AML disassembler is integrated into the compiler. The "-d" 17308option invokes the disassembler to completely disassemble an 17309input AML file, producing as output a text ASL file with the 17310extension ".dsl" (to avoid name collisions with existing .asl 17311source files.) A future enhancement will allow the disassembler 17312to obtain the BIOS DSDT from the registry under Windows. 17313 17314Fixed a problem with the VendorShort and VendorLong resource 17315descriptors where an invalid AML sequence was created. 17316 17317Implemented a fix for BufferData term in the ASL parser. It was 17318inadvertently defined twice, allowing invalid syntax to pass and 17319causing reduction conflicts. 17320 17321Fixed a problem where the Ones opcode could get converted to a 17322value of zero if "Ones" was used where a byte, word or dword value 17323was expected. The 64-bit value is now truncated to the correct 17324size with the correct value. 17325 17326 17327 17328---------------------------------------- 1732902 July 2002. Summary of changes for this release. 17330 17331 173321) ACPI CA Core Subsystem Version 20020702: 17333 17334The Table Manager code has been restructured to add several new 17335features. Tables that are not required by the core subsystem 17336(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 17337validated in any way and are returned from AcpiGetFirmwareTable if 17338requested. The AcpiOsTableOverride interface is now called for 17339each table that is loaded by the subsystem in order to allow the 17340host to override any table it chooses. Previously, only the DSDT 17341could be overridden. Added one new files, tbrsdt.c and 17342tbgetall.c. 17343 17344Fixed a problem with the conversion of internal package objects to 17345external objects (when a package is returned from a control 17346method.) The return buffer length was set to zero instead of the 17347proper length of the package object. 17348 17349Fixed a reported problem with the use of the RefOf and DeRefOf 17350operators when passing reference arguments to control methods. A 17351new type of Reference object is used internally for references 17352produced by the RefOf operator. 17353 17354Added additional error messages in the Resource Manager to explain 17355AE_BAD_DATA errors when they occur during resource parsing. 17356 17357Split the AcpiEnableSubsystem into two primitives to enable a 17358finer granularity initialization sequence. These two calls should 17359be called in this order: AcpiEnableSubsystem (flags), 17360AcpiInitializeObjects (flags). The flags parameter remains the 17361same. 17362 17363 173642) Linux 17365 17366Updated the ACPI utilities module to understand the new style of 17367fully resolved package objects that are now returned from the core 17368subsystem. This eliminates errors of the form: 17369 17370 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 17371 acpi_utils-0430 [145] acpi_evaluate_reference: 17372 Invalid element in package (not a device reference) 17373 17374The method evaluation utility uses the new buffer allocation 17375scheme instead of calling AcpiEvaluate Object twice. 17376 17377Added support for ECDT. This allows the use of the Embedded 17378 17379Controller before the namespace has been fully initialized, which 17380is necessary for ACPI 2.0 support, and for some laptops to 17381initialize properly. (Laptops using ECDT are still rare, so only 17382limited testing was performed of the added functionality.) 17383 17384Fixed memory leaks in the EC driver. 17385 17386Eliminated a brittle code structure in acpi_bus_init(). 17387 17388Eliminated the acpi_evaluate() helper function in utils.c. It is 17389no longer needed since acpi_evaluate_object can optionally 17390allocate memory for the return object. 17391 17392Implemented fix for keyboard hang when getting battery readings on 17393some systems (Stephen White) 17394 17395PCI IRQ routing update (Dominik Brodowski) 17396 17397Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17398support 17399 17400---------------------------------------- 1740111 June 2002. Summary of changes for this release. 17402 17403 174041) ACPI CA Core Subsystem Version 20020611: 17405 17406Fixed a reported problem where constants such as Zero and One 17407appearing within _PRT packages were not handled correctly within 17408the resource manager code. Originally reported against the ASL 17409compiler because the code generator now optimizes integers to 17410their minimal AML representation (i.e. AML constants if possible.) 17411The _PRT code now handles all AML constant opcodes correctly 17412(Zero, One, Ones, Revision). 17413 17414Fixed a problem with the Concatenate operator in the AML 17415interpreter where a buffer result object was incorrectly marked as 17416not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17417 17418All package sub-objects are now fully resolved before they are 17419returned from the external ACPI interfaces. This means that name 17420strings are resolved to object handles, and constant operators 17421(Zero, One, Ones, Revision) are resolved to Integers. 17422 17423Implemented immediate resolution of the AML Constant opcodes 17424(Zero, One, Ones, Revision) to Integer objects upon detection 17425within the AML stream. This has simplified and reduced the 17426generated code size of the subsystem by eliminating about 10 17427switch statements for these constants (which previously were 17428contained in Reference objects.) The complicating issues are that 17429the Zero opcode is used as a "placeholder" for unspecified 17430optional target operands and stores to constants are defined to be 17431no-ops. 17432 17433Code and Data Size: Current core subsystem library sizes are shown 17434below. These are the code and data sizes for the acpica.lib 17435produced by the Microsoft Visual C++ 6.0 compiler, and these 17436values do not include any ACPI driver or OSPM code. The debug 17437version of the code includes the debug output trace mechanism and 17438has a larger code and data size. Note that these values will vary 17439depending on the efficiency of the compiler and the compiler 17440options used during generation. 17441 17442 Previous Release 17443 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17444 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17445 Current Release: 17446 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17447 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17448 17449 174502) Linux 17451 17452 17453Added preliminary support for obtaining _TRA data for PCI root 17454bridges (Bjorn Helgaas). 17455 17456 174573) iASL Compiler Version X2046: 17458 17459Fixed a problem where the "_DDN" reserved name was defined to be a 17460control method with one argument. There are no arguments, and 17461_DDN does not have to be a control method. 17462 17463Fixed a problem with the Linux version of the compiler where the 17464source lines printed with error messages were the wrong lines. 17465This turned out to be the "LF versus CR/LF" difference between 17466Windows and Unix. This appears to be the longstanding issue 17467concerning listing output and error messages. 17468 17469Fixed a problem with the Linux version of compiler where opcode 17470names within error messages were wrong. This was caused by a 17471slight difference in the output of the Flex tool on Linux versus 17472Windows. 17473 17474Fixed a problem with the Linux compiler where the hex output files 17475contained some garbage data caused by an internal buffer overrun. 17476 17477 17478---------------------------------------- 1747917 May 2002. Summary of changes for this release. 17480 17481 174821) ACPI CA Core Subsystem Version 20020517: 17483 17484Implemented a workaround to an BIOS bug discovered on the HP 17485OmniBook where the FADT revision number and the table size are 17486inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17487behavior is to fallback to using only the ACPI 1.0 fields of the 17488FADT if the table is too small to be a ACPI 2.0 table as claimed 17489by the revision number. Although this is a BIOS bug, this is a 17490case where the workaround is simple enough and with no side 17491effects, so it seemed prudent to add it. A warning message is 17492issued, however. 17493 17494Implemented minimum size checks for the fixed-length ACPI tables - 17495- the FADT and FACS, as well as consistency checks between the 17496revision number and the table size. 17497 17498Fixed a reported problem in the table override support where the 17499new table pointer was incorrectly treated as a physical address 17500instead of a logical address. 17501 17502Eliminated the use of the AE_AML_ERROR exception and replaced it 17503with more descriptive codes. 17504 17505Fixed a problem where an exception would occur if an ASL Field was 17506defined with no named Field Units underneath it (used by some 17507index fields). 17508 17509Code and Data Size: Current core subsystem library sizes are shown 17510below. These are the code and data sizes for the acpica.lib 17511produced by the Microsoft Visual C++ 6.0 compiler, and these 17512values do not include any ACPI driver or OSPM code. The debug 17513version of the code includes the debug output trace mechanism and 17514has a larger code and data size. Note that these values will vary 17515depending on the efficiency of the compiler and the compiler 17516options used during generation. 17517 17518 Previous Release 17519 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17520 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17521 Current Release: 17522 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17523 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17524 17525 17526 175272) Linux 17528 17529Much work done on ACPI init (MADT and PCI IRQ routing support). 17530(Paul D. and Dominik Brodowski) 17531 17532Fix PCI IRQ-related panic on boot (Sam Revitch) 17533 17534Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17535 17536Fix "MHz" typo (Dominik Brodowski) 17537 17538Fix RTC year 2000 issue (Dominik Brodowski) 17539 17540Preclude multiple button proc entries (Eric Brunet) 17541 17542Moved arch-specific code out of include/platform/aclinux.h 17543 175443) iASL Compiler Version X2044: 17545 17546Implemented error checking for the string used in the EISAID macro 17547(Usually used in the definition of the _HID object.) The code now 17548strictly enforces the PnP format - exactly 7 characters, 3 17549uppercase letters and 4 hex digits. 17550 17551If a raw string is used in the definition of the _HID object 17552(instead of the EISAID macro), the string must contain all 17553alphanumeric characters (e.g., "*PNP0011" is not allowed because 17554of the asterisk.) 17555 17556Implemented checking for invalid use of ACPI reserved names for 17557most of the name creation operators (Name, Device, Event, Mutex, 17558OperationRegion, PowerResource, Processor, and ThermalZone.) 17559Previously, this check was only performed for control methods. 17560 17561Implemented an additional check on the Name operator to emit an 17562error if a reserved name that must be implemented in ASL as a 17563control method is used. We know that a reserved name must be a 17564method if it is defined with input arguments. 17565 17566The warning emitted when a namespace object reference is not found 17567during the cross reference phase has been changed into an error. 17568The "External" directive should be used for names defined in other 17569modules. 17570 17571 175724) Tools and Utilities 17573 17574The 16-bit tools (adump16 and aexec16) have been regenerated and 17575tested. 17576 17577Fixed a problem with the output of both acpidump and adump16 where 17578the indentation of closing parentheses and brackets was not 17579 17580aligned properly with the parent block. 17581 17582 17583---------------------------------------- 1758403 May 2002. Summary of changes for this release. 17585 17586 175871) ACPI CA Core Subsystem Version 20020503: 17588 17589Added support a new OSL interface that allows the host operating 17590 17591system software to override the DSDT found in the firmware - 17592AcpiOsTableOverride. With this interface, the OSL can examine the 17593version of the firmware DSDT and replace it with a different one 17594if desired. 17595 17596Added new external interfaces for accessing ACPI registers from 17597device drivers and other system software - AcpiGetRegister and 17598AcpiSetRegister. This was simply an externalization of the 17599existing AcpiHwBitRegister interfaces. 17600 17601Fixed a regression introduced in the previous build where the 17602ASL/AML CreateField operator always returned an error, 17603"destination must be a NS Node". 17604 17605Extended the maximum time (before failure) to successfully enable 17606ACPI mode to 3 seconds. 17607 17608Code and Data Size: Current core subsystem library sizes are shown 17609below. These are the code and data sizes for the acpica.lib 17610produced by the Microsoft Visual C++ 6.0 compiler, and these 17611values do not include any ACPI driver or OSPM code. The debug 17612version of the code includes the debug output trace mechanism and 17613has a larger code and data size. Note that these values will vary 17614depending on the efficiency of the compiler and the compiler 17615options used during generation. 17616 17617 Previous Release 17618 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17619 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17620 Current Release: 17621 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17622 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17623 17624 176252) Linux 17626 17627Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17628free. While 3 out of 4 of our in-house systems work fine, the last 17629one still hangs when testing the LAPIC timer. 17630 17631Renamed many files in 2.5 kernel release to omit "acpi_" from the 17632name. 17633 17634Added warning on boot for Presario 711FR. 17635 17636Sleep improvements (Pavel Machek) 17637 17638ACPI can now be built without CONFIG_PCI enabled. 17639 17640IA64: Fixed memory map functions (JI Lee) 17641 17642 176433) iASL Compiler Version X2043: 17644 17645Added support to allow the compiler to be integrated into the MS 17646VC++ development environment for one-button compilation of single 17647files or entire projects -- with error-to-source-line mapping. 17648 17649Implemented support for compile-time constant folding for the 17650Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17651specification. This allows the ASL writer to use expressions 17652instead of Integer/Buffer/String constants in terms that must 17653evaluate to constants at compile time and will also simplify the 17654emitted AML in any such sub-expressions that can be folded 17655(evaluated at compile-time.) This increases the size of the 17656compiler significantly because a portion of the ACPI CA AML 17657interpreter is included within the compiler in order to pre- 17658evaluate constant expressions. 17659 17660 17661Fixed a problem with the "Unicode" ASL macro that caused the 17662compiler to fault. (This macro is used in conjunction with the 17663_STR reserved name.) 17664 17665Implemented an AML opcode optimization to use the Zero, One, and 17666Ones opcodes where possible to further reduce the size of integer 17667constants and thus reduce the overall size of the generated AML 17668code. 17669 17670Implemented error checking for new reserved terms for ACPI version 176712.0A. 17672 17673Implemented the -qr option to display the current list of ACPI 17674reserved names known to the compiler. 17675 17676Implemented the -qc option to display the current list of ASL 17677operators that are allowed within constant expressions and can 17678therefore be folded at compile time if the operands are constants. 17679 17680 176814) Documentation 17682 17683Updated the Programmer's Reference for new interfaces, data types, 17684and memory allocation model options. 17685 17686Updated the iASL Compiler User Reference to apply new format and 17687add information about new features and options. 17688 17689---------------------------------------- 1769019 April 2002. Summary of changes for this release. 17691 176921) ACPI CA Core Subsystem Version 20020419: 17693 17694The source code base for the Core Subsystem has been completely 17695cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17696versions. The Lint option files used are included in the 17697/acpi/generate/lint directory. 17698 17699Implemented enhanced status/error checking across the entire 17700Hardware manager subsystem. Any hardware errors (reported from 17701the OSL) are now bubbled up and will abort a running control 17702method. 17703 17704 17705Fixed a problem where the per-ACPI-table integer width (32 or 64) 17706was stored only with control method nodes, causing a fault when 17707non-control method code was executed during table loading. The 17708solution implemented uses a global variable to indicate table 17709width across the entire ACPI subsystem. Therefore, ACPI CA does 17710not support mixed integer widths across different ACPI tables 17711(DSDT, SSDT). 17712 17713Fixed a problem where NULL extended fields (X fields) in an ACPI 177142.0 ACPI FADT caused the table load to fail. Although the 17715existing ACPI specification is a bit fuzzy on this topic, the new 17716behavior is to fall back on a ACPI 1.0 field if the corresponding 17717ACPI 2.0 X field is zero (even though the table revision indicates 17718a full ACPI 2.0 table.) The ACPI specification will be updated to 17719clarify this issue. 17720 17721Fixed a problem with the SystemMemory operation region handler 17722where memory was always accessed byte-wise even if the AML- 17723specified access width was larger than a byte. This caused 17724problems on systems with memory-mapped I/O. Memory is now 17725accessed with the width specified. On systems that do not support 17726non-aligned transfers, a check is made to guarantee proper address 17727alignment before proceeding in order to avoid an AML-caused 17728alignment fault within the kernel. 17729 17730 17731Fixed a problem with the ExtendedIrq resource where only one byte 17732of the 4-byte Irq field was extracted. 17733 17734Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17735function was out of date and required a rewrite. 17736 17737Code and Data Size: Current core subsystem library sizes are shown 17738below. These are the code and data sizes for the acpica.lib 17739produced by the Microsoft Visual C++ 6.0 compiler, and these 17740values do not include any ACPI driver or OSPM code. The debug 17741version of the code includes the debug output trace mechanism and 17742has a larger code and data size. Note that these values will vary 17743depending on the efficiency of the compiler and the compiler 17744options used during generation. 17745 17746 Previous Release 17747 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17748 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17749 Current Release: 17750 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17751 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17752 17753 177542) Linux 17755 17756PCI IRQ routing fixes (Dominik Brodowski) 17757 17758 177593) iASL Compiler Version X2042: 17760 17761Implemented an additional compile-time error check for a field 17762unit whose size + minimum access width would cause a run-time 17763access beyond the end-of-region. Previously, only the field size 17764itself was checked. 17765 17766The Core subsystem and iASL compiler now share a common parse 17767object in preparation for compile-time evaluation of the type 177683/4/5 ASL operators. 17769 17770 17771---------------------------------------- 17772Summary of changes for this release: 03_29_02 17773 177741) ACPI CA Core Subsystem Version 20020329: 17775 17776Implemented support for late evaluation of TermArg operands to 17777Buffer and Package objects. This allows complex expressions to be 17778used in the declarations of these object types. 17779 17780Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 177811.0, if the field was larger than 32 bits, it was returned as a 17782buffer - otherwise it was returned as an integer. In ACPI 2.0, 17783the field is returned as a buffer only if the field is larger than 1778464 bits. The TableRevision is now considered when making this 17785conversion to avoid incompatibility with existing ASL code. 17786 17787Implemented logical addressing for AcpiOsGetRootPointer. This 17788allows an RSDP with either a logical or physical address. With 17789this support, the host OS can now override all ACPI tables with 17790one logical RSDP. Includes implementation of "typed" pointer 17791support to allow a common data type for both physical and logical 17792pointers internally. This required a change to the 17793AcpiOsGetRootPointer interface. 17794 17795Implemented the use of ACPI 2.0 Generic Address Structures for all 17796GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17797mapped I/O for these ACPI features. 17798 17799Initialization now ignores not only non-required tables (All 17800tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17801not validate the table headers of unrecognized tables. 17802 17803Fixed a problem where a notify handler could only be 17804installed/removed on an object of type Device. All "notify" 17805 17806objects are now supported -- Devices, Processor, Power, and 17807Thermal. 17808 17809Removed most verbosity from the ACPI_DB_INFO debug level. Only 17810critical information is returned when this debug level is enabled. 17811 17812Code and Data Size: Current core subsystem library sizes are shown 17813below. These are the code and data sizes for the acpica.lib 17814produced by the Microsoft Visual C++ 6.0 compiler, and these 17815values do not include any ACPI driver or OSPM code. The debug 17816version of the code includes the debug output trace mechanism and 17817has a larger code and data size. Note that these values will vary 17818depending on the efficiency of the compiler and the compiler 17819options used during generation. 17820 17821 Previous Release 17822 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17823 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17824 Current Release: 17825 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17826 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17827 17828 178292) Linux: 17830 17831The processor driver (acpi_processor.c) now fully supports ACPI 178322.0-based processor performance control (e.g. Intel(R) 17833SpeedStep(TM) technology) Note that older laptops that only have 17834the Intel "applet" interface are not supported through this. The 17835'limit' and 'performance' interface (/proc) are fully functional. 17836[Note that basic policy for controlling performance state 17837transitions will be included in the next version of ospmd.] The 17838idle handler was modified to more aggressively use C2, and PIIX4 17839errata handling underwent a complete overhaul (big thanks to 17840Dominik Brodowski). 17841 17842Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17843based devices in the ACPI namespace are now dynamically bound 17844(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17845This allows, among other things, ACPI to resolve bus numbers for 17846subordinate PCI bridges. 17847 17848Enhanced PCI IRQ routing to get the proper bus number for _PRT 17849entries defined underneath PCI bridges. 17850 17851Added IBM 600E to bad bios list due to invalid _ADR value for 17852PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17853 17854In the process of adding full MADT support (e.g. IOAPIC) for IA32 17855(acpi.c, mpparse.c) -- stay tuned. 17856 17857Added back visual differentiation between fixed-feature and 17858control-method buttons in dmesg. Buttons are also subtyped (e.g. 17859button/power/PWRF) to simplify button identification. 17860 17861We no longer use -Wno-unused when compiling debug. Please ignore 17862any "_THIS_MODULE defined but not used" messages. 17863 17864Can now shut down the system using "magic sysrq" key. 17865 17866 178673) iASL Compiler version 2041: 17868 17869Fixed a problem where conversion errors for hex/octal/decimal 17870constants were not reported. 17871 17872Implemented a fix for the General Register template Address field. 17873This field was 8 bits when it should be 64. 17874 17875Fixed a problem where errors/warnings were no longer being emitted 17876within the listing output file. 17877 17878Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17879exactly 4 characters, alphanumeric only. 17880 17881 17882 17883 17884---------------------------------------- 17885Summary of changes for this release: 03_08_02 17886 17887 178881) ACPI CA Core Subsystem Version 20020308: 17889 17890Fixed a problem with AML Fields where the use of the "AccessAny" 17891keyword could cause an interpreter error due to attempting to read 17892or write beyond the end of the parent Operation Region. 17893 17894Fixed a problem in the SystemMemory Operation Region handler where 17895an attempt was made to map memory beyond the end of the region. 17896This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 17897errors on some Linux systems. 17898 17899Fixed a problem where the interpreter/namespace "search to root" 17900algorithm was not functioning for some object types. Relaxed the 17901internal restriction on the search to allow upsearches for all 17902external object types as well as most internal types. 17903 17904 179052) Linux: 17906 17907We now use safe_halt() macro versus individual calls to sti | hlt. 17908 17909Writing to the processor limit interface should now work. "echo 1" 17910will increase the limit, 2 will decrease, and 0 will reset to the 17911 17912default. 17913 17914 179153) ASL compiler: 17916 17917Fixed segfault on Linux version. 17918 17919 17920---------------------------------------- 17921Summary of changes for this release: 02_25_02 17922 179231) ACPI CA Core Subsystem: 17924 17925 17926Fixed a problem where the GPE bit masks were not initialized 17927properly, causing erratic GPE behavior. 17928 17929Implemented limited support for multiple calling conventions. The 17930code can be generated with either the VPL (variable parameter 17931list, or "C") convention, or the FPL (fixed parameter list, or 17932"Pascal") convention. The core subsystem is about 3.4% smaller 17933when generated with FPL. 17934 17935 179362) Linux 17937 17938Re-add some /proc/acpi/event functionality that was lost during 17939the rewrite 17940 17941Resolved issue with /proc events for fixed-feature buttons showing 17942up as the system device. 17943 17944Fixed checks on C2/C3 latencies to be inclusive of maximum values. 17945 17946Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 17947 17948Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 17949 17950Fixed limit interface & usage to fix bugs with passive cooling 17951hysterisis. 17952 17953Restructured PRT support. 17954 17955 17956---------------------------------------- 17957Summary of changes for this label: 02_14_02 17958 17959 179601) ACPI CA Core Subsystem: 17961 17962Implemented support in AcpiLoadTable to allow loading of FACS and 17963FADT tables. 17964 17965Support for the now-obsolete interim 0.71 64-bit ACPI tables has 17966been removed. All 64-bit platforms should be migrated to the ACPI 179672.0 tables. The actbl71.h header has been removed from the source 17968tree. 17969 17970All C macros defined within the subsystem have been prefixed with 17971"ACPI_" to avoid collision with other system include files. 17972 17973Removed the return value for the two AcpiOsPrint interfaces, since 17974it is never used and causes lint warnings for ignoring the return 17975value. 17976 17977Added error checking to all internal mutex acquire and release 17978calls. Although a failure from one of these interfaces is 17979probably a fatal system error, these checks will cause the 17980immediate abort of the currently executing method or interface. 17981 17982Fixed a problem where the AcpiSetCurrentResources interface could 17983fault. This was a side effect of the deployment of the new memory 17984allocation model. 17985 17986Fixed a couple of problems with the Global Lock support introduced 17987in the last major build. The "common" (1.0/2.0) internal FACS was 17988being overwritten with the FACS signature and clobbering the 17989Global Lock pointer. Also, the actual firmware FACS was being 17990unmapped after construction of the "common" FACS, preventing 17991access to the actual Global Lock field within it. The "common" 17992internal FACS is no longer installed as an actual ACPI table; it 17993is used simply as a global. 17994 17995Code and Data Size: Current core subsystem library sizes are shown 17996below. These are the code and data sizes for the acpica.lib 17997produced by the Microsoft Visual C++ 6.0 compiler, and these 17998values do not include any ACPI driver or OSPM code. The debug 17999version of the code includes the debug output trace mechanism and 18000has a larger code and data size. Note that these values will vary 18001depending on the efficiency of the compiler and the compiler 18002options used during generation. 18003 18004 Previous Release (02_07_01) 18005 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18006 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18007 Current Release: 18008 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18009 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18010 18011 180122) Linux 18013 18014Updated Linux-specific code for core macro and OSL interface 18015changes described above. 18016 18017Improved /proc/acpi/event. It now can be opened only once and has 18018proper poll functionality. 18019 18020Fixed and restructured power management (acpi_bus). 18021 18022Only create /proc "view by type" when devices of that class exist. 18023 18024Fixed "charging/discharging" bug (and others) in acpi_battery. 18025 18026Improved thermal zone code. 18027 18028 180293) ASL Compiler, version X2039: 18030 18031 18032Implemented the new compiler restriction on ASL String hex/octal 18033escapes to non-null, ASCII values. An error results if an invalid 18034value is used. (This will require an ACPI 2.0 specification 18035change.) 18036 18037AML object labels that are output to the optional C and ASM source 18038are now prefixed with both the ACPI table signature and table ID 18039to help guarantee uniqueness within a large BIOS project. 18040 18041 18042---------------------------------------- 18043Summary of changes for this label: 02_01_02 18044 180451) ACPI CA Core Subsystem: 18046 18047ACPI 2.0 support is complete in the entire Core Subsystem and the 18048ASL compiler. All new ACPI 2.0 operators are implemented and all 18049other changes for ACPI 2.0 support are complete. With 18050simultaneous code and data optimizations throughout the subsystem, 18051ACPI 2.0 support has been implemented with almost no additional 18052cost in terms of code and data size. 18053 18054Implemented a new mechanism for allocation of return buffers. If 18055the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 18056be allocated on behalf of the caller. Consolidated all return 18057buffer validation and allocation to a common procedure. Return 18058buffers will be allocated via the primary OSL allocation interface 18059since it appears that a separate pool is not needed by most users. 18060If a separate pool is required for these buffers, the caller can 18061still use the original mechanism and pre-allocate the buffer(s). 18062 18063Implemented support for string operands within the DerefOf 18064operator. 18065 18066Restructured the Hardware and Event managers to be table driven, 18067simplifying the source code and reducing the amount of generated 18068code. 18069 18070Split the common read/write low-level ACPI register bitfield 18071procedure into a separate read and write, simplifying the code 18072considerably. 18073 18074Obsoleted the AcpiOsCallocate OSL interface. This interface was 18075used only a handful of times and didn't have enough critical mass 18076for a separate interface. Replaced with a common calloc procedure 18077in the core. 18078 18079Fixed a reported problem with the GPE number mapping mechanism 18080that allows GPE1 numbers to be non-contiguous with GPE0. 18081Reorganized the GPE information and shrunk a large array that was 18082originally large enough to hold info for all possible GPEs (256) 18083to simply large enough to hold all GPEs up to the largest GPE 18084number on the machine. 18085 18086Fixed a reported problem with resource structure alignment on 64- 18087bit platforms. 18088 18089Changed the AcpiEnableEvent and AcpiDisableEvent external 18090interfaces to not require any flags for the common case of 18091enabling/disabling a GPE. 18092 18093Implemented support to allow a "Notify" on a Processor object. 18094 18095Most TBDs in comments within the source code have been resolved 18096and eliminated. 18097 18098 18099Fixed a problem in the interpreter where a standalone parent 18100prefix (^) was not handled correctly in the interpreter and 18101debugger. 18102 18103Removed obsolete and unnecessary GPE save/restore code. 18104 18105Implemented Field support in the ASL Load operator. This allows a 18106table to be loaded from a named field, in addition to loading a 18107table directly from an Operation Region. 18108 18109Implemented timeout and handle support in the external Global Lock 18110interfaces. 18111 18112Fixed a problem in the AcpiDump utility where pathnames were no 18113longer being generated correctly during the dump of named objects. 18114 18115Modified the AML debugger to give a full display of if/while 18116predicates instead of just one AML opcode at a time. (The 18117predicate can have several nested ASL statements.) The old method 18118was confusing during single stepping. 18119 18120Code and Data Size: Current core subsystem library sizes are shown 18121below. These are the code and data sizes for the acpica.lib 18122produced by the Microsoft Visual C++ 6.0 compiler, and these 18123values do not include any ACPI driver or OSPM code. The debug 18124version of the code includes the debug output trace mechanism and 18125has a larger code and data size. Note that these values will vary 18126depending on the efficiency of the compiler and the compiler 18127options used during generation. 18128 18129 Previous Release (12_18_01) 18130 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18131 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18132 Current Release: 18133 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18134 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18135 181362) Linux 18137 18138 Implemented fix for PIIX reverse throttling errata (Processor 18139driver) 18140 18141Added new Limit interface (Processor and Thermal drivers) 18142 18143New thermal policy (Thermal driver) 18144 18145Many updates to /proc 18146 18147Battery "low" event support (Battery driver) 18148 18149Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 18150 18151IA32 - IA64 initialization unification, no longer experimental 18152 18153Menuconfig options redesigned 18154 181553) ASL Compiler, version X2037: 18156 18157Implemented several new output features to simplify integration of 18158AML code into firmware: 1) Output the AML in C source code with 18159labels for each named ASL object. The original ASL source code 18160is interleaved as C comments. 2) Output the AML in ASM source code 18161with labels and interleaved ASL source. 3) Output the AML in 18162raw hex table form, in either C or ASM. 18163 18164Implemented support for optional string parameters to the 18165LoadTable operator. 18166 18167Completed support for embedded escape sequences within string 18168literals. The compiler now supports all single character escapes 18169as well as the Octal and Hex escapes. Note: the insertion of a 18170null byte into a string literal (via the hex/octal escape) causes 18171the string to be immediately terminated. A warning is issued. 18172 18173Fixed a problem where incorrect AML was generated for the case 18174where an ASL namepath consists of a single parent prefix ( 18175 18176) with no trailing name segments. 18177 18178The compiler has been successfully generated with a 64-bit C 18179compiler. 18180 18181 18182 18183 18184---------------------------------------- 18185Summary of changes for this label: 12_18_01 18186 181871) Linux 18188 18189Enhanced blacklist with reason and severity fields. Any table's 18190signature may now be used to identify a blacklisted system. 18191 18192Call _PIC control method to inform the firmware which interrupt 18193model the OS is using. Turn on any disabled link devices. 18194 18195Cleaned up busmgr /proc error handling (Andreas Dilger) 18196 18197 2) ACPI CA Core Subsystem: 18198 18199Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 18200while loop) 18201 18202Completed implementation of the ACPI 2.0 "Continue", 18203"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 18204operators. All new ACPI 2.0 operators are now implemented in both 18205the ASL compiler and the AML interpreter. The only remaining ACPI 182062.0 task is support for the String data type in the DerefOf 18207operator. Fixed a problem with AcquireMutex where the status code 18208was lost if the caller had to actually wait for the mutex. 18209 18210Increased the maximum ASL Field size from 64K bits to 4G bits. 18211 18212Completed implementation of the external Global Lock interfaces -- 18213AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 18214Handler parameters were added. 18215 18216Completed another pass at removing warnings and issues when 18217compiling with 64-bit compilers. The code now compiles cleanly 18218with the Intel 64-bit C/C++ compiler. Most notably, the pointer 18219add and subtract (diff) macros have changed considerably. 18220 18221 18222Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1822364-bit platforms, 32-bits on all others. This type is used 18224wherever memory allocation and/or the C sizeof() operator is used, 18225and affects the OSL memory allocation interfaces AcpiOsAllocate 18226and AcpiOsCallocate. 18227 18228Implemented sticky user breakpoints in the AML debugger. 18229 18230Code and Data Size: Current core subsystem library sizes are shown 18231below. These are the code and data sizes for the acpica.lib 18232produced by the Microsoft Visual C++ 6.0 compiler, and these 18233values do not include any ACPI driver or OSPM code. The debug 18234version of the code includes the debug output trace mechanism and 18235has a larger code and data size. Note that these values will vary 18236depending on the efficiency of the compiler and the compiler 18237options used during generation. 18238 18239 Previous Release (12_05_01) 18240 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18241 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18242 Current Release: 18243 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18244 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18245 18246 3) ASL Compiler, version X2034: 18247 18248Now checks for (and generates an error if detected) the use of a 18249Break or Continue statement without an enclosing While statement. 18250 18251 18252Successfully generated the compiler with the Intel 64-bit C 18253compiler. 18254 18255 ---------------------------------------- 18256Summary of changes for this label: 12_05_01 18257 18258 1) ACPI CA Core Subsystem: 18259 18260The ACPI 2.0 CopyObject operator is fully implemented. This 18261operator creates a new copy of an object (and is also used to 18262bypass the "implicit conversion" mechanism of the Store operator.) 18263 18264The ACPI 2.0 semantics for the SizeOf operator are fully 18265implemented. The change is that performing a SizeOf on a 18266reference object causes an automatic dereference of the object to 18267the actual value before the size is evaluated. This behavior was 18268undefined in ACPI 1.0. 18269 18270The ACPI 2.0 semantics for the Extended IRQ resource descriptor 18271have been implemented. The interrupt polarity and mode are now 18272independently set. 18273 18274Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 18275appearing in Package objects were not properly converted to 18276integers when the internal Package was converted to an external 18277object (via the AcpiEvaluateObject interface.) 18278 18279Fixed a problem with the namespace object deletion mechanism for 18280objects created by control methods. There were two parts to this 18281problem: 1) Objects created during the initialization phase method 18282parse were not being deleted, and 2) The object owner ID mechanism 18283to track objects was broken. 18284 18285Fixed a problem where the use of the ASL Scope operator within a 18286control method would result in an invalid opcode exception. 18287 18288Fixed a problem introduced in the previous label where the buffer 18289length required for the _PRT structure was not being returned 18290correctly. 18291 18292Code and Data Size: Current core subsystem library sizes are shown 18293below. These are the code and data sizes for the acpica.lib 18294produced by the Microsoft Visual C++ 6.0 compiler, and these 18295values do not include any ACPI driver or OSPM code. The debug 18296version of the code includes the debug output trace mechanism and 18297has a larger code and data size. Note that these values will vary 18298depending on the efficiency of the compiler and the compiler 18299options used during generation. 18300 18301 Previous Release (11_20_01) 18302 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18303 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18304 18305 Current Release: 18306 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18307 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18308 18309 2) Linux: 18310 18311Updated all files to apply cleanly against 2.4.16. 18312 18313Added basic PCI Interrupt Routing Table (PRT) support for IA32 18314(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 18315version supports both static and dynamic PRT entries, but dynamic 18316entries are treated as if they were static (not yet 18317reconfigurable). Architecture- specific code to use this data is 18318absent on IA32 but should be available shortly. 18319 18320Changed the initialization sequence to start the ACPI interpreter 18321(acpi_init) prior to initialization of the PCI driver (pci_init) 18322in init/main.c. This ordering is required to support PRT and 18323facilitate other (future) enhancement. A side effect is that the 18324ACPI bus driver and certain device drivers can no longer be loaded 18325as modules. 18326 18327Modified the 'make menuconfig' options to allow PCI Interrupt 18328Routing support to be included without the ACPI Bus and other 18329device drivers. 18330 18331 3) ASL Compiler, version X2033: 18332 18333Fixed some issues with the use of the new CopyObject and 18334DataTableRegion operators. Both are fully functional. 18335 18336 ---------------------------------------- 18337Summary of changes for this label: 11_20_01 18338 18339 20 November 2001. Summary of changes for this release. 18340 18341 1) ACPI CA Core Subsystem: 18342 18343Updated Index support to match ACPI 2.0 semantics. Storing a 18344Integer, String, or Buffer to an Index of a Buffer will store only 18345the least-significant byte of the source to the Indexed buffer 18346byte. Multiple writes are not performed. 18347 18348Fixed a problem where the access type used in an AccessAs ASL 18349operator was not recorded correctly into the field object. 18350 18351Fixed a problem where ASL Event objects were created in a 18352signalled state. Events are now created in an unsignalled state. 18353 18354The internal object cache is now purged after table loading and 18355initialization to reduce the use of dynamic kernel memory -- on 18356the assumption that object use is greatest during the parse phase 18357of the entire table (versus the run-time use of individual control 18358methods.) 18359 18360ACPI 2.0 variable-length packages are now fully operational. 18361 18362Code and Data Size: Code and Data optimizations have permitted new 18363feature development with an actual reduction in the library size. 18364Current core subsystem library sizes are shown below. These are 18365the code and data sizes for the acpica.lib produced by the 18366Microsoft Visual C++ 6.0 compiler, and these values do not include 18367any ACPI driver or OSPM code. The debug version of the code 18368includes the debug output trace mechanism and has a larger code 18369and data size. Note that these values will vary depending on the 18370efficiency of the compiler and the compiler options used during 18371generation. 18372 18373 Previous Release (11_09_01): 18374 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18375 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18376 18377 Current Release: 18378 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18379 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18380 18381 2) Linux: 18382 18383Enhanced the ACPI boot-time initialization code to allow the use 18384of Local APIC tables for processor enumeration on IA-32, and to 18385pave the way for a fully MPS-free boot (on SMP systems) in the 18386near future. This functionality replaces 18387arch/i386/kernel/acpitables.c, which was introduced in an earlier 183882.4.15-preX release. To enable this feature you must add 18389"acpi_boot=on" to the kernel command line -- see the help entry 18390for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 18391the works... 18392 18393Restructured the configuration options to allow boot-time table 18394parsing support without inclusion of the ACPI Interpreter (and 18395other) code. 18396 18397NOTE: This release does not include fixes for the reported events, 18398power-down, and thermal passive cooling issues (coming soon). 18399 18400 3) ASL Compiler: 18401 18402Added additional typechecking for Fields within restricted access 18403Operation Regions. All fields within EC and CMOS regions must be 18404declared with ByteAcc. All fields within SMBus regions must be 18405declared with the BufferAcc access type. 18406 18407Fixed a problem where the listing file output of control methods 18408no longer interleaved the actual AML code with the ASL source 18409code. 18410 18411 18412 18413 18414---------------------------------------- 18415Summary of changes for this label: 11_09_01 18416 184171) ACPI CA Core Subsystem: 18418 18419Implemented ACPI 2.0-defined support for writes to fields with a 18420Buffer, String, or Integer source operand that is smaller than the 18421target field. In these cases, the source operand is zero-extended 18422to fill the target field. 18423 18424Fixed a problem where a Field starting bit offset (within the 18425parent operation region) was calculated incorrectly if the 18426 18427alignment of the field differed from the access width. This 18428affected CreateWordField, CreateDwordField, CreateQwordField, and 18429possibly other fields that use the "AccessAny" keyword. 18430 18431Fixed a problem introduced in the 11_02_01 release where indirect 18432stores through method arguments did not operate correctly. 18433 184342) Linux: 18435 18436Implemented boot-time ACPI table parsing support 18437(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18438facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18439legacy BIOS interfaces (e.g. MPS) for the configuration of system 18440processors, memory, and interrupts during setup_arch(). Note that 18441this patch does not include the required architecture-specific 18442changes required to apply this information -- subsequent patches 18443will be posted for both IA32 and IA64 to achieve this. 18444 18445Added low-level sleep support for IA32 platforms, courtesy of Pat 18446Mochel. This allows IA32 systems to transition to/from various 18447sleeping states (e.g. S1, S3), although the lack of a centralized 18448driver model and power-manageable drivers will prevent its 18449(successful) use on most systems. 18450 18451Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18452submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18453tables" option, etc. 18454 18455Increased the default timeout for the EC driver from 1ms to 10ms 18456(1000 cycles of 10us) to try to address AE_TIME errors during EC 18457transactions. 18458 18459 ---------------------------------------- 18460Summary of changes for this label: 11_02_01 18461 184621) ACPI CA Core Subsystem: 18463 18464ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18465(QWordAcc keyword). All ACPI 2.0 64-bit support is now 18466implemented. 18467 18468OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18469changes to support ACPI 2.0 Qword field access. Read/Write 18470PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18471accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18472the value parameter for the address space handler interface is now 18473an ACPI_INTEGER. OSL implementations of these interfaces must now 18474handle the case where the Width parameter is 64. 18475 18476Index Fields: Fixed a problem where unaligned bit assembly and 18477disassembly for IndexFields was not supported correctly. 18478 18479Index and Bank Fields: Nested Index and Bank Fields are now 18480supported. During field access, a check is performed to ensure 18481that the value written to an Index or Bank register is not out of 18482the range of the register. The Index (or Bank) register is 18483written before each access to the field data. Future support will 18484include allowing individual IndexFields to be wider than the 18485DataRegister width. 18486 18487Fields: Fixed a problem where the AML interpreter was incorrectly 18488attempting to write beyond the end of a Field/OpRegion. This was 18489a boundary case that occurred when a DWORD field was written to a 18490BYTE access OpRegion, forcing multiple writes and causing the 18491interpreter to write one datum too many. 18492 18493Fields: Fixed a problem with Field/OpRegion access where the 18494starting bit address of a field was incorrectly calculated if the 18495current access type was wider than a byte (WordAcc, DwordAcc, or 18496QwordAcc). 18497 18498Fields: Fixed a problem where forward references to individual 18499FieldUnits (individual Field names within a Field definition) were 18500not resolved during the AML table load. 18501 18502Fields: Fixed a problem where forward references from a Field 18503definition to the parent Operation Region definition were not 18504resolved during the AML table load. 18505 18506Fields: Duplicate FieldUnit names within a scope are now detected 18507during AML table load. 18508 18509Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18510returned an incorrect name for the root node. 18511 18512Code and Data Size: Code and Data optimizations have permitted new 18513feature development with an actual reduction in the library size. 18514Current core subsystem library sizes are shown below. These are 18515the code and data sizes for the acpica.lib produced by the 18516Microsoft Visual C++ 6.0 compiler, and these values do not include 18517any ACPI driver or OSPM code. The debug version of the code 18518includes the debug output trace mechanism and has a larger code 18519and data size. Note that these values will vary depending on the 18520efficiency of the compiler and the compiler options used during 18521generation. 18522 18523 Previous Release (10_18_01): 18524 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18525 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18526 18527 Current Release: 18528 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18529 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18530 18531 2) Linux: 18532 18533Improved /proc processor output (Pavel Machek) Re-added 18534MODULE_LICENSE("GPL") to all modules. 18535 18536 3) ASL Compiler version X2030: 18537 18538Duplicate FieldUnit names within a scope are now detected and 18539flagged as errors. 18540 18541 4) Documentation: 18542 18543Programmer Reference updated to reflect OSL and address space 18544handler interface changes described above. 18545 18546---------------------------------------- 18547Summary of changes for this label: 10_18_01 18548 18549ACPI CA Core Subsystem: 18550 18551Fixed a problem with the internal object reference count mechanism 18552that occasionally caused premature object deletion. This resolves 18553all of the outstanding problem reports where an object is deleted 18554in the middle of an interpreter evaluation. Although this problem 18555only showed up in rather obscure cases, the solution to the 18556problem involved an adjustment of all reference counts involving 18557objects attached to namespace nodes. 18558 18559Fixed a problem with Field support in the interpreter where 18560writing to an aligned field whose length is an exact multiple (2 18561or greater) of the field access granularity would cause an attempt 18562to write beyond the end of the field. 18563 18564The top level AML opcode execution functions within the 18565interpreter have been renamed with a more meaningful and 18566consistent naming convention. The modules exmonad.c and 18567exdyadic.c were eliminated. New modules are exoparg1.c, 18568exoparg2.c, exoparg3.c, and exoparg6.c. 18569 18570Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18571 18572Fixed a problem where the AML debugger was causing some internal 18573objects to not be deleted during subsystem termination. 18574 18575Fixed a problem with the external AcpiEvaluateObject interface 18576where the subsystem would fault if the named object to be 18577evaluated referred to a constant such as Zero, Ones, etc. 18578 18579Fixed a problem with IndexFields and BankFields where the 18580subsystem would fault if the index, data, or bank registers were 18581not defined in the same scope as the field itself. 18582 18583Added printf format string checking for compilers that support 18584this feature. Corrected more than 50 instances of issues with 18585format specifiers within invocations of ACPI_DEBUG_PRINT 18586throughout the core subsystem code. 18587 18588The ASL "Revision" operator now returns the ACPI support level 18589implemented in the core - the value "2" since the ACPI 2.0 support 18590is more than 50% implemented. 18591 18592Enhanced the output of the AML debugger "dump namespace" command 18593to output in a more human-readable form. 18594 18595Current core subsystem library code sizes are shown below. These 18596 18597are the code and data sizes for the acpica.lib produced by the 18598Microsoft Visual C++ 6.0 compiler, and these values do not include 18599any ACPI driver or OSPM code. The debug version of the code 18600includes the full debug trace mechanism -- leading to a much 18601 18602larger code and data size. Note that these values will vary 18603depending on the efficiency of the compiler and the compiler 18604options used during generation. 18605 18606 Previous Label (09_20_01): 18607 Non-Debug Version: 65K Code, 5K Data, 70K Total 18608 Debug Version: 138K Code, 58K Data, 196K Total 18609 18610 This Label: 18611 18612 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18613 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18614 18615Linux: 18616 18617Implemented a "Bad BIOS Blacklist" to track machines that have 18618known ASL/AML problems. 18619 18620Enhanced the /proc interface for the thermal zone driver and added 18621support for _HOT (the critical suspend trip point). The 'info' 18622file now includes threshold/policy information, and allows setting 18623of _SCP (cooling preference) and _TZP (polling frequency) values 18624to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18625frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18626preference to the passive/quiet mode (if supported by the ASL). 18627 18628Implemented a workaround for a gcc bug that resuted in an OOPs 18629when loading the control method battery driver. 18630 18631 ---------------------------------------- 18632Summary of changes for this label: 09_20_01 18633 18634 ACPI CA Core Subsystem: 18635 18636The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18637modified to allow individual GPE levels to be flagged as wake- 18638enabled (i.e., these GPEs are to remain enabled when the platform 18639sleeps.) 18640 18641The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18642support wake-enabled GPEs. This means that upon entering the 18643sleep state, all GPEs that are not wake-enabled are disabled. 18644When leaving the sleep state, these GPEs are re-enabled. 18645 18646A local double-precision divide/modulo module has been added to 18647enhance portability to OS kernels where a 64-bit math library is 18648not available. The new module is "utmath.c". 18649 18650Several optimizations have been made to reduce the use of CPU 18651stack. Originally over 2K, the maximum stack usage is now below 186522K at 1860 bytes (1.82k) 18653 18654Fixed a problem with the AcpiGetFirmwareTable interface where the 18655root table pointer was not mapped into a logical address properly. 18656 18657Fixed a problem where a NULL pointer was being dereferenced in the 18658interpreter code for the ASL Notify operator. 18659 18660Fixed a problem where the use of the ASL Revision operator 18661returned an error. This operator now returns the current version 18662of the ACPI CA core subsystem. 18663 18664Fixed a problem where objects passed as control method parameters 18665to AcpiEvaluateObject were always deleted at method termination. 18666However, these objects may end up being stored into the namespace 18667by the called method. The object reference count mechanism was 18668applied to these objects instead of a force delete. 18669 18670Fixed a problem where static strings or buffers (contained in the 18671AML code) that are declared as package elements within the ASL 18672code could cause a fault because the interpreter would attempt to 18673delete them. These objects are now marked with the "static 18674object" flag to prevent any attempt to delete them. 18675 18676Implemented an interpreter optimization to use operands directly 18677from the state object instead of extracting the operands to local 18678variables. This reduces stack use and code size, and improves 18679performance. 18680 18681The module exxface.c was eliminated as it was an unnecessary extra 18682layer of code. 18683 18684Current core subsystem library code sizes are shown below. These 18685are the code and data sizes for the acpica.lib produced by the 18686Microsoft Visual C++ 6.0 compiler, and these values do not include 18687any ACPI driver or OSPM code. The debug version of the code 18688includes the full debug trace mechanism -- leading to a much 18689larger code and data size. Note that these values will vary 18690depending on the efficiency of the compiler and the compiler 18691options used during generation. 18692 18693 Non-Debug Version: 65K Code, 5K Data, 70K Total 18694(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18695Total (Previously 195K) 18696 18697Linux: 18698 18699Support for ACPI 2.0 64-bit integers has been added. All ACPI 18700Integer objects are now 64 bits wide 18701 18702All Acpi data types and structures are now in lower case. Only 18703Acpi macros are upper case for differentiation. 18704 18705 Documentation: 18706 18707Changes to the external interfaces as described above. 18708 18709 ---------------------------------------- 18710Summary of changes for this label: 08_31_01 18711 18712 ACPI CA Core Subsystem: 18713 18714A bug with interpreter implementation of the ASL Divide operator 18715was found and fixed. The implicit function return value (not the 18716explicit store operands) was returning the remainder instead of 18717the quotient. This was a longstanding bug and it fixes several 18718known outstanding issues on various platforms. 18719 18720The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18721been further optimized for size. There are 700 invocations of the 18722DEBUG_PRINT macro alone, so each optimization reduces the size of 18723the debug version of the subsystem significantly. 18724 18725A stack trace mechanism has been implemented. The maximum stack 18726usage is about 2K on 32-bit platforms. The debugger command "stat 18727stack" will display the current maximum stack usage. 18728 18729All public symbols and global variables within the subsystem are 18730now prefixed with the string "Acpi". This keeps all of the 18731symbols grouped together in a kernel map, and avoids conflicts 18732with other kernel subsystems. 18733 18734Most of the internal fixed lookup tables have been moved into the 18735code segment via the const operator. 18736 18737Several enhancements have been made to the interpreter to both 18738reduce the code size and improve performance. 18739 18740Current core subsystem library code sizes are shown below. These 18741are the code and data sizes for the acpica.lib produced by the 18742Microsoft Visual C++ 6.0 compiler, and these values do not include 18743any ACPI driver or OSPM code. The debug version of the code 18744includes the full debug trace mechanism which contains over 700 18745invocations of the DEBUG_PRINT macro, 500 function entry macro 18746invocations, and over 900 function exit macro invocations -- 18747leading to a much larger code and data size. Note that these 18748values will vary depending on the efficiency of the compiler and 18749the compiler options used during generation. 18750 18751 Non-Debug Version: 64K Code, 5K Data, 69K Total 18752Debug Version: 137K Code, 58K Data, 195K Total 18753 18754 Linux: 18755 18756Implemented wbinvd() macro, pending a kernel-wide definition. 18757 18758Fixed /proc/acpi/event to handle poll() and short reads. 18759 18760 ASL Compiler, version X2026: 18761 18762Fixed a problem introduced in the previous label where the AML 18763 18764code emitted for package objects produced packages with zero 18765length. 18766 18767 ---------------------------------------- 18768Summary of changes for this label: 08_16_01 18769 18770ACPI CA Core Subsystem: 18771 18772The following ACPI 2.0 ASL operators have been implemented in the 18773AML interpreter (These are already supported by the Intel ASL 18774compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18775ToBuffer. Support for 64-bit AML constants is implemented in the 18776AML parser, debugger, and disassembler. 18777 18778The internal memory tracking mechanism (leak detection code) has 18779been upgraded to reduce the memory overhead (a separate tracking 18780block is no longer allocated for each memory allocation), and now 18781supports all of the internal object caches. 18782 18783The data structures and code for the internal object caches have 18784been coelesced and optimized so that there is a single cache and 18785memory list data structure and a single group of functions that 18786implement generic cache management. This has reduced the code 18787size in both the debug and release versions of the subsystem. 18788 18789The DEBUG_PRINT macro(s) have been optimized for size and replaced 18790by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18791different, because it generates a single call to an internal 18792function. This results in a savings of about 90 bytes per 18793invocation, resulting in an overall code and data savings of about 1879416% in the debug version of the subsystem. 18795 18796 Linux: 18797 18798Fixed C3 disk corruption problems and re-enabled C3 on supporting 18799machines. 18800 18801Integrated low-level sleep code by Patrick Mochel. 18802 18803Further tweaked source code Linuxization. 18804 18805Other minor fixes. 18806 18807 ASL Compiler: 18808 18809Support for ACPI 2.0 variable length packages is fixed/completed. 18810 18811Fixed a problem where the optional length parameter for the ACPI 188122.0 ToString operator. 18813 18814Fixed multiple extraneous error messages when a syntax error is 18815detected within the declaration line of a control method. 18816 18817 ---------------------------------------- 18818Summary of changes for this label: 07_17_01 18819 18820ACPI CA Core Subsystem: 18821 18822Added a new interface named AcpiGetFirmwareTable to obtain any 18823ACPI table via the ACPI signature. The interface can be called at 18824any time during kernel initialization, even before the kernel 18825virtual memory manager is initialized and paging is enabled. This 18826allows kernel subsystems to obtain ACPI tables very early, even 18827before the ACPI CA subsystem is initialized. 18828 18829Fixed a problem where Fields defined with the AnyAcc attribute 18830could be resolved to the incorrect address under the following 18831conditions: 1) the field width is larger than 8 bits and 2) the 18832parent operation region is not defined on a DWORD boundary. 18833 18834Fixed a problem where the interpreter is not being locked during 18835namespace initialization (during execution of the _INI control 18836methods), causing an error when an attempt is made to release it 18837later. 18838 18839ACPI 2.0 support in the AML Interpreter has begun and will be 18840ongoing throughout the rest of this year. In this label, The Mod 18841operator is implemented. 18842 18843Added a new data type to contain full PCI addresses named 18844ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18845and Function values. 18846 18847 Linux: 18848 18849Enhanced the Linux version of the source code to change most 18850capitalized ACPI type names to lowercase. For example, all 18851instances of ACPI_STATUS are changed to acpi_status. This will 18852result in a large diff, but the change is strictly cosmetic and 18853aligns the CA code closer to the Linux coding standard. 18854 18855OSL Interfaces: 18856 18857The interfaces to the PCI configuration space have been changed to 18858add the PCI Segment number and to split the single 32-bit combined 18859DeviceFunction field into two 16-bit fields. This was 18860accomplished by moving the four values that define an address in 18861PCI configuration space (segment, bus, device, and function) to 18862the new ACPI_PCI_ID structure. 18863 18864The changes to the PCI configuration space interfaces led to a 18865reexamination of the complete set of address space access 18866interfaces for PCI, I/O, and Memory. The previously existing 18 18867interfaces have proven difficult to maintain (any small change 18868must be propagated across at least 6 interfaces) and do not easily 18869allow for future expansion to 64 bits if necessary. Also, on some 18870systems, it would not be appropriate to demultiplex the access 18871width (8, 16, 32,or 64) before calling the OSL if the 18872corresponding native OS interfaces contain a similar access width 18873parameter. For these reasons, the 18 address space interfaces 18874have been replaced by these 6 new ones: 18875 18876AcpiOsReadPciConfiguration 18877AcpiOsWritePciConfiguration 18878AcpiOsReadMemory 18879AcpiOsWriteMemory 18880AcpiOsReadPort 18881AcpiOsWritePort 18882 18883Added a new interface named AcpiOsGetRootPointer to allow the OSL 18884to perform the platform and/or OS-specific actions necessary to 18885obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18886interface will simply call down to the CA core to perform the low- 18887memory search for the table. On IA-64, the RSDP is obtained from 18888EFI. Migrating this interface to the OSL allows the CA core to 18889 18890remain OS and platform independent. 18891 18892Added a new interface named AcpiOsSignal to provide a generic 18893"function code and pointer" interface for various miscellaneous 18894signals and notifications that must be made to the host OS. The 18895first such signals are intended to support the ASL Fatal and 18896Breakpoint operators. In the latter case, the AcpiOsBreakpoint 18897interface has been obsoleted. 18898 18899The definition of the AcpiFormatException interface has been 18900changed to simplify its use. The caller no longer must supply a 18901buffer to the call; A pointer to a const string is now returned 18902directly. This allows the call to be easily used in printf 18903statements, etc. since the caller does not have to manage a local 18904buffer. 18905 18906 18907 ASL Compiler, Version X2025: 18908 18909The ACPI 2.0 Switch/Case/Default operators have been implemented 18910and are fully functional. They will work with all ACPI 1.0 18911interpreters, since the operators are simply translated to If/Else 18912pairs. 18913 18914The ACPI 2.0 ElseIf operator is implemented and will also work 18915with 1.0 interpreters, for the same reason. 18916 18917Implemented support for ACPI 2.0 variable-length packages. These 18918packages have a separate opcode, and their size is determined by 18919the interpreter at run-time. 18920 18921Documentation The ACPI CA Programmer Reference has been updated to 18922reflect the new interfaces and changes to existing interfaces. 18923 18924 ------------------------------------------ 18925Summary of changes for this label: 06_15_01 18926 18927 ACPI CA Core Subsystem: 18928 18929Fixed a problem where a DWORD-accessed field within a Buffer 18930object would get its byte address inadvertently rounded down to 18931the nearest DWORD. Buffers are always Byte-accessible. 18932 18933 ASL Compiler, version X2024: 18934 18935Fixed a problem where the Switch() operator would either fault or 18936hang the compiler. Note however, that the AML code for this ACPI 189372.0 operator is not yet implemented. 18938 18939Compiler uses the new AcpiOsGetTimer interface to obtain compile 18940timings. 18941 18942Implementation of the CreateField operator automatically converts 18943a reference to a named field within a resource descriptor from a 18944byte offset to a bit offset if required. 18945 18946Added some missing named fields from the resource descriptor 18947support. These are the names that are automatically created by the 18948compiler to reference fields within a descriptor. They are only 18949valid at compile time and are not passed through to the AML 18950interpreter. 18951 18952Resource descriptor named fields are now typed as Integers and 18953subject to compile-time typechecking when used in expressions. 18954 18955 ------------------------------------------ 18956Summary of changes for this label: 05_18_01 18957 18958 ACPI CA Core Subsystem: 18959 18960Fixed a couple of problems in the Field support code where bits 18961from adjacent fields could be returned along with the proper field 18962bits. Restructured the field support code to improve performance, 18963readability and maintainability. 18964 18965New DEBUG_PRINTP macro automatically inserts the procedure name 18966into the output, saving hundreds of copies of procedure name 18967strings within the source, shrinking the memory footprint of the 18968debug version of the core subsystem. 18969 18970 Source Code Structure: 18971 18972The source code directory tree was restructured to reflect the 18973current organization of the component architecture. Some files 18974and directories have been moved and/or renamed. 18975 18976 Linux: 18977 18978Fixed leaking kacpidpc processes. 18979 18980Fixed queueing event data even when /proc/acpi/event is not 18981opened. 18982 18983 ASL Compiler, version X2020: 18984 18985Memory allocation performance enhancement - over 24X compile time 18986improvement on large ASL files. Parse nodes and namestring 18987buffers are now allocated from a large internal compiler buffer. 18988 18989The temporary .SRC file is deleted unless the "-s" option is 18990specified 18991 18992The "-d" debug output option now sends all output to the .DBG file 18993instead of the console. 18994 18995"External" second parameter is now optional 18996 18997"ElseIf" syntax now properly allows the predicate 18998 18999Last operand to "Load" now recognized as a Target operand 19000 19001Debug object can now be used anywhere as a normal object. 19002 19003ResourceTemplate now returns an object of type BUFFER 19004 19005EISAID now returns an object of type INTEGER 19006 19007"Index" now works with a STRING operand 19008 19009"LoadTable" now accepts optional parameters 19010 19011"ToString" length parameter is now optional 19012 19013"Interrupt (ResourceType," parse error fixed. 19014 19015"Register" with a user-defined region space parse error fixed 19016 19017Escaped backslash at the end of a string ("\\") scan/parse error 19018fixed 19019 19020"Revision" is now an object of type INTEGER. 19021 19022 19023 19024------------------------------------------ 19025Summary of changes for this label: 05_02_01 19026 19027Linux: 19028 19029/proc/acpi/event now blocks properly. 19030 19031Removed /proc/sys/acpi. You can still dump your DSDT from 19032/proc/acpi/dsdt. 19033 19034 ACPI CA Core Subsystem: 19035 19036Fixed a problem introduced in the previous label where some of the 19037"small" resource descriptor types were not recognized. 19038 19039Improved error messages for the case where an ASL Field is outside 19040the range of the parent operation region. 19041 19042 ASL Compiler, version X2018: 19043 19044 19045Added error detection for ASL Fields that extend beyond the length 19046of the parent operation region (only if the length of the region 19047is known at compile time.) This includes fields that have a 19048minimum access width that is smaller than the parent region, and 19049individual field units that are partially or entirely beyond the 19050extent of the parent. 19051 19052 19053 19054------------------------------------------ 19055Summary of changes for this label: 04_27_01 19056 19057 ACPI CA Core Subsystem: 19058 19059Fixed a problem where the namespace mutex could be released at the 19060wrong time during execution of AcpiRemoveAddressSpaceHandler. 19061 19062Added optional thread ID output for debug traces, to simplify 19063debugging of multiple threads. Added context switch notification 19064when the debug code realizes that a different thread is now 19065executing ACPI code. 19066 19067Some additional external data types have been prefixed with the 19068string "ACPI_" for consistency. This may effect existing code. 19069The data types affected are the external callback typedefs - e.g., 19070 19071WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 19072 19073 Linux: 19074 19075Fixed an issue with the OSL semaphore implementation where a 19076thread was waking up with an error from receiving a SIGCHLD 19077signal. 19078 19079Linux version of ACPI CA now uses the system C library for string 19080manipulation routines instead of a local implementation. 19081 19082Cleaned up comments and removed TBDs. 19083 19084 ASL Compiler, version X2017: 19085 19086Enhanced error detection and reporting for all file I/O 19087operations. 19088 19089 Documentation: 19090 19091Programmer Reference updated to version 1.06. 19092 19093 19094 19095------------------------------------------ 19096Summary of changes for this label: 04_13_01 19097 19098 ACPI CA Core Subsystem: 19099 19100Restructured support for BufferFields and RegionFields. 19101BankFields support is now fully operational. All known 32-bit 19102limitations on field sizes have been removed. Both BufferFields 19103and (Operation) RegionFields are now supported by the same field 19104management code. 19105 19106Resource support now supports QWORD address and IO resources. The 1910716/32/64 bit address structures and the Extended IRQ structure 19108have been changed to properly handle Source Resource strings. 19109 19110A ThreadId of -1 is now used to indicate a "mutex not acquired" 19111condition internally and must never be returned by AcpiOsThreadId. 19112This reserved value was changed from 0 since Unix systems allow a 19113thread ID of 0. 19114 19115Linux: 19116 19117Driver code reorganized to enhance portability 19118 19119Added a kernel configuration option to control ACPI_DEBUG 19120 19121Fixed the EC driver to honor _GLK. 19122 19123ASL Compiler, version X2016: 19124 19125Fixed support for the "FixedHw" keyword. Previously, the FixedHw 19126address space was set to 0, not 0x7f as it should be. 19127 19128 ------------------------------------------ 19129Summary of changes for this label: 03_13_01 19130 19131 ACPI CA Core Subsystem: 19132 19133During ACPI initialization, the _SB_._INI method is now run if 19134present. 19135 19136Notify handler fix - notifies are deferred until the parent method 19137completes execution. This fixes the "mutex already acquired" 19138issue seen occasionally. 19139 19140Part of the "implicit conversion" rules in ACPI 2.0 have been 19141found to cause compatibility problems with existing ASL/AML. The 19142convert "result-to-target-type" implementation has been removed 19143for stores to method Args and Locals. Source operand conversion 19144is still fully implemented. Possible changes to ACPI 2.0 19145specification pending. 19146 19147Fix to AcpiRsCalculatePciRoutingTableLength to return correct 19148length. 19149 19150Fix for compiler warnings for 64-bit compiles. 19151 19152 Linux: 19153 19154/proc output aligned for easier parsing. 19155 19156Release-version compile problem fixed. 19157 19158New kernel configuration options documented in Configure.help. 19159 19160IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 19161context" message. 19162 19163 OSPM: 19164 19165Power resource driver integrated with bus manager. 19166 19167Fixed kernel fault during active cooling for thermal zones. 19168 19169Source Code: 19170 19171The source code tree has been restructured. 19172 19173 19174 19175------------------------------------------ 19176Summary of changes for this label: 03_02_01 19177 19178 Linux OS Services Layer (OSL): 19179 19180Major revision of all Linux-specific code. 19181 19182Modularized all ACPI-specific drivers. 19183 19184Added new thermal zone and power resource drivers. 19185 19186Revamped /proc interface (new functionality is under /proc/acpi). 19187 19188New kernel configuration options. 19189 19190 Linux known issues: 19191 19192New kernel configuration options not documented in Configure.help 19193yet. 19194 19195 19196Module dependencies not currently implemented. If used, they 19197should be loaded in this order: busmgr, power, ec, system, 19198processor, battery, ac_adapter, button, thermal. 19199 19200Modules will not load if CONFIG_MODVERSION is set. 19201 19202IBM 600E - entering S5 may reboot instead of shutting down. 19203 19204IBM 600E - Sleep button may generate "Invalid <NULL> context" 19205message. 19206 19207Some systems may fail with "execution mutex already acquired" 19208message. 19209 19210 ACPI CA Core Subsystem: 19211 19212Added a new OSL Interface, AcpiOsGetThreadId. This was required 19213for the deadlock detection code. Defined to return a non-zero, 32- 19214bit thread ID for the currently executing thread. May be a non- 19215zero constant integer on single-thread systems. 19216 19217Implemented deadlock detection for internal subsystem mutexes. We 19218may add conditional compilation for this code (debug only) later. 19219 19220ASL/AML Mutex object semantics are now fully supported. This 19221includes multiple acquires/releases by owner and support for the 19222 19223Mutex SyncLevel parameter. 19224 19225A new "Force Release" mechanism automatically frees all ASL 19226Mutexes that have been acquired but not released when a thread 19227exits the interpreter. This forces conformance to the ACPI spec 19228("All mutexes must be released when an invocation exits") and 19229prevents deadlocked ASL threads. This mechanism can be expanded 19230(later) to monitor other resource acquisitions if OEM ASL code 19231continues to misbehave (which it will). 19232 19233Several new ACPI exception codes have been added for the Mutex 19234support. 19235 19236Recursive method calls are now allowed and supported (the ACPI 19237spec does in fact allow recursive method calls.) The number of 19238recursive calls is subject to the restrictions imposed by the 19239SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 19240parameter. 19241 19242Implemented support for the SyncLevel parameter for control 19243methods (ACPI 2.0 feature) 19244 19245Fixed a deadlock problem when multiple threads attempted to use 19246the interpreter. 19247 19248Fixed a problem where the string length of a String package 19249element was not always set in a package returned from 19250AcpiEvaluateObject. 19251 19252Fixed a problem where the length of a String package element was 19253not always included in the length of the overall package returned 19254from AcpiEvaluateObject. 19255 19256Added external interfaces (Acpi*) to the ACPI debug memory 19257manager. This manager keeps a list of all outstanding 19258allocations, and can therefore detect memory leaks and attempts to 19259free memory blocks more than once. Useful for code such as the 19260power manager, etc. May not be appropriate for device drivers. 19261Performance with the debug code enabled is slow. 19262 19263The ACPI Global Lock is now an optional hardware element. 19264 19265 ASL Compiler Version X2015: 19266 19267Integrated changes to allow the compiler to be generated on 19268multiple platforms. 19269 19270Linux makefile added to generate the compiler on Linux 19271 19272 Source Code: 19273 19274All platform-specific headers have been moved to their own 19275subdirectory, Include/Platform. 19276 19277New source file added, Interpreter/ammutex.c 19278 19279New header file, Include/acstruct.h 19280 19281 Documentation: 19282 19283The programmer reference has been updated for the following new 19284interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 19285 19286 ------------------------------------------ 19287Summary of changes for this label: 02_08_01 19288 19289Core ACPI CA Subsystem: Fixed a problem where an error was 19290incorrectly returned if the return resource buffer was larger than 19291the actual data (in the resource interfaces). 19292 19293References to named objects within packages are resolved to the 19294 19295full pathname string before packages are returned directly (via 19296the AcpiEvaluateObject interface) or indirectly via the resource 19297interfaces. 19298 19299Linux OS Services Layer (OSL): 19300 19301Improved /proc battery interface. 19302 19303 19304Added C-state debugging output and other miscellaneous fixes. 19305 19306ASL Compiler Version X2014: 19307 19308All defined method arguments can now be used as local variables, 19309including the ones that are not actually passed in as parameters. 19310The compiler tracks initialization of the arguments and issues an 19311exception if they are used without prior assignment (just like 19312locals). 19313 19314The -o option now specifies a filename prefix that is used for all 19315output files, including the AML output file. Otherwise, the 19316default behavior is as follows: 1) the AML goes to the file 19317specified in the DSDT. 2) all other output files use the input 19318source filename as the base. 19319 19320 ------------------------------------------ 19321Summary of changes for this label: 01_25_01 19322 19323Core ACPI CA Subsystem: Restructured the implementation of object 19324store support within the interpreter. This includes support for 19325the Store operator as well as any ASL operators that include a 19326target operand. 19327 19328Partially implemented support for Implicit Result-to-Target 19329conversion. This is when a result object is converted on the fly 19330to the type of an existing target object. Completion of this 19331support is pending further analysis of the ACPI specification 19332concerning this matter. 19333 19334CPU-specific code has been removed from the subsystem (hardware 19335directory). 19336 19337New Power Management Timer functions added 19338 19339Linux OS Services Layer (OSL): Moved system state transition code 19340to the core, fixed it, and modified Linux OSL accordingly. 19341 19342Fixed C2 and C3 latency calculations. 19343 19344 19345We no longer use the compilation date for the version message on 19346initialization, but retrieve the version from AcpiGetSystemInfo(). 19347 19348Incorporated for fix Sony VAIO machines. 19349 19350Documentation: The Programmer Reference has been updated and 19351reformatted. 19352 19353 19354ASL Compiler: Version X2013: Fixed a problem where the line 19355numbering and error reporting could get out of sync in the 19356presence of multiple include files. 19357 19358 ------------------------------------------ 19359Summary of changes for this label: 01_15_01 19360 19361Core ACPI CA Subsystem: 19362 19363Implemented support for type conversions in the execution of the 19364ASL Concatenate operator (The second operand is converted to 19365match the type of the first operand before concatenation.) 19366 19367Support for implicit source operand conversion is partially 19368implemented. The ASL source operand types Integer, Buffer, and 19369String are freely interchangeable for most ASL operators and are 19370converted by the interpreter on the fly as required. Implicit 19371Target operand conversion (where the result is converted to the 19372target type before storing) is not yet implemented. 19373 19374Support for 32-bit and 64-bit BCD integers is implemented. 19375 19376Problem fixed where a field read on an aligned field could cause a 19377read past the end of the field. 19378 19379New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 19380does not return a value, but the caller expects one. (The ASL 19381compiler flags this as a warning.) 19382 19383ASL Compiler: 19384 19385Version X2011: 193861. Static typechecking of all operands is implemented. This 19387prevents the use of invalid objects (such as using a Package where 19388an Integer is required) at compile time instead of at interpreter 19389run-time. 193902. The ASL source line is printed with ALL errors and warnings. 193913. Bug fix for source EOF without final linefeed. 193924. Debug option is split into a parse trace and a namespace trace. 193935. Namespace output option (-n) includes initial values for 19394integers and strings. 193956. Parse-only option added for quick syntax checking. 193967. Compiler checks for duplicate ACPI name declarations 19397 19398Version X2012: 193991. Relaxed typechecking to allow interchangeability between 19400strings, integers, and buffers. These types are now converted by 19401the interpreter at runtime. 194022. Compiler reports time taken by each internal subsystem in the 19403debug output file. 19404 19405 19406 ------------------------------------------ 19407Summary of changes for this label: 12_14_00 19408 19409ASL Compiler: 19410 19411This is the first official release of the compiler. Since the 19412compiler requires elements of the Core Subsystem, this label 19413synchronizes everything. 19414 19415------------------------------------------ 19416Summary of changes for this label: 12_08_00 19417 19418 19419Fixed a problem where named references within the ASL definition 19420of both OperationRegions and CreateXXXFields did not work 19421properly. The symptom was an AE_AML_OPERAND_TYPE during 19422initialization of the region/field. This is similar (but not 19423related internally) to the problem that was fixed in the last 19424label. 19425 19426Implemented both 32-bit and 64-bit support for the BCD ASL 19427functions ToBCD and FromBCD. 19428 19429Updated all legal headers to include "2000" in the copyright 19430years. 19431 19432 ------------------------------------------ 19433Summary of changes for this label: 12_01_00 19434 19435Fixed a problem where method invocations within the ASL definition 19436of both OperationRegions and CreateXXXFields did not work 19437properly. The symptom was an AE_AML_OPERAND_TYPE during 19438initialization of the region/field: 19439 19440 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19441[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19442(0x3005) 19443 19444Fixed a problem where operators with more than one nested 19445subexpression would fail. The symptoms were varied, by mostly 19446AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19447problem that has gone unnoticed until now. 19448 19449 Subtract (Add (1,2), Multiply (3,4)) 19450 19451Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19452previous build (The prefix part of a relative path was handled 19453incorrectly). 19454 19455Fixed a problem where Operation Region initialization failed if 19456the operation region name was a "namepath" instead of a simple 19457"nameseg". Symptom was an AE_NO_OPERAND error. 19458 19459Fixed a problem where an assignment to a local variable via the 19460indirect RefOf mechanism only worked for the first such 19461assignment. Subsequent assignments were ignored. 19462 19463 ------------------------------------------ 19464Summary of changes for this label: 11_15_00 19465 19466ACPI 2.0 table support with backwards support for ACPI 1.0 and the 194670.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19468the AML interpreter does NOT have support for the new 2.0 ASL 19469grammar terms at this time. 19470 19471All ACPI hardware access is via the GAS structures in the ACPI 2.0 19472FADT. 19473 19474All physical memory addresses across all platforms are now 64 bits 19475wide. Logical address width remains dependent on the platform 19476(i.e., "void *"). 19477 19478AcpiOsMapMemory interface changed to a 64-bit physical address. 19479 19480The AML interpreter integer size is now 64 bits, as per the ACPI 194812.0 specification. 19482 19483For backwards compatibility with ACPI 1.0, ACPI tables with a 19484revision number less than 2 use 32-bit integers only. 19485 19486Fixed a problem where the evaluation of OpRegion operands did not 19487always resolve them to numbers properly. 19488 19489------------------------------------------ 19490Summary of changes for this label: 10_20_00 19491 19492Fix for CBN_._STA issue. This fix will allow correct access to 19493CBN_ OpRegions when the _STA returns 0x8. 19494 19495Support to convert ACPI constants (Ones, Zeros, One) to actual 19496values before a package object is returned 19497 19498Fix for method call as predicate to if/while construct causing 19499incorrect if/while behavior 19500 19501Fix for Else block package lengths sometimes calculated wrong (if 19502block > 63 bytes) 19503 19504Fix for Processor object length field, was always zero 19505 19506Table load abort if FACP sanity check fails 19507 19508Fix for problem with Scope(name) if name already exists 19509 19510Warning emitted if a named object referenced cannot be found 19511(resolved) during method execution. 19512 19513 19514 19515 19516 19517------------------------------------------ 19518Summary of changes for this label: 9_29_00 19519 19520New table initialization interfaces: AcpiInitializeSubsystem no 19521longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19522necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19523>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19524AcpiLoadTables 19525 19526Note: These interface changes require changes to all existing OSDs 19527 19528The PCI_Config default address space handler is always installed 19529at the root namespace object. 19530 19531------------------------------------------- 19532Summary of changes for this label: 09_15_00 19533 19534The new initialization architecture is implemented. New 19535interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19536AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19537 19538(Namespace is automatically loaded when a table is loaded) 19539 19540The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1954152 bytes to 32 bytes. There is usually one of these for every 19542namespace object, so the memory savings is significant. 19543 19544Implemented just-in-time evaluation of the CreateField operators. 19545 19546Bug fixes for IA-64 support have been integrated. 19547 19548Additional code review comments have been implemented 19549 19550The so-called "third pass parse" has been replaced by a final walk 19551through the namespace to initialize all operation regions (address 19552spaces) and fields that have not yet been initialized during the 19553execution of the various _INI and REG methods. 19554 19555New file - namespace/nsinit.c 19556 19557------------------------------------------- 19558Summary of changes for this label: 09_01_00 19559 19560Namespace manager data structures have been reworked to change the 19561primary object from a table to a single object. This has 19562resulted in dynamic memory savings of 3X within the namespace and 195632X overall in the ACPI CA subsystem. 19564 19565Fixed problem where the call to AcpiEvFindPciRootBuses was 19566inadvertently left commented out. 19567 19568Reduced the warning count when generating the source with the GCC 19569compiler. 19570 19571Revision numbers added to each module header showing the 19572SourceSafe version of the file. Please refer to this version 19573number when giving us feedback or comments on individual modules. 19574 19575The main object types within the subsystem have been renamed to 19576clarify their purpose: 19577 19578ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19579ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19580ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19581 19582NOTE: no changes to the initialization sequence are included in 19583this label. 19584 19585------------------------------------------- 19586Summary of changes for this label: 08_23_00 19587 19588Fixed problem where TerminateControlMethod was being called 19589multiple times per method 19590 19591Fixed debugger problem where single stepping caused a semaphore to 19592be oversignalled 19593 19594Improved performance through additional parse object caching - 19595added ACPI_EXTENDED_OP type 19596 19597------------------------------------------- 19598Summary of changes for this label: 08_10_00 19599 19600Parser/Interpreter integration: Eliminated the creation of 19601complete parse trees for ACPI tables and control methods. 19602Instead, parse subtrees are created and then deleted as soon as 19603they are processed (Either entered into the namespace or executed 19604by the interpreter). This reduces the use of dynamic kernel 19605memory significantly. (about 10X) 19606 19607Exception codes broken into classes and renumbered. Be sure to 19608recompile all code that includes acexcep.h. Hopefully we won't 19609have to renumber the codes again now that they are split into 19610classes (environment, programmer, AML code, ACPI table, and 19611internal). 19612 19613Fixed some additional alignment issues in the Resource Manager 19614subcomponent 19615 19616Implemented semaphore tracking in the AcpiExec utility, and fixed 19617several places where mutexes/semaphores were being unlocked 19618without a corresponding lock operation. There are no known 19619semaphore or mutex "leaks" at this time. 19620 19621Fixed the case where an ASL Return operator is used to return an 19622unnamed package. 19623 19624------------------------------------------- 19625Summary of changes for this label: 07_28_00 19626 19627Fixed a problem with the way addresses were calculated in 19628AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19629manifested itself when a Field was created with WordAccess or 19630DwordAccess, but the field unit defined within the Field was less 19631 19632than a Word or Dword. 19633 19634Fixed a problem in AmlDumpOperands() module's loop to pull 19635operands off of the operand stack to display information. The 19636problem manifested itself as a TLB error on 64-bit systems when 19637accessing an operand stack with two or more operands. 19638 19639Fixed a problem with the PCI configuration space handlers where 19640context was getting confused between accesses. This required a 19641change to the generic address space handler and address space 19642setup definitions. Handlers now get both a global handler context 19643(this is the one passed in by the user when executing 19644AcpiInstallAddressSpaceHandler() and a specific region context 19645that is unique to each region (For example, the _ADR, _SEG and 19646_BBN values associated with a specific region). The generic 19647function definitions have changed to the following: 19648 19649typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19650UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19651*HandlerContext, // This used to be void *Context void 19652*RegionContext); // This is an additional parameter 19653 19654typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19655RegionHandle, UINT32 Function, void *HandlerContext, void 19656**RegionContext); // This used to be **ReturnContext 19657 19658------------------------------------------- 19659Summary of changes for this label: 07_21_00 19660 19661Major file consolidation and rename. All files within the 19662interpreter have been renamed as well as most header files. This 19663was done to prevent collisions with existing files in the host 19664OSs -- filenames such as "config.h" and "global.h" seem to be 19665quite common. The VC project files have been updated. All 19666makefiles will require modification. 19667 19668The parser/interpreter integration continues in Phase 5 with the 19669implementation of a complete 2-pass parse (the AML is parsed 19670twice) for each table; This avoids the construction of a huge 19671parse tree and therefore reduces the amount of dynamic memory 19672required by the subsystem. Greater use of the parse object cache 19673means that performance is unaffected. 19674 19675Many comments from the two code reviews have been rolled in. 19676 19677The 64-bit alignment support is complete. 19678 19679------------------------------------------- 19680Summary of changes for this label: 06_30_00 19681 19682With a nod and a tip of the hat to the technology of yesteryear, 19683we've added support in the source code for 80 column output 19684devices. The code is now mostly constrained to 80 columns or 19685less to support environments and editors that 1) cannot display 19686or print more than 80 characters on a single line, and 2) cannot 19687disable line wrapping. 19688 19689A major restructuring of the namespace data structure has been 19690completed. The result is 1) cleaner and more 19691understandable/maintainable code, and 2) a significant reduction 19692in the dynamic memory requirement for each named ACPI object 19693(almost half). 19694 19695------------------------------------------- 19696Summary of changes for this label: 06_23_00 19697 19698Linux support has been added. In order to obtain approval to get 19699the ACPI CA subsystem into the Linux kernel, we've had to make 19700quite a few changes to the base subsystem that will affect all 19701users (all the changes are generic and OS- independent). The 19702effects of these global changes have been somewhat far reaching. 19703Files have been merged and/or renamed and interfaces have been 19704renamed. The major changes are described below. 19705 19706Osd* interfaces renamed to AcpiOs* to eliminate namespace 19707pollution/confusion within our target kernels. All OSD 19708interfaces must be modified to match the new naming convention. 19709 19710Files merged across the subsystem. A number of the smaller source 19711and header files have been merged to reduce the file count and 19712increase the density of the existing files. There are too many 19713to list here. In general, makefiles that call out individual 19714files will require rebuilding. 19715 19716Interpreter files renamed. All interpreter files now have the 19717prefix am* instead of ie* and is*. 19718 19719Header files renamed: The acapi.h file is now acpixf.h. The 19720acpiosd.h file is now acpiosxf.h. We are removing references to 19721the acronym "API" since it is somewhat windowsy. The new name is 19722"external interface" or xface or xf in the filenames.j 19723 19724 19725All manifest constants have been forced to upper case (some were 19726mixed case.) Also, the string "ACPI_" has been prepended to many 19727(not all) of the constants, typedefs, and structs. 19728 19729The globals "DebugLevel" and "DebugLayer" have been renamed 19730"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19731 19732All other globals within the subsystem are now prefixed with 19733"AcpiGbl_" Internal procedures within the subsystem are now 19734prefixed with "Acpi" (with only a few exceptions). The original 19735two-letter abbreviation for the subcomponent remains after "Acpi" 19736- for example, CmCallocate became AcpiCmCallocate. 19737 19738Added a source code translation/conversion utility. Used to 19739generate the Linux source code, it can be modified to generate 19740other types of source as well. Can also be used to cleanup 19741existing source by removing extraneous spaces and blank lines. 19742Found in tools/acpisrc/* 19743 19744OsdUnMapMemory was renamed to OsdUnmapMemory and then 19745AcpiOsUnmapMemory. (UnMap became Unmap). 19746 19747A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19748When set to one, this indicates that the caller wants to use the 19749 19750semaphore as a mutex, not a counting semaphore. ACPI CA uses 19751both types. However, implementers of this call may want to use 19752different OS primitives depending on the type of semaphore 19753requested. For example, some operating systems provide separate 19754 19755"mutex" and "semaphore" interfaces - where the mutex interface is 19756much faster because it doesn't have all the overhead of a full 19757semaphore implementation. 19758 19759Fixed a deadlock problem where a method that accesses the PCI 19760address space can block forever if it is the first access to the 19761space. 19762 19763------------------------------------------- 19764Summary of changes for this label: 06_02_00 19765 19766Support for environments that cannot handle unaligned data 19767accesses (e.g. firmware and OS environments devoid of alignment 19768handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19769been added (via configurable macros) in these three areas: - 19770Transfer of data from the raw AML byte stream is done via byte 19771moves instead of word/dword/qword moves. - External objects are 19772aligned within the user buffer, including package elements (sub- 19773objects). - Conversion of name strings to UINT32 Acpi Names is now 19774done byte-wise. 19775 19776The Store operator was modified to mimic Microsoft's 19777implementation when storing to a Buffer Field. 19778 19779Added a check of the BM_STS bit before entering C3. 19780 19781The methods subdirectory has been obsoleted and removed. A new 19782file, cmeval.c subsumes the functionality. 19783 19784A 16-bit (DOS) version of AcpiExec has been developed. The 19785makefile is under the acpiexec directory. 19786