1 ---------------------------------------- 2 7 August 2025. Summary of changes for version 20250807: 3 4 Major changes: 5 6 Added option to skip the global lock for SMM - Huacai Chen 7 8 Fixed non-NUL terminated string implementations - Ahmed Salem 9 10 Fixed CCEL and CDAT templates - Ahmed Salem 11 12 Fixed a major Linux kernel bug (UAF) that was triggered by unequal number of method parameters (definition) vs arguments (invocation) in different places - Peter Williams, Hans de Goede, Rafael Wysocki 13 14 Define distinct D3 states (D3Hot and D3Cold) that help clarify the device behavior support - Aymeric Wibo 15 16 A few cleanups, improvements to existing table supports, small fixes, spelling corrections etc. 17 18 19 ---------------------------------------- 20 4 April 2025. Summary of changes for version 20250404: 21 22 Major changes: 23 24 Update all the copyright continuation year to 2025 in the license header of all files 25 26 Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony Luck & V L Sunil) 27 28 Add a license file to the project which is a great improvement (Dionna Glaze) 29 30 Update DMAR and TPM2 tables to support their latest versions (Alexey Neyman and Stuart Yoder) 31 32 A few fixes including local cache allocation, FFixedHW Region, attribute packing, string vs. non-string char array, vsnprintf()etc. along with some comments, spelling errors and code alignment (multiple awesome contributors) 33 34 35 ---------------------------------------- 36 12 December 2024. Summary of changes for version 20241212: 37 38 Major changes: 39 40 Fix 2 critical CVE addressing memory leaks - Seunghun Han 41 42 EINJ V2 updates - Zaid Alali (Ampere Computing) 43 44 CDAT updates - Ira Weiny (Intel Corporation) 45 46 Fix mutex handling, do not release ones that were never acquired - Daniil Tatianin 47 48 Experiment with new tag name format Ryyyy_mm_dd to solve chronological sorting problems 49 50 51 ---------------------------------------- 52 27 September 2024. Summary of changes for version 20240927: 53 54 Major changes: 55 56 Fix the acpixf.h file which caused issues for the last release (before this) 20240827 57 58 Fix the pointer offset for the SLIC table 59 60 Verify the local environment and GitHub commits are all in sync which was a problem with the second from last release (before this)20240322 (aka 20240323 - date issue) 61 62 63 64 ---------------------------------------- 65 27 August 2024. Summary of changes for version 20240827: 66 67 Major changes: 68 69 Fix the PHAT table working: ensure that the PHAT firmware health record offset works correctly, fix various sub-table offsets, prevent segmentation faults when encountering invalid device paths. Contributed by: Armin Wolf <W_Armin (a] gmx.de> 70 71 Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin <99danilt (a] gmail.com> 72 73 Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone (Fedora) <ahs3 (a] ahs3.net> 74 75 Add support for QWordPCC and DWordPCC by Jose Marinho (ARM) 76 77 Fix the integer to hex string conversions by Armin Wolf 78 79 Detecting FACS in reduced HW mode and allowing setting waking vector thereby waking up from S3 state 80 81 Fixing issues with crossing page boundaries when mapping operation regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD) 82 83 Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables 84 85 Fix multiple issues with table parsing, compilation and disassembly by Myra DeMere (Google) 86 87 Allow for more flexibility in _DSM usage. 88 89 90 ---------------------------------------- 91 22 March 2024. Summary of changes for version 20240322: 92 93 Major changes: 94 95 Update all the license header year from 2023 to 2024. 96 97 Fix table argument ordering to work properly with iasl. 98 99 Get rid of the annoying repeated warning types in MSVC and Windows. 100 101 Fix a test in ASLTS with edge case failure. 102 103 Fix a couple of issues with how GPEs are counted and enabled. 104 105 Add new tables for various architectures/OS, mainly RISC-V and also update many more. 106 107 Add an option to either make the output deterministic or non-deterministic. 108 109 Remove redundant checks, duplicated code and fix spellings in various files. 110 111 Fix flex arrays for C++ compilers and also make ACPICA overall more compatible with different compilers which throw warnings related to memory sanitization etc. 112 113 114 ---------------------------------------- 115 28 June 2023. Summary of changes for version 20230628: 116 117 0) Global changes: 118 119 Fixed 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 (a] nvidia.com. 120 121 Added 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 (a] intel.com. 122 123 Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5. 124 125 1) ACPICA kernel-resident subsystem: 126 127 Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang (a] intel.com. 128 129 Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang (a] intel.com. 130 131 1) ACPICA kernel-resident subsystem: 132 133 Fix 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. 134 135 Also, 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. 136 137 2) iASL Compiler/Disassembler and ACPICA tools:. 138 139 IASL/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. 140 141 AcpiExec: 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 (a] arm.com. 142 143 AcpiExec: 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 (a] arm.com. 144 ---------------------------------------- 145 31 March 2023. Summary of changes for version 20230331: 146 147 This release is available at https://acpica.org/downloads 148 149 0) Global changes: 150 151 152 Update all copyright notices to the year 2023. This effects all source 153 modules, as well as utility signons. 154 Add OS-specific support for Zephyr RTOS. 155 Fix miscellaneous code that accesses various objects. 156 Remove some dead code. 157 Add C ?Flexible Array? support. 158 Add support for 64 bit LoongArch compilation. 159 Add first batch of RISC-V related definitions. 160 Performed a global automated update to remove tabs, fix indentation 161 issues, etc. 162 163 1) ACPICA kernel-resident subsystem: 164 165 hwvalid: Drop port I/O validation. 166 167 2) ACPICA tools and utilities: 168 169 iASL: Added full macro support in the preprocessor. Example: 170 #define ABCD(a,b,c,d) a+b+c-d 171 172 Known macro support limitations (at this time): 173 No support for multi-line #define macros (backslash continuation 174 lines) 175 No support for the C-style ternary operator 176 No support for the stringizing operator (#) 177 No support for the concatenation (token pasting) operator (##) 178 No support for variable number of macro arguments 179 180 Add support for AMD Secure Processor Table (ASPT) version 1. 181 Add support for Arm's MPAM ACPI table version 2. 182 ACPI 6.5: MADT: add support for trace buffer extension in GICC. 183 Headers: Delete bogus NodeArray array of pointers from AEST table. 184 PHAT table support is still ongoing. 185 186 187 ---------------------------------------- 188 20 October 2022. Summary of changes for version 20221020: 189 190 This release is available at https://acpica.org/downloads 191 192 0) Global changes: 193 194 Allow disabling of -Werror. For distro maintainers having `-Werror` can 195 delay update of GCC. Since every GCC release might add new warnings that 196 were not yet captured, it might break the build of packages. With this 197 change, distros can now build with `NOWERROR=TRUE` instead of patching 198 either the errors or the makefiles. The default behavior keeps on using 199 `-Werror`. 200 201 1) ACPICA kernel-resident subsystem: 202 203 Added support for FFH Operation Region special context data. FFH(Fixed 204 Function Hardware) Opregion is approved to be added in ACPI 6.5 via code 205 first approach[1]. It requires special context data similar to GPIO and 206 Generic Serial Bus as it needs to know platform specific offset and 207 length. 208 209 Reverted this commit "executer/exsystem: Warn about sleeps greater than 210 10 ms." Due to user complaints about valid sleeps greater than 10ms seen 211 in some existing machines -- generating lots of warnings. 212 213 Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that 214 EBDA region must be at least 1KiB in size. Because this is not 215 guaranteed, it might happen that while scanning the memory for RSDP 216 pointer, the kernel touches memory above 640KiB. This is unwanted as the 217 VGA memory range may not be decoded or even present when running under 218 virtualization. 219 220 Check that EBDA pointer is in valid memory. If the memory at 0x40e is 221 uninitialized, the retrieved physical memory address of EBDA may be 222 beyond the low memory (i.e. above 640K). If so, the kernel may 223 unintentionally access the VGA memory, that might not be decoded or even 224 present in case of virtualization. 225 226 2) iASL Compiler/Disassembler and ACPICA tools: 227 228 Completed the existing partial support for the CDAT "table". Although 229 this isn't technically an ACPI table (It doesn't go into the XSDT), it is 230 possible to support this table in the Data Table compiler. Created one 231 new file, "utilities/utcksum.c", used to centralize checksum 232 generation/validation into one location. Includes changes to makefiles 233 and MSVC project files. 234 235 Updated support for the IORT table - update to version E.e 236 237 Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table 238 239 iASL: Added CCEL table to both compiler/disassembler. 240 241 iASL: NHLT table: Fixed compilation of optional undocumented fields 242 243 iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 244 ("iASL: Add CCEL table to both compiler/disassembler") introduced the 245 iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL 246 table member reference. To fix it, change ACPI_TDEL_OFFSET with 247 ACPI_CCEL_OFFSET. 248 249 ---------------------------------------- 250 31 March 2022. Summary of changes for version 20220331: 251 252 0) Global changes: 253 254 Update all copyright notices to the year 2022. This effects all source 255 modules, as well as utility signons. 256 257 258 1) ACPICA kernel-resident subsystem: 259 260 For the ASL Sleep() operator, issue a warning if the sleep value is 261 greater than 10 Milliseconds. Quick boottime is important, so warn about 262 sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 263 ms, so excessive delays should be called out. 10 ms is chosen randomly, 264 but three of such delays would already make up ten percent of the 265 boottime. 266 267 Namespace: Avoid attempting to walk the Namespace if the Namespace does 268 not exist. 269 270 AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the 271 LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a 272 pass/fail integer. Now load returns a pass/fail integer, as well as 273 storing the return value in an optional 2nd argument. 274 275 Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid 276 "performing pointer subtraction with a null pointer has undefined 277 behavior" compiler warnings, use uintptr_t and offsetof() that are always 278 available during Linux kernel builds to define ACPI_UINTPTR_T and the 279 ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code 280 in the Linux kernel. 281 282 Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted 283 by superm1. 284 285 executer/exsystem: Inform users about ACPI spec violation for the Stall() 286 operator. Values greater than 100 microseconds violate the ACPI 287 specification, so warn users about it. From the ACPI Specification 288 version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: 289 > The implementation of Stall is OS-specific, but must not relinquish 290 > control of the processor. Because of this, delays longer than 100 291 > microseconds must use Sleep instead of Stall. 292 293 294 2) iASL Compiler/Disassembler and ACPICA tools: 295 296 Data Table Compiler/Disassembler: Add support for the APMT table - ARM 297 Performance Monitoring Unit table. Submitted by @bwicaksononv. 298 299 Data Table Compiler/Disassembler: For MADT, add support for the OEM- 300 defined subtables (Types 0x80-0x7F). 301 302 Data Table Compiler: Fixed a problem with support for the SDEV table, 303 where a subtable Length was not computed correctly. 304 305 Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT 306 Acpi table support. 307 308 Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and 309 add template. Submitted by MasterDrogo. 310 311 Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: 312 iASL/NHLT: Rename linux specific structures to DeviceInfo to improve 313 readability of the code. 314 iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. 315 Undocumented bytes at the end of Endpoint Descriptor can be present 316 independently of Linux-specific structures. Their size can also vary. 317 iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 318 bytes of size and then an amount of bytes specified by size. All of the 319 terminators that I've seen had a size equal to 4, but theoretically it 320 can vary. 321 322 iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C). 323 324 iASL: Remove a remark due to excessive output. Removed a remark for 325 duplicate Offset() operators, due to a user complaint. 326 327 ---------------------------------------- 328 17 December 2021. Summary of changes for version 20211217: 329 330 1) ACPICA kernel-resident subsystem: 331 332 Hardware: Do not flush CPU cache when entering S4 and S5. According to 333 ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to 334 S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of 335 the sleep state. Blind cache flush on entering S5 causes problems for 336 TDX. 337 338 Avoid subobject buffer overflow when validating RSDP signature. Since the 339 Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to 340 it is only to a 4-char array, and so trying to read past the 4th 341 character, as will be done when it is an RSDP, reads beyond the bounds of 342 the accessed member. Contributed by jrtc27. 343 344 Add support for PCC Opregion special context data. PCC Opregion added in 345 ACPIC 6.3 requires special context data similar to GPIO and Generic 346 Serial Bus as it needs to know the internal PCC buffer and its length as 347 well as the PCC channel index when the opregion handler is being executed 348 by the OSPM. Adds support for the special context data needed by PCC 349 Opregion. Submitted by Sudeep Holla <sudeep.holla (a] arm.com> 350 351 2) iASL Compiler/Disassembler and ACPICA tools: 352 353 iASL: Completed compiler support for the NHLT ACPI table. 354 355 iASL/NHLT table: Fixed a reported problem where a fault would occur 356 during disassembly of a "Linux-Specific" section if the "Specific Data" 357 part was not present. 358 359 iASL: Added full support (compiler and disassembler) for the AGDI ACPI 360 table. Contributed by: Ilkka Koskinen <ilkka (a] os.amperecomputing.com>. 361 362 iASL: Added full support for the TDEL ACPI table. 363 364 iASL table compiler: FADT support updates: 365 1) Allow the 32-bit DSDT address to be zero. 366 2) Issue error if both the 32-bit and 64-bit DSDT addresses are zero. 367 368 iASL: Fix unaligned accesses to local cache allocations. Contributed by 369 jrtc27. 370 371 iASL: Open binary input files in binary mode, not text mode Affects 372 binary input AML files, as well as binary data table files, for 373 disassembly. 374 375 ---------------------------------------- 376 30 September 2021. Summary of changes for version 20210930: 377 378 This release is available at https://acpica.org/downloads 379 380 1) ACPICA kernel-resident subsystem: 381 382 Hardware: Avoid evaluating methods too early during system resume. During 383 wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called 384 and it tries to get memory from the OS in order to evaluate a control 385 method, but if KFENCE is enabled in the Linux kernel, the memory 386 allocation attempt causes an IRQ work to be queued and a self-IPI to be 387 sent to the CPU running the code which requires the memory controller to 388 be ready, so if that happens too early in the wakeup path, it doesn't 389 work. 390 391 Prevent that from taking place by calling AcpiGetSleepTypeData() for S0 392 upfront, when preparing to enter a given sleep state, and saving the data 393 obtained by it for later use during system wakeup. 394 395 Added a new _OSI string, "Windows 2020". Posted by superm1. 396 397 2) iASL Compiler/Disassembler and ACPICA tools: 398 399 iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS 400 objects: 401 New/latest rules: Under a Device Object: 402 1) If _PRS is present, must have _CRS and _SRS 403 2) If _SRS is present, must have _PRS (_PRS requires _CRS and 404 _SRS) 405 3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS 406 requires _CRS and _SRS) 407 4) If _SRS is present, probably should have a _DIS (Remark only) 408 409 iASL table disassembler: Added disassembly support for the NHLT ACPI 410 table. Note: support for Vendor-defined microphone arrays and SNR 411 extensions are not supported at this time -- mostly due to a lack of 412 example tables. Actual compiler support for NHLT is forthcoming. 413 414 Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It 415 uses the same subtable structure as the existing Generic Initiator 416 Affinity type. 417 418 Added the flag for online capable in the MADT, introduced in ACPI 6.3. 419 Posted by superm1. 420 421 3) ACPICA documentation: Updated the legal info (that appears at the 422 start of the Documents) to clarify distribution rights that are granted. 423 424 425 ---------------------------------------- 426 30 July 2021. Summary of changes for version 20210730: 427 428 This release is available at https://acpica.org/downloads 429 430 1) ACPICA kernel-resident subsystem: 431 432 2) iASL Compiler/Disassembler and ACPICA tools: 433 434 iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021). 435 Under the Device Object: 436 1) If _DIS is present, must have a _CRS and _SRS 437 2) If _PRS is present, must have a _CRS, _DIS, and _SRS 438 3) If _SRS is present, must have a _CRS and _DIS 439 A warning will be issued for each of these cases. 440 Note: For existing ASL/projects, these warnings may be disabled by 441 specifying this on the command line: 442 "-vw 3141" 443 444 iASL Table Disassembler/Table compiler: Fix for WPBT table with no 445 command-line arguments. Handle the case where the Command-line 446 Arguments table field does not exist (zero). 447 448 Headers: Add new DBG2 Serial Port Subtypes 449 The Microsoft Debug Port Table 2 (DBG2) specification revision 450 September 21, 2020 comprises additional Serial Port Subtypes [1]. 451 Reflect that in the actbl1.h header file. Submitted by: 452 semihalf-wojtas-marcin 453 454 iASL: Add full support for the AEST table (data compiler) 455 Includes support in the table compiler and the disassembler. 456 457 Add PRMT module header to facilitate parsing. 458 This structure is used in to parse PRMT in other Operating Systems 459 that relies on using subtable headers in order to parse ACPI tables. 460 Although the PRMT doesn't have "subtables" it has a list of module 461 information structures that act as subtables. 462 463 iASL: Table disassembler: Add missing strings to decode subtable types. 464 Includes the MADT and CEDT tables. 465 466 467 ---------------------------------------- 468 04 June 2021. Summary of changes for version 20210604: 469 470 1) ACPICA kernel-resident subsystem: 471 472 Cleaned up (delete) the context mutex during local address handler object 473 deletion. 474 475 Fixed a memory leak caused by the _CID repair function. 476 477 Added support for PlatformRtMechanism OperationRegion handler. Adds a new 478 utility function, AcpiUtConvertUuidToString. Writing a buffer to a 479 PlatformRtMechanism fieldunit invokes a bidirectional transaction. The 480 input buffer contains 26 bytes containing 9 bytes of status, a command 481 byte and a 16-byte UUID. This change will simply pass this incoming 482 buffer to a handler registered by the OS. 483 484 2) iASL Compiler/Disassembler and ACPICA tools: 485 486 Added full support for the PRMT ACPI table (Platform Runtime Mechanism 487 Table). Includes support in the iASL compiler, the disassembler, and the 488 template generator. 489 490 Added full support for the BDAT (BIOS Data ACPI Table) ACPI table. 491 492 Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI 493 table. 494 495 Added full support for the SVKL (Storage Volume Key Location Table) ACPI 496 table. Header file support from Kuppuswamy Sathyanarayanan 497 <sathyanarayanan.kuppuswamy (a] linux.intel.com>. 498 499 Completed full support for the IVRS (I/O Virtualization Reporting 500 Structure) ACPI table. Added compiler support for IVRS, updated 501 disassembler support. Adds a new utility, UtIsIdInteger, to determine if 502 a HID/CID is an integer or a string. 503 504 Headers: Added more structs to the CEDT table: CXL fixed memory window 505 structure. 506 507 ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure. 508 509 ---------------------------------------- 510 31 March 2021. Summary of changes for version 20210331: 511 512 This release is available at https://acpica.org/downloads, and includes 513 all ACPI 6.4 support 514 515 1) ACPICA kernel-resident subsystem: 516 ACPI 6.4: iASL: deprecate DDBHandleObj keyword 517 Always create namespace nodes using AcpiNsCreateNode(). ACPICA is 518 allocating an object using kmalloc(), but then frees it 519 using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. 520 Fixed a race condition in generic serial bus operation region handler. 521 Fixed by Hans de Goede. 522 523 2) iASL Compiler/Disassembler and ACPICA tools: 524 525 ACPI 6.4: NFIT: add Location Cookie field 526 ACPI 6.4: HMAT: add new fields/flags 527 ACPI 6.4: Add new flags in SRAT 528 ACPI 6.4: add SDEV secure access components 529 ACPI 6.4: add Csi2Bus resource template 530 ACPI 6.4: add support for PHAT table 531 ACPI 6.4: add support for PMTT table 532 Add disassembly support for the IVRS table. Compilation of the table is 533 not yet complete. 534 Fixed a potential infinite loop due to type mismatch. The for-loop is 535 using a UINT8 counter and comparing the upper 536 limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In 537 the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i 538 will wrap around to zero and the loop will never exit. I suspect 539 the AslGbl_ExpectedMessagesIndex is never that high, but fixing 540 this does future proof the code and cleans up static analysis 541 warnings.Colin King. 542 iASL/TableCompiler: update it with IORT table E.b revision changes. From 543 shamiali2008. 544 iASL/TableCompiler: Add compilation support for the VIOT table. Signed- 545 off-by: Jean-Philippe Brucker. 546 iASL/TableCompiler: Add compilation support for CEDT table. Also, update 547 the CEDT template. 548 549 ---------------------------------------- 550 05 January 2021. Summary of changes for version 20210105: 551 552 This release is available at https://acpica.org/downloads 553 554 555 1) ACPICA kernel-resident subsystem: 556 557 Updated all copyrights to 2021. This affects all ACPICA source code 558 modules. 559 560 2) iASL Compiler/Disassembler and ACPICA tools: 561 562 ASL test suite (ASLTS): Updated all copyrights to 2021. 563 564 Tools and utilities: Updated all signon copyrights to 2021. 565 566 iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC, 567 MTMR. Al Stone. 568 569 570 ---------------------------------------- 571 17 December 2020. Summary of changes for version 20201217: 572 573 This release is available at https://acpica.org/downloads 574 575 576 1) ACPICA kernel-resident subsystem: 577 578 Note: The implementation of ACPI 6.4 is underway, and is expected to be 579 mostly finished next month, when ACPI 6.4 is released. 580 581 From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added 582 several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to 583 enable this. 584 585 AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0. 586 These included a few casts, as well as a null pointer check. 587 588 Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on 589 implicit fallthrough, as well as __attribute__((__fallthrough__)) and 590 comments to explicitly denote that cases of fallthrough were intentional. 591 Clang also supports this warning and statement attribute, but not the 592 comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature 593 of GCC. With assistance from @nickdesaulniers. 594 595 2) iASL Compiler/Disassembler and ACPICA tools: 596 597 Added improvement to method call analysis by saving the return type and 598 relaxing certain cases of type checking. 599 600 iASL Table Compiler: Improved info messages. Added a message to the -T 601 option for when the default template (DSDT) is used. 602 Also added a note for when multiple SSDTs are created with a DSDT that 603 the SSDTs are created in the same file as the DSDT. 604 605 606 ---------------------------------------- 607 608 13 November 2020. Summary of changes for version 20201113: 609 610 This release is available at https://acpica.org/downloads 611 612 613 1) ACPICA kernel-resident subsystem: 614 615 Interpreter: fixed a memory leak by using use existing buffer in _HID 616 repair. There was a memory leak that occurred when a _CID object is 617 defined as a package containing string objects. When _CID is checked for 618 any possible repairs, it calls a helper function to repair _HID (because 619 _CID basically contains multiple _HID entries). The _HID repair function 620 assumes that string objects are standalone objects that are not contained 621 inside of any packages. The _HID repair function replaced the string 622 object with a brand new object and attempted to delete the old object by 623 decrementing the reference count of the old object. Strings inside of 624 packages have a reference count of 2 so the _HID repair function leaves 625 this object in a dangling state and causes a memory leak. Instead of 626 allocating a brand new object and removing the old object, use the 627 existing object when repairing the _HID object. 628 629 Added function trace macros to improve namespace debugging. The namespace 630 repair mechanism does not have function tracing macros. Add several trace 631 macros to improve debuggability. 632 633 Handle "orphan" _REG methods for GPIO OpRegions. Before this change 634 AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no 635 matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry 636 Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. 637 The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific 638 UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads 639 to potential issues with checks for OpRegion availability, or in other 640 words checks if _REG has been called for the OpRegion which the ACPI code 641 wants to use. Except for the "orphan" EC handling, ACPICA core does not 642 call _REG on an ACPI node which does not define an OpRegion matching the 643 type being registered; and the reference design DSDT, from which most 644 Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor 645 UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins 646 were assigned ACPI controlled functions in the reference design. Together 647 this leads to the perfect storm, at least on the Cherry Trail based 648 Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code 649 and has added the Cherry Trail specific UserDefined(0x93) opregion to its 650 GPO2 ACPI node to access this pin. But it uses a "has _REG been called" 651 availability check for the standard GeneralPurposeIo OpRegion. This 652 clearly is a bug in the DSDT, but this does work under Windows. This 653 issue leads to the intel vbtn driver reporting the device always being in 654 tablet-mode at boot, even if it is in laptop mode. Which in turn causes 655 userspace to ignore touchpad events. So in other words, this issue causes 656 the touchpad to not work at boot. This change fixes this by extending the 657 "orphan" _REG method handling to also apply to GPIO address-space 658 handlers. 659 660 661 2) iASL Compiler/Disassembler and ACPICA tools: 662 663 iASL: Added more info to namespace dump file (-ln option). In a separate 664 section of the dump file (after the main namespace dump), emit the full 665 pathname for each namespace node, its type, and the ASL filename and line 666 number where it is declared. 667 668 AcpiHelp: Added an option to display/decode iASL exceptions. Option is: - 669 x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value 670 is omitted, all iASL exceptions are displayed. 671 672 iASL: Use StringLiteral instead of StringData for some ASL macros. The 673 use of the stringData rule allows for some "string" oriented opcodes 674 (Such as ToString, ToHexString, etc.) None of which make sense with the 675 macros in question. This change modifies the StringData part of the rule 676 for these macros to a simple string literal - thus disallowing the use 677 of ToString, ToHexString, etc. 678 The following ASL operators (macros) are affected: 679 EisaId 680 Fprintf 681 Printf 682 ToUuid 683 Unicode 684 Note: The MS compiler requires the use of string literals for these 685 operators also. 686 687 iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search 688 the list of "known" UUIDs for the input to the ToUUID macro. 689 690 Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the 691 NFIT table. 692 693 694 ---------------------------------------- 695 696 25 September 2020. Summary of changes for version 20200925: 697 698 This release is available at https://acpica.org/downloads 699 700 701 1) ACPICA kernel-resident subsystem: 702 703 Preserve memory opregion mappings. The ACPICA's strategy with respect to 704 the handling of memory mappings associated with memory operation regions 705 is to avoid mapping the entire region at once which may be problematic at 706 least in principle (for example, it may lead to conflicts with 707 overlapping mappings having different attributes created by drivers). It 708 may also be wasteful, because memory opregions on some systems take up 709 vastchunks of address space while the fields in those regions actually 710 accessed by AML are sparsely distributed. 711 712 For this reason, a one-page "window" is mapped for a given opregion on 713 the first memory access through it and if that "window" does not cover an 714 address range accessed through that opregion subsequently, it is unmapped 715 and a new "window" is mapped to replace it. Next, if the new "window" is 716 not sufficient to access memory through the opregion in question in the 717 future, it will be replaced with yet another "window" and so on. That 718 may lead to a suboptimal sequence of memory mapping and unmapping 719 operations, for example if two fields in one opregion separated from each 720 other by a sufficiently wide chunk of unused address space are accessed 721 in an alternating pattern. 722 723 Added support for 64 bit risc-v compilation. Useful for acpica tools and 724 incorporating ACPICA into the Firmware Test Suite. Colin Ian King 725 <colin.king (a] canonical.com>. 726 727 Added support for SMBus predefined names (from SMBus Control Method 728 Interface Specification, Version 1.0, December 10, 1999. New predefined 729 names: 730 _SBA 731 _SBI 732 _SBR 733 _SBT 734 _SBW 735 736 AML Disassembler: Added a new command, "All <NameSeg>". This command will 737 evaluate all objects in the current namespace whose NameString contains 738 the input NameSeg as the last element of the NameString. Useful for 739 debugging. 740 741 742 2) iASL Compiler/Disassembler and ACPICA tools: 743 744 iASL: fixed a crash that occurred when predefined objects return packages 745 with lengths that exceed the initializer list. 746 747 iASL: added more detail to external resolution error message when 748 compiling multiple definition blocks. 749 750 iASL: added a remark for an attempt to create a nameseg or namestring 751 containing lower-case letters. This should prevent declaring multiple 752 namesegs or namestrings in an attempt to refer to different objects (with 753 different cases), but actually refer to the same object(s). 754 755 iASL: improve alias analysis by saving object type. If the alias is a 756 method type, the parameter count is also recorded. 757 758 AcpiExec: Increase the default loop timeout value. Was 1 second, is now 759 10 seconds. Prevents unnecessary timeouts when executing control methods 760 from the command line. 761 762 AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal 763 list. Includes: 764 Memory Device 765 Generic Buttons Device 766 NVDIMM Root Device 767 Control Method Battery 768 Device Graphs for _DSD method 769 Hierarchical Data Extension 770 ....ARM CoreSight Graph 771 772 ---------------------------------------- 773 774 775 17 July 2020. Summary of changes for version 20200717: 776 777 This release is available at https://acpica.org/downloads 778 779 780 1) ACPICA kernel-resident subsystem: 781 782 Do not increment OperationRegion reference counts for field units. Recent 783 server firmware has revealed that this reference count can overflow on 784 large servers that declare many field units (thousands) under the same 785 OperationRegion. This occurs because each field unit declaration will add 786 a reference count to the source OperationRegion. This release solves the 787 reference count overflow for OperationRegion objects by preventing 788 fieldUnits from incrementing their parent OperationRegion's reference 789 count. 790 791 Replaced one-element arrays with flexible-arrays, which were introduced 792 in C99. 793 794 Restored the readme file containing the directions for generation of 795 ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is 796 located at: generate/msvc2017/readme.txt 797 798 2) iASL Compiler/Disassembler and ACPICA tools: 799 800 iASL: Fixed a regression found in version 20200214. Prevent iASL from 801 emitting an extra byte of garbage data when control methods declared a 802 single parameter type without using braces. This extra byte is known to 803 cause a blue screen on the Windows AML interpreter. 804 805 iASL: Made a change to allow external declarations to specify the type of 806 a named object even when some name segments are not defined. 807 This change allows the following ASL code to compile (When DEV0 is not 808 defined or not defined yet): 809 810 External (\_SB.DEV0.OBJ1, IntObj) 811 External (\_SB.DEV0, DeviceObj) 812 813 iASL: Fixed a problem where method names in "Alias ()" statement could be 814 misinterpreted. They are now interpreted correctly as method invocations. 815 816 iASL: capture a method parameter count (Within the Method info segment, 817 as well as the argument node) when using parameter type lists. 818 819 ---------------------------------------- 820 821 822 28 May 2020. Summary of changes for version 20200528: 823 824 825 1) ACPICA kernel-resident subsystem: 826 827 Removed old/obsolete Visual Studio files which were used to build the 828 Windows versions of the ACPICA tools. Since we have moved to Visual 829 Studio 2017, we are no longer supporting Visual Studio 2006 and 2009 830 project files. The new subdirectory and solution file are located at: 831 832 acpica/generate/msvc2017/AcpiComponents.sln 833 834 835 2) iASL Compiler/Disassembler and ACPICA tools: 836 837 iASL: added support for a new OperationRegion Address Space (subtype): 838 PlatformRtMechanism. Support for this new keyword is being released for 839 early prototyping. It will appear in the next release of the ACPI 840 specification. 841 842 iASL: do not optimize the NameString parameter of the CondRefOf operator. 843 In the previous iASL compiler release, the NameString parameter of the 844 CondRefOf was optimized. There is evidence that some implementations of 845 the AML interpreter do not perform the recursive search-to-parent search 846 during the execution of the CondRefOf operator. Therefore, the CondRefOf 847 operator behaves differently when the NameString parameter is a single 848 name segment (a NameSeg) as opposed to a full NamePath (starting at the 849 root scope) or a NameString containing parent prefixes. 850 851 iASL: Prevent an inadvertent remark message. This change prevents a 852 remark if within a control method the following exist: 853 1) An Operation Region is defined, and 854 2) A Field operator is defined that refers to the region. 855 This happens because at the top level, the Field operator does not 856 actually create a new named object, it simply references the operation 857 region. 858 859 Removed support for the acpinames utility. The acpinames was a simple 860 utility used to populate and display the ACPI namespace without executing 861 any AML code. However, ACPICA now supports executable opcodes outside of 862 control methods. This means that executable AML opcodes such as If and 863 Store opcodes need to be executed during table load. Therefore, acpinames 864 would need to be updated to match the same behavior as the acpiexec 865 utility and since acpiexec can already dump the entire namespace (via the 866 'namespace' command), we no longer have the need to maintain acpinames. 867 868 In order to dump the contents of the ACPI namespace using acpiexec, 869 execute the following command from the command line: 870 871 acpiexec -b "n" [aml files] 872 873 ---------------------------------------- 874 875 876 30 April 2020. Summary of changes for version 20200430: 877 878 1) ACPICA kernel-resident subsystem: 879 880 Cleaned up the coding style of a couple of global variables 881 (AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers. 882 AcpiProtocolLengths was made static, and the definition of 883 AcpiGbl_NextCmdNum was moved to acglobal.h. 884 885 886 2) iASL Compiler/Disassembler and ACPICA tools: 887 888 iASL DataTable Compiler: Fixed a segfault on errors that aren't directly 889 associated with a field. 890 891 Disassembler: has been made more resilient so that it will continue to 892 parse AML even if the AML generates ACPI namespace errors. This enables 893 iASL to disassemble some AML that may have been compiled using older 894 versions of iASL that no longer compile with newer versions of iASL. 895 896 iASL: Fixed the required parameters for _NIH and _NIG. Previously, there 897 was a mixup where _NIG required one parameter and _NIH required zero 898 parameters. This change swaps these parameter requirements. Now it is 899 required that _NIH must be called with one parameter and _NIG requires 900 zero parameters. 901 902 iASL: Allow use of undefined externals as long as they are protected by 903 an if (CondRefOf (...)) block when compiling multiple definition blocks. 904 905 iASL: Fixed the type override behavior of named objects that are declared 906 as External. External declarations will no longer override the type of 907 the actual definition if it already exists. 908 909 AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable 910 command line wildcard support on Windows. Note: the AcpiNames utility is 911 essentially redundant with the AcpiExec utility (using the "namespace" 912 command) and is therefore deprecated. It will be removed in future 913 releases of ACPICA. 914 915 Disassembler: ignore AE_ALREADY_EXISTS status when parsing create* 916 operators. The disassembler is intended to emit existing ASL code as-is. 917 Therefore, error messages emitted during disassembly should be ignored or 918 handled in a way such that the disassembler can continue to parse the 919 AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op 920 parsing for create operators in order to complete parsing ASL termlists. 921 922 iASL DataTable Compiler: IVRS table: fix potentially uninitialized 923 variable warning. Some compilers catch potential uninitialized variables. 924 This is done by examining branches of if/else statements. This change 925 replaces an "else if" with an "else" to fix the uninitialized variable 926 warning. 927 928 929 ---------------------------------------- 930 26 March 2020. Summary of changes for version 20200326: 931 932 933 1) ACPICA kernel-resident subsystem: 934 935 Performed a code clean-up to prevent build errors on early versions of 936 GCC-10. 937 938 Added the NHLT table signature. iASL data table compiler/disassembler 939 support for this table is coming soon. 940 941 942 2) iASL Compiler/Disassembler and ACPICA tools: 943 944 AcpiExec: Fixed several problems with the namespace initialization file 945 (-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS 946 errors, several seg faults, and enhancements to line parsing within the 947 init file. In addition, each object found in the init file and it's new 948 value is displayed, as well as any such entries that do not have a 949 corresponding name in the namespace. For reference, the syntax for the 950 various supported data types are presented below: 951 PCHG 0x777788889999BBBB // Integer 952 \DEV1.STR1 "XYZ" // String 953 BUF1 (88 99 AA) // Buffer 954 PKG1 [0x1111 0x2222] // Package 955 \BF1 0x7980 // BufferField 956 RCRV 0x0123456789ABCDEF // Field Unit 957 958 iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro 959 can be used anywhere in a given ASL file to configure iASL to expect an 960 iASL compiler error code on the line where this macro was placed. If the 961 error code does not exist, an error is generated. This is intended to be 962 used for ACPICA's ASL test suite, but can be used by ASL developers as 963 well. 964 965 iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD 966 IVRS table parsing supported only IVHD type 10h structures. Parsing an 967 IVHD type 11h caused the iasl to report unknown subtable type. Add 968 necessary structure definition for IVHD type 11h and apply correct 969 parsing method based on subtable type. Micha? ?ygowski. 970 971 iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name 972 According to AMD IOMMU Specification Revision 3.05 the reserved field 973 should be IOMMU Feature Reporting. Change the name of the field to the 974 correct one. Micha? ?ygowski. 975 976 acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch 977 based on suggestions by David Seifert and Benjamin Berg. 978 979 iASL: table compiler: removed an unused variable (DtCompilerParserResult) 980 causing linking errors. Patch based on suggestions by David Seifert and 981 Benjamin Berg. 982 983 iASL: table compiler: make LexBuffer static to avoid linking errors in 984 newer compilers. Patch based on suggestions by David Seifert and Benjamin 985 Berg. 986 987 iASL: fixed type matching between External and Named objects. External 988 object types can only be expressed with ACPI object type values that are 989 defined in the ACPI spec. However, iASL uses ACPI object type values that 990 are local to ACPICA in addition to the values defined in the ACPI spec. 991 This change implements type matching to map some object type values 992 specific to ACPICA to ones that are defined in the ACPI spec. 993 994 iASL: Dropped the type mismatch compiler error that can arise from 995 External declarations to a warning. This warning can occur when there is 996 a type difference between the external declaration and the actual object 997 declaration (when compiling multiple files/modules simultaneously). 998 999 iASL: removed an incorrect error message regarding externals. This change 1000 removes an incorrect error that is emitted when a duplicate external 1001 declaration does not contain a type that opens a scope. This is incorrect 1002 because the duplicate external with conflicting types are already caught 1003 by iASL and it doesn't make any sense to enforce what this conflicting 1004 type should be. 1005 1006 AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be 1007 surrounded by parens. Otherwise, a logical statement that applies a 1008 logical not operator to this macro could result in a computation that 1009 applies the operator to the left side of the logical and but not the 1010 right. Reported-by: John Levon <john.levon (a] joyent.com> 1011 1012 Fixed a problem with the local version of sprint(): On 32-bit, the 1013 provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, 1014 String + Size will wrap, meaning End < Start, and 1015 AcpiUtBoundStringOutput() will never output anything as a result. The 1016 symptom seen of this was acpixtract failing to output anything -- with a 1017 custom build that included utprint.c. Signed-off-by: John Levon 1018 <john.levon (a] joyent.com> 1019 1020 iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the 1021 ACPI specification. 1022 1023 1024 ---------------------------------------- 1025 14 February 2020. Summary of changes for version 20200214: 1026 1027 1028 1) ACPICA kernel-resident subsystem: 1029 1030 Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered 1031 in a guest when it receives a sleep trigger from the hypervisor. When the 1032 guest resumes from this power state, it does not see the SleepEnabled 1033 bit. In other words, the sleepHibernation (S4) is triggered in a guest 1034 when it receives a sleep trigger from the hypervisor. When the guest 1035 resumes from this power state, it does not see the SleepEnabled bit. In 1036 other words, the sleep button is not enabled on waking from an S4 state. 1037 This causes subsequent invocation of sleep state to fail since the 1038 guest.button is not enabled on waking from an S4 state. This causes 1039 subsequent invocation of sleep state to fail in the guest. Fix this 1040 problem by enabling the sleep button in ACPI legacy wake. From Anchal 1041 Agarwal <anchalag (a] amazon.com>. 1042 1043 Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used 1044 for checking the status bits of all enabled GPEs in one go. It is needed 1045 to distinguish spurious SCIs from genuine ones when deciding whether or 1046 not to wake up the system from suspend-to-idle. 1047 1048 Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be 1049 using HOST in their environment to represent the host name for their 1050 machines. Avoid this problem by renaming this variable from HOST to 1051 ACPI_HOST. 1052 1053 MSVC 2017 project files: Enable multiprocessor generation to improve 1054 build performance. 1055 1056 Added a macro to get the byte width of a Generic Address structure. New 1057 ACPI_ACCESS_BYTE_WIDTH is in addition to the existing 1058 ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg. 1059 1060 1061 2) iASL Compiler/Disassembler and ACPICA tools: 1062 1063 iASL: Implemented full support for the (optional, rarely used) ReturnType 1064 and ParameterTypesList for the Method, Function, and External operators. 1065 For Method declarations, the number of individual ParameterTypes must 1066 match the declaration of the number of arguments (NumArgs). This also 1067 Fixes a problem with the External operator where extra/extraneous bytes 1068 were emitted in the AML code if the optional ReturnType/ParameterTypes 1069 were specified for a MethodObj declaration. 1070 New error message: 1071 1) Method NumArgs count does not match length of ParameterTypes list 1072 1073 iASL: Implemented detection of type mismatches between External 1074 declarations and named object declarations. Also, detect type mismatches 1075 between multiple External declarations of the same Name. 1076 New error messages: 1077 1) Type mismatch between external declaration and actual object 1078 declaration detected 1079 2) Type mismatch between multiple external declarations detected 1080 1081 iASL: Implemented new error messages for External operators that specify 1082 a ReturnType and/or ParameterTypesList for any object type other than 1083 control methods (MethodObj). 1084 New error messages: 1085 1) Return type is only allowed for Externals declared as MethodObj 1086 2) Parameter type is only allowed for Externals declared as MethodObj 1087 1088 iASL: Implemented two new remark/warning messages for ASL code that 1089 creates named objects from within a control method. This is very 1090 inefficient since the named object must be created and deleted each time 1091 the method is executed. 1092 New messages: 1093 1) Creation of named objects within a method is highly inefficient, use 1094 globals or method local variables instead (remark) 1095 2) Static OperationRegion should be declared outside control method 1096 (warning) 1097 1098 iASL: Improved illegal forward reference detection by adding support to 1099 detect forward-reference method invocations. 1100 1101 iASL: Detect and issue an error message for NameStrings that contain too 1102 many individual NameSegs (>255). This is an AML limitation that is 1103 defined in the ACPI specification. 1104 New message: 1105 1) NameString contains too many NameSegs (>255) 1106 1107 acpidump: windows: use GetSystemFirmwareTable API for all tables except 1108 SSDT. By using this API, acpidump is able to get all tables in the XSDT 1109 1110 iASL: Removed unused parser file and updated msvc2017 project files. 1111 Removed the obsolete AslCompiler.y from the repository. 1112 1113 iASL: msvc2017: Fixed macros in the file dependency list to prevent 1114 unnecessary rebuilds. Replace %(Directory) with %(RelativeDir). 1115 1116 Disassembler: Prevent spilling error messages to the output file. All 1117 errors are directed to the console instead. These error messages 1118 prevented re-compilation of the resulting disassembled ASL output file 1119 (.DSL). 1120 1121 1122 ---------------------------------------- 1123 10 January 2020. Summary of changes for version 20200110: 1124 1125 1126 1) ACPICA kernel-resident subsystem: 1127 1128 Updated all copyrights to 2020. This affects all ACPICA source code 1129 modules. 1130 1131 1132 2) iASL Compiler/Disassembler and ACPICA tools: 1133 1134 ASL test suite (ASLTS): Updated all copyrights to 2020. 1135 1136 Tools and utilities: Updated all signon copyrights to 2020. 1137 1138 iASL: fix forward reference analysis for field declarations. Fixes 1139 forward reference analysis for field declarations by searching the 1140 parent scope for the named object when the object is not present in 1141 the current scope. 1142 1143 iASL: Improved the error output for ALREADY_EXISTS errors. Now, the 1144 full pathname of the name that already exists is printed. 1145 1146 iASL: Enhance duplicate Case() detection for buffers. Add check for 1147 buffers with no initializer list (these buffers will be filled with 1148 zeros at runtime.) 1149 1150 1151 ---------------------------------------- 1152 13 December 2019. Summary of changes for version 20191213: 1153 1154 1155 1) ACPICA kernel-resident subsystem: 1156 1157 Return a Buffer object for all fields created via the CreateField 1158 operator. Previously, an Integer would be returned if the size of 1159 the field was less than or equal to the current size of an Integer. 1160 Although this goes against the ACPI specification, it provides 1161 compatibility with other ACPI implementations. Also updated the 1162 ASLTS test suite to reflect this new behavior. 1163 1164 2) iASL Compiler/Disassembler and ACPICA tools: 1165 1166 iASL: Implemented detection of (and throw an error for) duplicate 1167 values for Case statements within a single Switch statement. Duplicate 1168 Integers, Strings, and Buffers are supported. 1169 1170 iASL: Fix error logging issue during multiple file compilation -- 1171 Switch to the correct input file during error node creation. 1172 1173 iASL: For duplicate named object creation, now emit an error instead 1174 of a warning - since this will cause a runtime error. 1175 1176 AcpiSrc: Add unix line-ending support for non-Windows builds. 1177 1178 iASL: Add an error condition for an attempt to create a NameString 1179 with > 255 NameSegs (the max allowable via the AML definition). 1180 1181 1182 ---------------------------------------- 1183 18 October 2019. Summary of changes for version 20191018: 1184 1185 1186 1) ACPICA kernel-resident subsystem: 1187 1188 Debugger: added a new command: ?Fields [address space ID]?. This command 1189 dumps the contents of all field units that are defined within the 1190 namespace with a particular address space ID. 1191 1192 Modified the external interface AcpiLoadTable() to return a table index. 1193 This table index can be used for unloading a table for debugging. 1194 ACPI_STATUS 1195 AcpiLoadTable ( 1196 ACPI_TABLE_HEADER *Table, 1197 UINT32 *TableIndex)) 1198 1199 Implemented a new external interface: AcpiUnloadTable() This new function 1200 takes a table index as an argument and unloads the table. Useful for 1201 debugging only. 1202 ACPI_STATUS 1203 AcpiUnloadTable ( 1204 UINT32 TableIndex)) 1205 1206 Ported the AcpiNames utility to use the new table initialization 1207 sequence. The utility was broken before this change. Also, it was 1208 required to include most of the AML interpreter into the utility in order 1209 to process table initialization (module-level code execution.) 1210 1211 Update for results from running Clang V8.0.1. This fixes all "dead 1212 assignment" warnings. There are still several "Dereference of NULL 1213 pointer" warnings, but these have been found to be false positive 1214 warnings. 1215 1216 1217 2) iASL Compiler/Disassembler and ACPICA tools: 1218 1219 iASL: numerous table compiler changes to ensure that the usage of 1220 yacc/bison syntax is POSIX-compliant. 1221 1222 iASL/disassembler: several simple bug fixes in the data table 1223 disassembler. 1224 1225 Acpiexec: expanded the initialization file (the -fi option) to initialize 1226 strings, buffers, packages, and field units. 1227 1228 1229 ---------------------------------------- 1230 16 August 2019. Summary of changes for version 20190816: 1231 1232 This release is available at https://acpica.org/downloads 1233 1234 1235 1) ACPICA kernel-resident subsystem: 1236 1237 Modified the OwnerId mechanism to allow for more Owner Ids. The previous 1238 limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 1239 exceptions on machines with a large number of initialization threads, 1240 many CPU cores and nested initialization control methods. 1241 1242 Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 1243 checking if the given GPE (as represented by a GPE device handle and a 1244 GPE number) is currently active and dispatching it (if that's the case) 1245 outside of interrupt context. 1246 1247 Table load: exit the interpreter before initializing objects within the 1248 new table This prevents re-acquiring the interpreter lock when loading 1249 tables 1250 1251 Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 1252 uk Kim 1253 1254 Macros: removed pointer math on a null pointer. Causes warnings on some 1255 compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 1256 instead of using arithmetic. 1257 1258 Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 1259 across all "printf-like" internal functions. Also, cleanup all calls to 1260 such functions (both in 32-bit mode and 64-bit mode) now that they are 1261 analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 1262 1263 1264 2) iASL Compiler/Disassembler and ACPICA tools: 1265 1266 iASL: implemented a new data table compiler flex/bison front-end. This 1267 change is internal and is not intended to result in changes to the 1268 compiled code. This new compiler front-end can be invoked using the -tp 1269 option for now, until the old mechanism is removed. 1270 1271 ASLTS: Implemented a new data table compiler test suite. This test suite 1272 generates all table templates and compile/disassemble/re-compile/binary- 1273 compare each file. 1274 1275 iASL: return -1 if AML files were not generated due to compiler errors 1276 1277 iASL: added a warning on use of the now-legacy ASL Processor () keyword. 1278 1279 iASL: added an error on _UID object declaration that returns a String 1280 within a Processor () declaration. A _UID for a processor must be an 1281 Integer. 1282 1283 iASL: added a null terminator to name strings that consist only of 1284 multiple parent prefixes (^) 1285 1286 iASL: added support to compile both ASL and data table files in a single 1287 command. 1288 1289 Updated the tool generation project files that were recently migrated to 1290 MSVC 2017 to eliminate all new warnings. The new project files appear in 1291 the directory \acpica\generate\msvc2017. This change effectively 1292 deprecates the older project files in \acpica\generate\msvc9. 1293 1294 1295 ---------------------------------------- 1296 03 July 2019. Summary of changes for version 20190703: 1297 1298 1299 1) ACPICA kernel-resident subsystem: 1300 1301 Remove legacy module-level support code. There were still some remnants 1302 of the legacy module-level code executions. Since we no longer support 1303 this option, this is essentially dead code and has been removed from the 1304 ACPICA source. 1305 1306 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1307 scope. If these named objects are declared outside the root scope, they 1308 will not be invoked by any host Operating System. 1309 1310 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 1311 one) can be enabled in two situations. First, the GPEs with existing _Lxx 1312 and _Exx methods are enabled implicitly by ACPICA during system 1313 initialization. Second, the GPEs without these methods (like GPEs listed 1314 by _PRW objects for wakeup devices) need to be enabled directly by the 1315 code that is going to use them (e.g. ACPI power management or device 1316 drivers). 1317 1318 In the former case, if the status of a given GPE is set to start with, 1319 its handler method (either _Lxx or _Exx) needs to be invoked to take care 1320 of the events (possibly) signaled before the GPE was enabled. In the 1321 latter case, however, the first caller of AcpiEnableGpe() for a given GPE 1322 should not be expected to care about any events that might be signaled 1323 through it earlier. In that case, it is better to clear the status of 1324 the GPE before enabling it, to prevent stale events from triggering 1325 unwanted actions (like spurious system resume, for example). 1326 1327 For this reason, modify AcpiEvAddGpeReference() to take an additional 1328 boolean argument indicating whether or not the GPE status needs to be 1329 cleared when its reference counter changes from zero to one and make 1330 AcpiEnableGpe() pass TRUE to it through that new argument. 1331 1332 1333 2) iASL Compiler/Disassembler and ACPICA tools: 1334 1335 The tool generation process has been migrated to MSVC 2017, and all 1336 project files have been upgraded. The new project files appear in the 1337 directory \acpica\generate\msvc2017. This change effectively deprecates 1338 the older project files in \acpica\generate\msvc9. 1339 1340 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 1341 scope. If these named objects are declared outside the root scope, they 1342 will not be invoked by any host Operating System 1343 1344 ---------------------------------------- 1345 09 May 2019. Summary of changes for version 20190509: 1346 1347 1348 1) ACPICA kernel-resident subsystem: 1349 1350 Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 1351 them") that causes problems with Thunderbolt controllers to occur if a 1352 dock device is connected at init time (the xhci_hcd and thunderbolt 1353 modules crash which prevents peripherals connected through them from 1354 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 1355 Dispatch active GPEs at init time") to get undone, so the problem 1356 addressed by commit ecc1165b8b74 appears again as a result of it. 1357 1358 1359 2) iASL Compiler/Disassembler and ACPICA tools: 1360 1361 Reverted iASL: Additional forward reference detection. This change 1362 reverts forward reference detection for field declarations. The feature 1363 unintentionally emitted AML bytecode with incorrect package lengths for 1364 some ASL code related to Fields and OperationRegions. This malformed AML 1365 can cause systems to crash 1366 during boot. The malformed AML bytecode is emitted in iASL version 1367 20190329 and 20190405. 1368 1369 iASL: improve forward reference detection. This change improves forward 1370 reference detection for named objects inside of scopes. If a parse object 1371 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 1372 a named object that is declared later in the AML bytecode. This is 1373 allowed if the reference is inside of a method and the declaration is 1374 outside of a method like so: 1375 1376 DefinitionBlock(...) 1377 { 1378 Method (TEST) 1379 { 1380 Return (NUM0) 1381 } 1382 Name (NUM0,0) 1383 } 1384 1385 However, if the declaration and reference are both in the same method or 1386 outside any methods, this is a forward reference and should be marked as 1387 an error because it would result in runtime errors. 1388 1389 DefinitionBlock(...) 1390 { 1391 Name (BUFF, Buffer (NUM0) {}) // Forward reference 1392 Name (NUM0, 0x0) 1393 1394 Method (TEST) 1395 { 1396 Local0 = NUM1 1397 Name (NUM1, 0x1) // Forward reference 1398 return (Local0) 1399 } 1400 } 1401 1402 iASL: Implemented additional buffer overflow analysis for BufferField 1403 declarations. Check if a buffer index argument to a create buffer field 1404 operation is beyond the end of the target buffer. 1405 1406 This affects these AML operators: 1407 1408 AML_CREATE_FIELD_OP 1409 AML_CREATE_BIT_FIELD_OP 1410 AML_CREATE_BYTE_FIELD_OP 1411 AML_CREATE_WORD_FIELD_OP 1412 AML_CREATE_DWORD_FIELD_OP 1413 AML_CREATE_QWORD_FIELD_OP 1414 1415 There are three conditions that must be satisfied in order to allow this 1416 validation at compile time: 1417 1418 1) The length of the target buffer must be an integer constant 1419 2) The index specified in the create* must be an integer constant 1420 3) For CreateField, the bit length argument must be non-zero. 1421 1422 Example: 1423 Name (BUF1, Buffer() {1,2}) 1424 CreateField (BUF1, 7, 9, CF03) // 3: ERR 1425 1426 dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 1427 Error 6165 - ^ Buffer index beyond end of 1428 target buffer 1429 1430 1431 ---------------------------------------- 1432 05 April 2019. Summary of changes for version 20190405: 1433 1434 1435 1) ACPICA kernel-resident subsystem: 1436 1437 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 1438 unconditionally clearing ACPI IRQs during suspend/resume") was added 1439 earlier to stop clearing of event status bits unconditionally on suspend 1440 and resume paths. Though this change fixed an issue on suspend path, it 1441 introduced regressions on several resume paths. In the case of S0ix, 1442 events are enabled as part of device suspend path. If status bits for the 1443 events are set when they are enabled, it could result in premature wake 1444 from S0ix. If status is cleared for any event that is being enabled so 1445 that any stale events are cleared out. In case of S0ix, events are 1446 enabled as part of device suspend path. If status bits for the events are 1447 set when they are enabled, it could result in premature wake from S0ix. 1448 1449 This change ensures that status is cleared for any event that is being 1450 enabled so that any stale events are cleared out. 1451 1452 1453 2) iASL Compiler/Disassembler and ACPICA tools: 1454 1455 iASL: Implemented an enhanced multiple file compilation that combines 1456 named objects from all input files to a single namespace. With this 1457 feature, any unresolved external declarations as well as duplicate named 1458 object declarations can be detected during compilation rather than 1459 generating errors much later at runtime. The following commands are 1460 examples that utilize this feature: 1461 iasl dsdt.asl ssdt.asl 1462 iasl dsdt.asl ssdt1.asl ssdt2.asl 1463 iasl dsdt.asl ssdt*.asl 1464 1465 ---------------------------------------- 1466 29 March 2019. Summary of changes for version 20190329: 1467 1468 1469 1) ACPICA kernel-resident subsystem: 1470 1471 Namespace support: Remove the address nodes from global list after method 1472 termination. The global address list contains pointers to namespace nodes 1473 that represent Operation Regions. This change properly removes Operation 1474 Region namespace nodes that are declared dynamically during method 1475 execution. 1476 1477 Linux: Use a different debug default than ACPICA. There was a divergence 1478 between Linux and the ACPICA codebases. In order to resolve this 1479 divergence, Linux now declares its own debug default in aclinux.h 1480 1481 Renamed some internal macros to improve code understanding and 1482 maintenance. The macros below all operate on single 4-character ACPI 1483 NameSegs, not generic strings (old -> new): 1484 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 1485 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 1486 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 1487 1488 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 1489 table. 1490 1491 Test suite: Update makefiles, add PCC operation region support 1492 1493 1494 2) iASL Compiler/Disassembler and Tools: 1495 1496 iASL: Implemented additional illegal forward reference detection. Now 1497 detect and emit an error upon detection of a forward reference from a 1498 Field to an Operation Region. This will fail at runtime if allowed to 1499 pass the compiler. 1500 1501 AcpiExec: Add an address list check for dynamic Operation Regions. This 1502 feature performs a sanity test for each node the global address list. 1503 This is done in order to ensure that all dynamic operation regions are 1504 properly removed from the global address list and no dangling pointers 1505 are left behind. 1506 1507 Disassembler: Improved generation of resource pathnames. This change 1508 improves the code that generates resource descriptor and resource tag 1509 pathnames. The original code used a bunch of str* C library functions 1510 that caused warnings on some compilers. 1511 1512 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 1513 function can overwrite buffers if the calling code is not very careful. 1514 In the case of generating a module/table header, use of memmove is a 1515 better implementation. 1516 1517 1518 3) Status of new features that have not been completed at this time: 1519 1520 iASL: Implementing an enhanced multiple file compilation into a single 1521 namespace feature (Status): This feature will be released soon, and 1522 allows multiple ASL files to be compiled into the same single namespace. 1523 By doing so, any unresolved external declarations as well as duplicate 1524 named object declarations can be detected during compilation (rather than 1525 later during runtime). The following commands are examples that utilize 1526 this feature: 1527 iasl dsdt.asl ssdt.asl 1528 iasl dsdt.asl ssdt1.asl ssdt2.asl 1529 iasl dsdt.asl ssdt*.asl 1530 1531 ASL tutorial status: Feedback is being gathered internally and the 1532 current plan is to publish this tutorial on the ACPICA website after a 1533 final review by a tech writer. 1534 1535 ---------------------------------------- 1536 15 February 2019. Summary of changes for version 20190215: 1537 1538 1539 0) Support for ACPI specification version 6.3: 1540 1541 Add PCC operation region support for the AML interpreter. This adds PCC 1542 operation region support in the AML interpreter and a default handler for 1543 acpiexec. The change also renames the PCC region address space keyword to 1544 PlatformCommChannel. 1545 1546 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 1547 These methods provide OSPM with health information and device boot 1548 status. 1549 1550 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 1551 defines if the trigger needs to be invoked by OSPM before or at the end 1552 of kernel crash dump processing/handling operation. 1553 1554 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 1555 is used for describing devices such as heterogeneous processors, 1556 accelerators, GPUs, and IO devices with integrated compute or DMA 1557 engines. 1558 1559 MADT: Add support for statistical profiling in GICC. Statistical 1560 profiling extension (SPE) is an architecture-specific feature for ARM. 1561 1562 MADT: Add online capable flag. If this bit is set, system hardware 1563 supports enabling this processor during OS runtime. 1564 1565 New Error Disconnect Recover Notification value. There are a number of 1566 scenarios where system Firmware in collaboration with hardware may 1567 disconnect one or more devices from the rest of the system for purposes 1568 of error containment. Firmware can use this new notification value to 1569 alert OSPM of such a removal. 1570 1571 PPTT: New additional fields in Processor Structure Flags. These flags 1572 provide more information about processor topology. 1573 1574 NFIT/Disassembler: Change a field name from "Address Range" to "Region 1575 Type". 1576 1577 HMAT updates: make several existing fields to be reserved as well as 1578 rename subtable 0 to "memory proximity domain attributes". 1579 1580 GTDT: Add support for new GTDT Revision 3. This revision adds information 1581 for the EL2 timer. 1582 1583 iASL: Update the HMAT example template for new fields. 1584 1585 iASL: Add support for the new revision of the GTDT (Rev 3). 1586 1587 1588 1) ACPICA kernel-resident subsystem: 1589 1590 AML Parser: fix the main AML parse loop to correctly skip erroneous 1591 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 1592 byte extended opcodes. If an error occurs during an AML table load, the 1593 AML parser will continue loading the table by skipping the offending 1594 opcode. This implements a "load table at any cost" philosophy. 1595 1596 1597 2) iASL Compiler/Disassembler and Tools: 1598 1599 iASL: Add checks for illegal object references, such as a reference 1600 outside of method to an object within a method. Such an object is only 1601 temporary. 1602 1603 iASL: Emit error for creation of a zero-length operation region. Such a 1604 region is rather pointless. If encountered, a runtime error is also 1605 implemented in the interpreter. 1606 1607 Debugger: Fix a possible fault with the "test objects" command. 1608 1609 iASL: Makefile: support parent directory filenames containing embedded 1610 spaces. 1611 1612 iASL: Update the TPM2 template to revision 4. 1613 1614 iASL: Add the ability to report specific warnings or remarks as errors. 1615 1616 Disassembler: Disassemble OEMx tables as actual AML byte code. 1617 Previously, these tables were treated as "unknown table". 1618 1619 iASL: Add definition and disassembly for TPM2 revision 3. 1620 1621 iASL: Add support for TPM2 rev 3 compilation. 1622 1623 1624 ---------------------------------------- 1625 08 January 2019. Summary of changes for version 20190108: 1626 1627 1628 1) ACPICA kernel-resident subsystem: 1629 1630 Updated all copyrights to 2019. This affects all source code modules. 1631 1632 1633 2) iASL Compiler/Disassembler and Tools: 1634 1635 ASL test suite (ASLTS): Updated all copyrights to 2019. 1636 1637 Tools: Updated all signon copyrights to 2019. 1638 1639 AcpiExec: Added a new option to dump extra information concerning any 1640 memory leaks detected by the internal object/cache tracking mechanism. - 1641 va 1642 1643 iASL: Updated the table template for the TPM2 table to the newest version 1644 of the table (Revision 4) 1645 1646 1647 ---------------------------------------- 1648 13 December 2018. Summary of changes for version 20181213: 1649 1650 1651 1) ACPICA Kernel-resident Subsystem: 1652 1653 Fixed some buffer length issues with the GenericSerialBus, related to two 1654 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 1655 which are rarely seen in the field. For these, the LEN field of the ASL 1656 buffer is now ignored. Hans de Goede 1657 1658 Implemented a new object evaluation trace mechanism for control methods 1659 and data objects. This includes nested control methods. It is 1660 particularly useful for examining the ACPI execution during system 1661 initialization since the output is relatively terse. The flag below 1662 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 1663 #define ACPI_LV_EVALUATION 0x00080000 1664 1665 Examples: 1666 Enter evaluation : _SB.PCI0._INI (Method) 1667 Exit evaluation : _SB.PCI0._INI 1668 Enter evaluation : _OSI (Method) 1669 Exit evaluation : _OSI 1670 Enter evaluation : _SB.PCI0.TEST (Method) 1671 Nested method call : _SB.PCI0.NST1 1672 Exit nested method : _SB.PCI0.NST1 1673 Exit evaluation : _SB.PCI0.TEST 1674 1675 Added two recently-defined _OSI strings. See 1676 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 1677 osi. 1678 "Windows 2018" 1679 "Windows 2018.2" 1680 1681 Update for buffer-to-string conversions via the ToHexString ASL operator. 1682 A "0x" is now prepended to each of the hex values in the output string. 1683 This provides compatibility with other ACPI implementations. The ACPI 1684 specification is somewhat vague on this issue. 1685 Example output string after conversion: 1686 "0x01,0x02,0x03,0x04,0x05,0x06" 1687 1688 Return a run-time error for TermArg expressions within individual package 1689 elements. Although this is technically supported by the ASL grammar, 1690 other ACPI implementations do not support this either. Also, this fixes a 1691 fault if this type of construct is ever encountered (it never has been). 1692 1693 1694 2) iASL Compiler/Disassembler and Tools: 1695 1696 iASL: Implemented a new compile option (-ww) that will promote individual 1697 warnings and remarks to errors. This is intended to enhance the firmware 1698 build process. 1699 1700 AcpiExec: Implemented a new command-line option (-eo) to support the new 1701 object evaluation trace mechanism described above. 1702 1703 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 1704 instead of a "unknown table" message. 1705 1706 AcpiHelp: Improved support for the "special" predefined names such as 1707 _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 1708 used for "xx" and "x". 1709 1710 ---------------------------------------- 1711 31 October 2018. Summary of changes for version 20181031: 1712 1713 1714 An Operation Region regression was fixed by properly adding address 1715 ranges to a global list during initialization. This allows OS to 1716 accurately check for overlapping regions between native devices (such as 1717 PCI) and Operation regions as well as checking for region conflicts 1718 between two Operation Regions. 1719 1720 Added support for the 2-byte extended opcodes in the code/feature that 1721 attempts to continue parsing during the table load phase. Skip parsing 1722 Device declarations (and other extended opcodes) when an error occurs 1723 during parsing. Previously, only single-byte opcodes were supported. 1724 1725 Cleanup: Simplified the module-level code support by eliminating a 1726 useless global variable (AcpiGbl_GroupModuleLeveCode). 1727 1728 1729 2) iASL Compiler/Disassembler and Tools: 1730 1731 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 1732 could cause a fault in the preprocessor. This was an inadvertent side- 1733 effect from moving more allocations/frees to the local cache/memory 1734 mechanism. 1735 1736 iASL: Enhanced error detection by validating that all NameSeg elements 1737 within a NamePatch actually exist. The previous behavior was spotty at 1738 best, and such errors could be improperly ignored at compiler time (never 1739 at runtime, however. There are two new error messages, as shown in the 1740 examples below: 1741 1742 dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 1743 Error 6161 - ^ One or more objects within 1744 the Pathname do not exist (TTTT.BXXX) 1745 1746 dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 1747 Error 6160 - One or more prefix Scopes do not exist ^ 1748 (BBBB.CBF1) 1749 1750 iASL: Disassembler/table-compiler: Added support for the static data 1751 table TPM2 revision 3 (an older version of TPM2). The support has been 1752 added for the compiler and the disassembler. 1753 1754 Fixed compilation of DOS format data table file on Unix/Linux systems. 1755 iASL now properly detects line continuations (\) for DOS format data 1756 table definition language files on when executing on Unix/Linux. 1757 1758 ---------------------------------------- 1759 03 October 2018. Summary of changes for version 20181003: 1760 1761 1762 2) iASL Compiler/Disassembler and Tools: 1763 1764 Fixed a regression introduced in version 20180927 that could cause the 1765 compiler to fault, especially with NamePaths containing one or more 1766 carats (^). Such as: ^^_SB_PCI0 1767 1768 Added a new remark for the Sleep() operator when the sleep time operand 1769 is larger than one second. This is a very long time for the ASL/BIOS code 1770 and may not be what was intended by the ASL writer. 1771 1772 ---------------------------------------- 1773 27 September 2018. Summary of changes for version 20180927: 1774 1775 1776 1) ACPICA kernel-resident subsystem: 1777 1778 Updated the GPE support to clear the status of all ACPI events when 1779 entering any/all sleep states in order to avoid premature wakeups. In 1780 theory, this may cause some wakeup events to be missed, but the 1781 likelihood of this is small. This change restores the original behavior 1782 of the ACPICA code in order to fix a regression seen from the previous 1783 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 1784 This regression could cause some systems to incorrectly wake immediately. 1785 1786 Updated the execution of the _REG methods during initialization and 1787 namespace loading to bring the behavior into closer conformance to the 1788 ACPI specification and other ACPI implementations: 1789 1790 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 1791 "Control methods must assume all operation regions are inaccessible 1792 until the _REG(RegionSpace, 1) method is executed" 1793 1794 "The exceptions to this rule are: 1795 1. OSPM must guarantee that the following operation regions are always 1796 accessible: 1797 SystemIO operation regions. 1798 SystemMemory operation regions when accessing memory returned by the 1799 System Address Map reporting interfaces." 1800 1801 Since the state of both the SystemIO and SystemMemory address spaces are 1802 defined by the specification to never change, this ACPICA change ensures 1803 that now _REG is never called on them. This solves some problems seen in 1804 the field and provides compatibility with other ACPI implementations. An 1805 update to the upcoming new version of the ACPI specification will help 1806 clarify this behavior. 1807 1808 Updated the implementation of support for the Generic Serial Bus. For the 1809 "bidirectional" protocols, the internal implementation now automatically 1810 creates a return data buffer of the maximum size (255). This handles the 1811 worst-case for data that is returned from the serial bus handler, and 1812 fixes some problems seen in the field. This new buffer is directly 1813 returned to the ASL. As such, there is no true "bidirectional" buffer, 1814 which matches the ACPI specification. This is the reason for the "double 1815 store" seen in the example ASL code in the specification, shown below: 1816 1817 Word Process Call (AttribProcessCall): 1818 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 1819 Field(TOP1, BufferAcc, NoLock, Preserve) 1820 { 1821 FLD1, 8, // Virtual register at command value 1. 1822 } 1823 1824 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 1825 // as BUFF 1826 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 1827 1828 Store(0x5416, DATA) // Save 0x5416 into the data buffer 1829 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 1830 transaction 1831 // This is the "double store". The write to 1832 // FLD1 returns a new buffer, which is stored 1833 // back into BUFF with the second Store. 1834 1835 1836 2) iASL Compiler/Disassembler and Tools: 1837 1838 iASL: Implemented detection of extraneous/redundant uses of the Offset() 1839 operator within a Field Unit list. A remark is now issued for these. For 1840 example, the first two of the Offset() operators below are extraneous. 1841 Because both the compiler and the interpreter track the offsets 1842 automatically, these Offsets simply refer to the current offset and are 1843 unnecessary. Note, when optimization is enabled, the iASL compiler will 1844 in fact remove the redundant Offset operators and will not emit any AML 1845 code for them. 1846 1847 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 1848 Field (OPR1) 1849 { 1850 Offset (0), // Never needed 1851 FLD1, 32, 1852 Offset (4), // Redundant, offset is already 4 (bytes) 1853 FLD2, 8, 1854 Offset (64), // OK use of Offset. 1855 FLD3, 16, 1856 } 1857 dsdt.asl 14: Offset (0), 1858 Remark 2158 - ^ Unnecessary/redundant use of Offset 1859 operator 1860 1861 dsdt.asl 16: Offset (4), 1862 Remark 2158 - ^ Unnecessary/redundant use of Offset 1863 operator 1864 1865 ---------------------------------------- 1866 10 August 2018. Summary of changes for version 20180810: 1867 1868 1869 1) ACPICA kernel-resident subsystem: 1870 1871 Initial ACPI table loading: Attempt to continue loading ACPI tables 1872 regardless of malformed AML. Since migrating table initialization to the 1873 new module-level code support, the AML interpreter rejected tables upon 1874 any ACPI error encountered during table load. This is a problem because 1875 non-serious ACPI errors during table load do not necessarily mean that 1876 the entire definition block (DSDT or SSDT) is invalid. This change 1877 improves the table loading by ignoring some types of errors that can be 1878 generated by incorrect AML. This can range from object type errors, scope 1879 errors, and index errors. 1880 1881 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 1882 during suspend/resume. The status of ACPI events is no longer cleared 1883 when entering the ACPI S5 system state (power off) which caused some 1884 systems to power up immediately after turning off power in certain 1885 situations. This was a functional regression. It was fixed by clearing 1886 the status of all ACPI events again when entering S5 (for system-wide 1887 suspend or hibernation the clearing of the status of all events is not 1888 desirable, as it might cause the kernel to miss wakeup events sometimes). 1889 Rafael Wysocki. 1890 1891 1892 2) iASL Compiler/Disassembler and Tools: 1893 1894 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 1895 elements listed in the initialization file were previously initialized 1896 after the table load and before executing module-level code blocks. 1897 Recent changes in the module-level code support means that the table load 1898 becomes a large control method execution. If fields are used within 1899 module-level code and we are executing with the -fi option, the 1900 initialization values were used to initialize the namespace object(s) 1901 only after the table was finished loading. This change Provides an early 1902 initialization of objects specified in the initialization file so that 1903 field unit values are populated during the table load (not after the 1904 load). 1905 1906 AcpiExec: Fixed a small memory leak regression that could result in 1907 warnings during exit of the utility. These warnings were similar to 1908 these: 1909 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 1910 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 1911 1912 ---------------------------------------- 1913 29 June 2018. Summary of changes for version 20180629: 1914 1915 1916 1) iASL Compiler/Disassembler and Tools: 1917 1918 iASL: Fixed a regression related to the use of the ASL External 1919 statement. Error checking for the use of the External() statement has 1920 been relaxed. Previously, a restriction on the use of External meant that 1921 the referenced named object was required to be defined in a different 1922 table (an SSDT). Thus it would be an error to declare an object as an 1923 external and then define the same named object in the same table. For 1924 example: 1925 DefinitionBlock (...) 1926 { 1927 External (DEV1) 1928 Device (DEV1){...} // This was an error 1929 } 1930 However, this behavior has caused regressions in some existing ASL code, 1931 because there is code that depends on named objects and externals (with 1932 the same name) being declared in the same table. This change will allow 1933 the ASL code above to compile without errors or warnings. 1934 1935 iASL: Implemented ASL language extensions for four operators to make some 1936 of their arguments optional instead of required: 1937 1) Field (RegionName, AccessType, LockRule, UpdateRule) 1938 2) BankField (RegionName, BankName, BankValue, 1939 AccessType, LockRule, UpdateRule) 1940 3) IndexField (IndexName, DataName, 1941 AccessType, LockRule, UpdateRule) 1942 For the Field operators above, the AccessType, LockRule, and UpdateRule 1943 are now optional arguments. The default values are: 1944 AccessType: AnyAcc 1945 LockRule: NoLock 1946 UpdateRule: Preserve 1947 4) Mutex (MutexName, SyncLevel) 1948 For this operator, the SyncLevel argument is now optional. This argument 1949 is rarely used in any meaningful way by ASL code, and thus it makes sense 1950 to make it optional. The default value is: 1951 SyncLevel: 0 1952 1953 iASL: Attempted use of the ASL Unload() operator now results in the 1954 following warning: 1955 "Unload is not supported by all operating systems" 1956 This is in fact very true, and the Unload operator may be completely 1957 deprecated in the near future. 1958 1959 AcpiExec: Fixed a regression for the -fi option (Namespace initialization 1960 file. Recent changes in the ACPICA module-level code support altered the 1961 table load/initialization sequence . This means that the table load has 1962 become a large method execution of the table itself. If Operation Region 1963 Fields are used within any module-level code and the -fi option was 1964 specified, the initialization values were populated only after the table 1965 had completely finished loading (and thus the module-level code had 1966 already been executed). This change moves the initialization of objects 1967 listed in the initialization file to before the table is executed as a 1968 method. Field unit values are now initialized before the table execution 1969 is performed. 1970 1971 ---------------------------------------- 1972 31 May 2018. Summary of changes for version 20180531: 1973 1974 1975 1) ACPICA kernel-resident Subsystem: 1976 1977 Implemented additional support to help ensure that a DSDT or SSDT is 1978 fully loaded even if errors are incurred during the load. The majority of 1979 the problems that are seen is the failure of individual AML operators 1980 that occur during execution of any module-level code (MLC) existing in 1981 the table. This support adds a mechanism to abort the current ASL 1982 statement (AML opcode), emit an error message, and to simply move on to 1983 the next opcode -- instead of aborting the entire table load. This is 1984 different than the execution of a control method where the entire method 1985 is aborted upon any error. The goal is to perform a very "best effort" to 1986 load the ACPI tables. The most common MLC errors that have been seen in 1987 the field are direct references to unresolved ASL/AML symbols (referenced 1988 directly without the use of the CondRefOf operator to validate the 1989 symbol). This new ACPICA behavior is now compatible with other ACPI 1990 implementations. 1991 1992 Interpreter: The Unload AML operator is no longer supported for the 1993 reasons below. An AE_NOT_IMPLEMENTED exception is returned. 1994 1) A correct implementation on at least some hosts may not be possible. 1995 2) Other ACPI implementations do not correctly/fully support it. 1996 3) It requires host device driver support which is not known to exist. 1997 (To properly support namespace unload out from underneath.) 1998 4) This AML operator has never been seen in the field. 1999 2000 Parser: Added a debug option to dump AML parse sub-trees as they are 2001 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 2002 ACPI_DB_PARSE_TREES. 2003 2004 Debugger: Reduced the verbosity for errors incurred during table load and 2005 module-level code execution. 2006 2007 Completed an investigation into adding a namespace node "owner list" 2008 instead of the current "owner ID" associated with namespace nodes. This 2009 list would link together all nodes that are owned by an individual 2010 control method. The purpose would be to enhance control method execution 2011 by speeding up cleanup during method exit (all namespace nodes created by 2012 a method are deleted upon method termination.) Currently, the entire 2013 namespace must be searched for matching owner IDs if (and only if) the 2014 method creates named objects outside of the local scope. However, by far 2015 the most common case is that methods create objects locally, not outside 2016 the method scope. There is already an ACPICA optimization in place that 2017 only searches the entire namespace in the rare case of a method creating 2018 objects elsewhere in the namespace. Therefore, it is felt that the 2019 overhead of adding an additional pointer to each namespace node to 2020 implement the owner list makes this feature unnecessary. 2021 2022 2023 2) iASL Compiler/Disassembler and Tools: 2024 2025 iASL, Disassembler, and Template generator: Implemented support for 2026 Revision D of the IORT table. Adds a new subtable that is used to specify 2027 SMMUv3 PMCGs. rmurphy-arm. 2028 2029 Disassembler: Restored correct table header validation for the "special" 2030 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 2031 table header and must be special-cased. This was a regression that has 2032 been present for apparently a long time. 2033 2034 AcpiExec: Reduced verbosity of the local exception handler implemented 2035 within acpiexec. This handler is invoked by ACPICA upon any exceptions 2036 generated during control method execution. A new option was added: -vh 2037 restores the original verbosity level if desired. 2038 2039 AcpiExec: Changed the default base from decimal to hex for the -x option 2040 (set debug level). This simplifies the use of this option and matches the 2041 behavior of the corresponding iASL -x option. 2042 2043 AcpiExec: Restored a force-exit on multiple control-c (sigint) 2044 interrupts. This allows program termination even if other issues cause 2045 the control-c to fail. 2046 2047 ASL test suite (ASLTS): Added tests for the recently implemented package 2048 element resolution mechanism that allows forward references to named 2049 objects from individual package elements (this mechanism provides 2050 compatibility with other ACPI implementations.) 2051 2052 2053 ---------------------------------------- 2054 8 May 2018. Summary of changes for version 20180508: 2055 2056 2057 1) ACPICA kernel-resident subsystem: 2058 2059 Completed the new (recently deployed) package resolution mechanism for 2060 the Load and LoadTable ASL/AML operators. This fixes a regression that 2061 was introduced in version 20180209 that could result in an 2062 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 2063 (SSDT) that contains package objects. 2064 2065 2066 2) iASL Compiler/Disassembler and Tools: 2067 2068 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 2069 1 MB. This change allows for table offsets within the acpidump file to be 2070 up to 8 characters. These changes are backwards compatible with existing 2071 acpidump files. 2072 2073 2074 ---------------------------------------- 2075 27 April 2018. Summary of changes for version 20180427: 2076 2077 2078 1) ACPICA kernel-resident subsystem: 2079 2080 Debugger: Added support for Package objects in the "Test Objects" 2081 command. This command walks the entire namespace and evaluates all named 2082 data objects (Integers, Strings, Buffers, and now Packages). 2083 2084 Improved error messages for the namespace root node. Originally, the root 2085 was referred to by the confusing string "\___". This has been replaced by 2086 "Namespace Root" for clarification. 2087 2088 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 2089 Ian King <colin.king (a] canonical.com>. 2090 2091 2092 2) iASL Compiler/Disassembler and Tools: 2093 2094 iASL: Implemented support to detect and flag illegal forward references. 2095 For compatibility with other ACPI implementations, these references are 2096 now illegal at the root level of the DSDT or SSDTs. Forward references 2097 have always been illegal within control methods. This change should not 2098 affect existing ASL/AML code because of the fact that these references 2099 have always been illegal in the other ACPI implementation. 2100 2101 iASL: Added error messages for the case where a table OEM ID and OEM 2102 TABLE ID strings are longer than the ACPI-defined length. Previously, 2103 these strings were simply silently truncated. 2104 2105 iASL: Enhanced the -tc option (which creates an AML hex file in C, 2106 suitable for import into a firmware project): 2107 1) Create a unique name for the table, to simplify use of multiple 2108 SSDTs. 2109 2) Add a protection #ifdef in the file, similar to a .h header file. 2110 With assistance from Sami Mujawar, sami.mujawar (a] arm.com and Evan Lloyd, 2111 evan.lloyd (a] arm.com 2112 2113 AcpiExec: Added a new option, -df, to disable the local fault handler. 2114 This is useful during debugging, where it may be desired to drop into a 2115 debugger on a fault. 2116 2117 ---------------------------------------- 2118 13 March 2018. Summary of changes for version 20180313: 2119 2120 2121 1) ACPICA kernel-resident subsystem: 2122 2123 Implemented various improvements to the GPE support: 2124 2125 1) Dispatch all active GPEs at initialization time so that no GPEs are 2126 lost. 2127 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 2128 before devices are enumerated. 2129 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 2130 IRQs are not lost. 2131 4) Add parallel GPE handling to eliminate the possibility of dispatching 2132 the same GPE twice. 2133 5) Dispatch any pending GPEs after enabling for the first time. 2134 2135 AcpiGetObjectInfo - removed support for the _STA method. This was causing 2136 problems on some platforms. 2137 2138 Added a new _OSI string, "Windows 2017.2". 2139 2140 Cleaned up and simplified the module-level code support. These changes 2141 are in preparation for the eventual removal of the legacy MLC support 2142 (deferred execution), replaced by the new MLC architecture which executes 2143 the MLC as a table is loaded (DSDT/SSDTs). 2144 2145 Changed a compile-time option to a runtime option. Changes the option to 2146 ignore ACPI table load-time package resolution errors into a runtime 2147 option. Used only for platforms that generate many AE_NOT_FOUND errors 2148 during boot. AcpiGbl_IgnorePackageResolutionErrors. 2149 2150 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 2151 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 2152 compilation errors from unused variables (seen with some compilers). 2153 2154 2155 2) iASL Compiler/Disassembler and Tools: 2156 2157 ASLTS: parallelized execution in order to achieve an (approximately) 2X 2158 performance increase. 2159 2160 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 2161 error reporting. 2162 2163 ---------------------------------------- 2164 09 February 2018. Summary of changes for version 20180209: 2165 2166 2167 1) ACPICA kernel-resident subsystem: 2168 2169 Completed the final integration of the recent changes to Package Object 2170 handling and the module-level AML code support. This allows forward 2171 references from individual package elements when the package object is 2172 declared from within module-level code blocks. Provides compatibility 2173 with other ACPI implementations. 2174 2175 The new architecture for the AML module-level code has been completed and 2176 is now the default for the ACPICA code. This new architecture executes 2177 the module-level code in-line as the ACPI table is loaded/parsed instead 2178 of the previous architecture which deferred this code until after the 2179 table was fully loaded. This solves some ASL code ordering issues and 2180 provides compatibility with other ACPI implementations. At this time, 2181 there is an option to fallback to the earlier architecture, but this 2182 support is deprecated and is planned to be completely removed later this 2183 year. 2184 2185 Added a compile-time option to ignore AE_NOT_FOUND exceptions during 2186 resolution of named reference elements within Package objects. Although 2187 this is potentially a serious problem, it can generate a lot of 2188 noise/errors on platforms whose firmware carries around a bunch of unused 2189 Package objects. To disable these errors, define 2190 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 2191 errors are always reported for ACPICA applications such as AcpiExec. 2192 2193 Fixed a regression related to the explicit type-conversion AML operators 2194 (ToXXXX). The regression was introduced early in 2017 but was not seen 2195 until recently because these operators are not fully supported by other 2196 ACPI implementations and are thus rarely used by firmware developers. The 2197 operators are defined by the ACPI specification to not implement the 2198 "implicit result object conversion". The regression incorrectly 2199 introduced this object conversion for the following explicit conversion 2200 operators: 2201 ToInteger 2202 ToString 2203 ToBuffer 2204 ToDecimalString 2205 ToHexString 2206 ToBCD 2207 FromBCD 2208 2209 2210 2) iASL Compiler/Disassembler and Tools: 2211 2212 iASL: Fixed a problem with the compiler constant folding feature as 2213 related to the ToXXXX explicit conversion operators. These operators do 2214 not support the "implicit result object conversion" by definition. Thus, 2215 ASL expressions that use these operators cannot be folded to a simple 2216 Store operator because Store implements the implicit conversion. This 2217 change uses the CopyObject operator for the ToXXXX operator folding 2218 instead. CopyObject is defined to not implement implicit result 2219 conversions and is thus appropriate for folding the ToXXXX operators. 2220 2221 iASL: Changed the severity of an error condition to a simple warning for 2222 the case where a symbol is declared both locally and as an external 2223 symbol. This accommodates existing ASL code. 2224 2225 AcpiExec: The -ep option to enable the new architecture for module-level 2226 code has been removed. It is replaced by the -dp option which instead has 2227 the opposite effect: it disables the new architecture (the default) and 2228 enables the legacy architecture. When the legacy code is removed in the 2229 future, the -dp option will be removed also. 2230 2231 ---------------------------------------- 2232 05 January 2018. Summary of changes for version 20180105: 2233 2234 2235 1) ACPICA kernel-resident subsystem: 2236 2237 Updated all copyrights to 2018. This affects all source code modules. 2238 2239 Fixed a possible build error caused by an unresolved reference to the 2240 AcpiUtSafeStrncpy function. 2241 2242 Removed NULL pointer arithmetic in the various pointer manipulation 2243 macros. All "(void *) NULL" constructs are converted to "(void *) 0". 2244 This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 2245 2246 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 2247 Mittal. 2248 2249 2250 2) iASL Compiler/Disassembler and Tools: 2251 2252 ASLTS: Updated all copyrights to 2018. 2253 2254 Tools: Updated all signon copyrights to 2018. 2255 2256 AcpiXtract: Fixed a regression related to ACPI table signatures where the 2257 signature was truncated to 3 characters (instead of 4). 2258 2259 AcpiExec: Restore the original terminal mode after the use of the -v and 2260 -vd options. 2261 2262 ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 2263 2264 ---------------------------------------- 2265 14 December 2017. Summary of changes for version 20171214: 2266 2267 2268 1) ACPICA kernel-resident subsystem: 2269 2270 Fixed a regression in the external (public) AcpiEvaluateObjectTyped 2271 interface where the optional "pathname" argument had inadvertently become 2272 a required argument returning an error if omitted (NULL pointer 2273 argument). 2274 2275 Fixed two possible memory leaks related to the recently developed "late 2276 resolution" of reference objects within ASL Package Object definitions. 2277 2278 Added two recently defined _OSI strings: "Windows 2016" and "Windows 2279 2017". Mario Limonciello. 2280 2281 Implemented and deployed a safer version of the C library function 2282 strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 2283 creation of unterminated strings as a possible result of a standard 2284 strncpy. 2285 2286 Cleaned up and restructured the global variable file (acglobal.h). There 2287 are many changes, but no functional changes. 2288 2289 2290 2) iASL Compiler/Disassembler and Tools: 2291 2292 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 2293 optional OemData field at the end of the table was incorrectly required 2294 for proper compilation. It is now correctly an optional field. 2295 2296 ASLTS: The entire suite was converted from standard ASL to the ASL+ 2297 language, using the ASL-to-ASL+ converter which is integrated into the 2298 iASL compiler. A binary compare of all output files has verified the 2299 correctness of the conversion. 2300 2301 iASL: Fixed the source code build for platforms where "char" is unsigned. 2302 This affected the iASL lexer only. Jung-uk Kim. 2303 2304 ---------------------------------------- 2305 10 November 2017. Summary of changes for version 20171110: 2306 2307 2308 1) ACPICA kernel-resident subsystem: 2309 2310 This release implements full support for ACPI 6.2A: 2311 NFIT - Added a new subtable, "Platform Capabilities Structure" 2312 No other changes to ACPICA were required, since ACPI 6.2A is primarily an 2313 errata release of the specification. 2314 2315 Other ACPI table changes: 2316 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 2317 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 2318 Linton 2319 2320 Utilities: Modified the string/integer conversion functions to use 2321 internal 64-bit divide support instead of a native divide. On 32-bit 2322 platforms, a 64-bit divide typically requires a library function which 2323 may not be present in the build (kernel or otherwise). 2324 2325 Implemented a targeted error message for timeouts returned from the 2326 Embedded Controller device driver. This is seen frequently enough to 2327 special-case an AE_TIME returned from an EC operation region access: 2328 "Timeout from EC hardware or EC device driver" 2329 2330 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 2331 runtime error messages have the identical prefix. 2332 2333 2334 2) iASL Compiler/Disassembler and Tools: 2335 2336 AcpiXtract: Fixed a problem with table header detection within the 2337 acpidump file. Processing a table could be ended early if a 0x40 (@) 2338 appears in the original binary table, resulting in the @ symbol appearing 2339 in the decoded ASCII field at the end of the acpidump text line. The 2340 symbol caused acpixtract to incorrectly think it had reached the end of 2341 the current table and the beginning of a new table. 2342 2343 AcpiXtract: Added an option (-f) to ignore some errors during table 2344 extraction. This initial implementation ignores non-ASCII and non- 2345 printable characters found in the acpidump text file. 2346 2347 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 2348 for ASLTS. This feature is used to track memory allocations from 2349 different memory caches within the ACPICA code. At the end of an ASLTS 2350 run, these memory statistics are recorded and stored in a log file. 2351 2352 Debugger (user-space version): Implemented a simple "Background" command. 2353 Creates a new thread to execute a control method in the background, while 2354 control returns to the debugger prompt to allow additional commands. 2355 Syntax: Background <Namepath> [Arguments] 2356 2357 ---------------------------------------- 2358 29 September 2017. Summary of changes for version 20170929: 2359 2360 2361 1) ACPICA kernel-resident subsystem: 2362 2363 Redesigned and implemented an improved ASL While() loop timeout 2364 mechanism. This mechanism is used to prevent infinite loops in the kernel 2365 AML interpreter caused by either non-responsive hardware or incorrect AML 2366 code. The new implementation uses AcpiOsGetTimer instead of a simple 2367 maximum loop count, and is thus more accurate and constant across 2368 different machines. The default timeout is currently 30 seconds, but this 2369 may be adjusted later. 2370 2371 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 2372 better reflect the new implementation of the loop timeout mechanism. 2373 2374 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 2375 and to fix an off-by-one error. Jung-uk Kim. 2376 2377 Fixed an EFI build problem by updating the makefiles to for a new file 2378 that was added, utstrsuppt.c 2379 2380 2381 2) iASL Compiler/Disassembler and Tools: 2382 2383 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 2384 includes support in the table disassembler, compiler, and template 2385 generator. 2386 2387 iASL: Added an exception for an illegal type of recursive method 2388 invocation. If a method creates named objects, the first recursive call 2389 will fail at runtime. This change adds an error detection at compile time 2390 to catch the problem up front. Note: Marking such a method as 2391 "serialized" will not help with this problem, because the same thread can 2392 acquire the method mutex more than once. Example compiler and runtime 2393 output: 2394 2395 Method (MTH1) 2396 { 2397 Name (INT1, 1) 2398 MTH1 () 2399 } 2400 2401 dsdt.asl 22: MTH1 () 2402 Error 6152 - ^ Illegal recursive call to method 2403 that creates named objects (MTH1) 2404 2405 Previous runtime exception: 2406 ACPI Error: [INT1] Namespace lookup failure, 2407 AE_ALREADY_EXISTS (20170831/dswload2-465) 2408 2409 iASL: Updated support for External() opcodes to improve namespace 2410 management and error detection. These changes are related to issues seen 2411 with multiple-segment namespace pathnames within External declarations, 2412 such as below: 2413 2414 External(\_SB.PCI0.GFX0, DeviceObj) 2415 External(\_SB.PCI0.GFX0.ALSI) 2416 2417 iASL: Implemented support for multi-line error/warning messages. This 2418 enables more detailed and helpful error messages as below, from the 2419 initial deployment for the duplicate names error: 2420 2421 DSDT.iiii 1692: Device(PEG2) { 2422 Error 6074 - ^ Name already exists in scope 2423 (PEG2) 2424 2425 Original name creation/declaration below: 2426 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 2427 2428 AcpiXtract: Added additional flexibility to support differing input hex 2429 dump formats. Specifically, hex dumps that contain partial disassembly 2430 and/or comments within the ACPI table data definition. There exist some 2431 dump utilities seen in the field that create this type of hex dump (such 2432 as Simics). For example: 2433 2434 DSDT @ 0xdfffd0c0 (10999 bytes) 2435 Signature DSDT 2436 Length 10999 2437 Revision 1 2438 Checksum 0xf3 (Ok) 2439 OEM_ID BXPC 2440 OEM_table_id BXDSDT 2441 OEM_revision 1 2442 Creator_id 1280593481 2443 Creator_revision 537399345 2444 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 2445 ... 2446 2af0: 5f 4c 30 46 00 a4 01 2447 2448 Test suite: Miscellaneous changes/fixes: 2449 More cleanup and simplification of makefiles 2450 Continue compilation of test cases after a compile failure 2451 Do not perform binary compare unless both files actually exist 2452 2453 iASL: Performed some code/module restructuring. Moved all memory 2454 allocation functions to new modules. Two new files, aslallocate.c and 2455 aslcache.c 2456 2457 ---------------------------------------- 2458 31 August 2017. Summary of changes for version 20170831: 2459 2460 2461 1) ACPICA kernel-resident subsystem: 2462 2463 Implemented internal support for full 64-bit addresses that appear in all 2464 Generic Address Structure (GAS) structures. Previously, only the lower 32 2465 bits were used. Affects the use of GAS structures in the FADT and other 2466 tables, as well as the GAS structures passed to the AcpiRead and 2467 AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 2468 2469 Added header support for the PDTT ACPI table (Processor Debug Trigger 2470 Table). Full support in the iASL Data Table Compiler and disassembler is 2471 forthcoming. 2472 2473 2474 2) iASL Compiler/Disassembler and Tools: 2475 2476 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 2477 Properties Topology Table) where a flag bit was specified in the wrong 2478 bit position ("Line Size Valid", bit 6). 2479 2480 iASL: Implemented support for Octal integer constants as defined by the 2481 ASL language grammar, per the ACPI specification. Any integer constant 2482 that starts with a zero is an octal constant. For example, 2483 Store (037777, Local0) /* Octal constant */ 2484 Store (0x3FFF, Local0) /* Hex equivalent */ 2485 Store (16383, Local0) /* Decimal equivalent */ 2486 2487 iASL: Improved overflow detection for 64-bit string conversions during 2488 compilation of integer constants. "Overflow" in this case means a string 2489 that represents an integer that is too large to fit into a 64-bit value. 2490 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 2491 the low-order 32 bits with a warning, as previously implemented. Several 2492 new exceptions are defined that indicate a 64-bit overflow, as well as 2493 the base (radix) that was used during the attempted conversion. Examples: 2494 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 2495 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 2496 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 2497 2498 iASL: Added a warning for the case where a ResourceTemplate is declared 2499 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 2500 this case, the resulting template is created with a single END_TAG 2501 descriptor, which is essentially useless. 2502 2503 iASL: Expanded the -vw option (ignore specific warnings/remarks) to 2504 include compilation error codes as well. 2505 2506 ---------------------------------------- 2507 28 July 2017. Summary of changes for version 20170728: 2508 2509 2510 1) ACPICA kernel-resident subsystem: 2511 2512 Fixed a regression seen with small resource descriptors that could cause 2513 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 2514 2515 AML interpreter: Implemented a new feature that allows forward references 2516 from individual named references within package objects that are 2517 contained within blocks of "module-level code". This provides 2518 compatibility with other ACPI implementations and supports existing 2519 firmware that depends on this feature. Example: 2520 2521 Name (ABCD, 1) 2522 If (ABCD) /* An If() at module-level */ 2523 { 2524 Name (PKG1, Package() 2525 { 2526 INT1 /* Forward reference to object INT1 2527 */ 2528 }) 2529 Name (INT1, 0x1234) 2530 } 2531 2532 AML Interpreter: Fixed a problem with the Alias() operator where aliases 2533 to some ASL objects were not handled properly. Objects affected are: 2534 Mutex, Event, and OperationRegion. 2535 2536 AML Debugger: Enhanced to properly handle AML Alias objects. These 2537 objects have one level of indirection which was not fully supported by 2538 the debugger. 2539 2540 Table Manager: Added support to detect and ignore duplicate SSDTs within 2541 the XSDT/RSDT. This error in the XSDT has been seen in the field. 2542 2543 EFI and EDK2 support: 2544 Enabled /WX flag for MSVC builds 2545 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 2546 Added local support for 64-bit multiply and shift operations 2547 Added support to compile acpidump.efi on Windows 2548 Added OSL function stubs for interfaces not used under EFI 2549 2550 Added additional support for the _DMA predefined name. _DMA returns a 2551 buffer containing a resource template. This change add support within the 2552 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 2553 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi (a] arm.com> 2554 2555 2556 2) iASL Compiler/Disassembler and Tools: 2557 2558 iASL: Fixed a problem where the internal input line buffer(s) could 2559 overflow if there are very long lines in the input ASL source code file. 2560 Implemented buffer management that automatically increases the size of 2561 the buffers as necessary. 2562 2563 iASL: Added an option (-vx) to "expect" particular remarks, warnings and 2564 errors. If the specified exception is not raised during compilation, the 2565 compiler emits an error. This is intended to support the ASL test suite, 2566 but may be useful in other contexts. 2567 2568 iASL: Implemented a new predefined macro, __METHOD__, which returns a 2569 string containing the name of the current control method that is being 2570 compiled. 2571 2572 iASL: Implemented debugger and table compiler support for the SDEI ACPI 2573 table (Software Delegated Exception Interface). James Morse 2574 <james.morse (a] arm.com> 2575 2576 Unix/Linux makefiles: Added an option to disable compile optimizations. 2577 The disable occurs when the NOOPT flag is set to TRUE. 2578 theracermaster (a] gmail.com 2579 2580 Acpidump: Added support for multiple DSDT and FACS tables. This can occur 2581 when there are different tables for 32-bit versus 64-bit. 2582 2583 Enhanced error reporting for the ASL test suite (ASLTS) by removing 2584 unnecessary/verbose text, and emit the actual line number where an error 2585 has occurred. These changes are intended to improve the usefulness of the 2586 test suite. 2587 2588 ---------------------------------------- 2589 29 June 2017. Summary of changes for version 20170629: 2590 2591 2592 1) ACPICA kernel-resident subsystem: 2593 2594 Tables: Implemented a deferred ACPI table verification. This is useful 2595 for operating systems where the tables cannot be verified in the early 2596 initialization stage due to early memory mapping limitations on some 2597 architectures. Lv Zheng. 2598 2599 Tables: Removed the signature validation for dynamically loaded tables. 2600 Provides compatibility with other ACPI implementations. Previously, only 2601 SSDT tables were allowed, as per the ACPI specification. Now, any table 2602 signature can be used via the Load() operator. Lv Zheng. 2603 2604 Tables: Fixed several mutex issues that could cause errors during table 2605 acquisition. Lv Zheng. 2606 2607 Tables: Fixed a problem where an ACPI warning could be generated if a 2608 null pointer was passed to the AcpiPutTable interface. Lv Zheng. 2609 2610 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 2611 AcpiPutTable interfaces. This applies to the "late stage" table loading 2612 when the use of AcpiPutTable is no longer required (since the system 2613 memory manager is fully running and available). Lv Zheng. 2614 2615 Fixed/Reverted a regression during processing of resource descriptors 2616 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 2617 exception in this case. 2618 2619 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 2620 I/O Remapping specification. Robin Murphy <robin.murphy (a] arm.com> 2621 2622 Interpreter: Fixed a possible fault if an Alias operator with an invalid 2623 or duplicate target is encountered during Alias creation in 2624 AcpiExCreateAlias. Alex James <theracermaster (a] gmail.com> 2625 2626 Added an option to use designated initializers for function pointers. 2627 Kees Cook <keescook (a] google.com> 2628 2629 2630 2) iASL Compiler/Disassembler and Tools: 2631 2632 iASL: Allow compilation of External declarations with target pathnames 2633 that refer to existing named objects within the table. Erik Schmauss. 2634 2635 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 2636 FieldUnit name also is declared via External in the same table. Erik 2637 Schmauss. 2638 2639 iASL: Allow existing scope names within pathnames used in External 2640 statements. For example: 2641 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 2642 Device (ABCD) 2643 2644 iASL: IORT ACPI table: Implemented changes required to decode the new 2645 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 2646 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni (a] cavium.com> 2647 2648 Disassembler: Don't abort disassembly on errors from External() 2649 statements. Erik Schmauss. 2650 2651 Disassembler: fixed a possible fault when one of the Create*Field 2652 operators references a Resource Template. ACPICA Bugzilla 1396. 2653 2654 iASL: In the source code, resolved some naming inconsistences across the 2655 parsing support. Fixes confusion between "Parse Op" and "Parse Node". 2656 Adds a new file, aslparseop.c 2657 2658 ---------------------------------------- 2659 31 May 2017. Summary of changes for version 20170531: 2660 2661 2662 0) ACPI 6.2 support: 2663 2664 The ACPI specification version 6.2 has been released and is available at 2665 http://uefi.org/specifications 2666 2667 This version of ACPICA fully supports the ACPI 6.2 specification. Changes 2668 are summarized below. 2669 2670 New ACPI tables (Table Compiler/Disassembler/Templates): 2671 HMAT (Heterogeneous Memory Attributes Table) 2672 WSMT (Windows SMM Security Mitigation Table) 2673 PPTT (Processor Properties Topology Table) 2674 2675 New subtables for existing ACPI tables: 2676 HEST (New subtable, Arch-deferred machine check) 2677 SRAT (New subtable, Arch-specific affinity structure) 2678 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 2679 2680 Simple updates for existing ACPI tables: 2681 BGRT (two new flag bits) 2682 HEST (New bit defined for several subtables, GHES_ASSIST) 2683 2684 New Resource Descriptors and Resource macros (Compiler/Disassembler): 2685 PinConfig() 2686 PinFunction() 2687 PinGroup() 2688 PinGroupConfig() 2689 PinGroupFunction() 2690 New type for hardware error notification (section 18.3.2.9) 2691 2692 New predefined names/methods (Compiler/Interpreter): 2693 _HMA (Heterogeneous Memory Attributes) 2694 _LSI (Label Storage Information) 2695 _LSR (Label Storage Read) 2696 _LSW (Label Storage Write) 2697 2698 ASL grammar/macro changes (Compiler): 2699 For() ASL macro, implemented with the AML while operator 2700 Extensions to Concatenate operator 2701 Support for multiple definition blocks in same ASL file 2702 Clarification for Buffer operator 2703 Allow executable AML code underneath all scopes (Devices, etc.) 2704 Clarification/change for the _OSI return value 2705 ASL grammar update for reference operators 2706 Allow a zero-length string for AML filename in DefinitionBlock 2707 2708 Miscellaneous: 2709 New device object notification value 2710 Remove a notify value (0x0C) for graceful shutdown 2711 New UUIDs for processor/cache properties and 2712 physical package property 2713 New _HID, ACPI0014 (Wireless Power Calibration Device) 2714 2715 2716 1) ACPICA kernel-resident subsystem: 2717 2718 Added support to disable ACPI events on hardware-reduced platforms. 2719 Eliminates error messages of the form "Could not enable fixed event". Lv 2720 Zheng 2721 2722 Fixed a problem using Device/Thermal objects with the ObjectType and 2723 DerefOf ASL operators. This support had not been fully/properly 2724 implemented. 2725 2726 Fixed a problem where if a Buffer object containing a resource template 2727 was longer than the actual resource template, an error was generated -- 2728 even though the AML is legal. This case has been seen in the field. 2729 2730 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 2731 The values for DUAL_PIC and MULTIPLE_APIC were reversed. 2732 2733 Added header file changes for the TPM2 ACPI table. Update to new version 2734 of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 2735 2736 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 2737 These interfaces are intended to be used only in conjunction with the 2738 predefined _DLM method (Device Lock Method). "This object appears in a 2739 device scope when AML access to the device must be synchronized with the 2740 OS environment". 2741 2742 Example Code and Data Size: These are the sizes for the OS-independent 2743 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2744 debug version of the code includes the debug output trace mechanism and 2745 has a much larger code and data size. 2746 2747 Current Release: 2748 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 2749 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 2750 Previous Release: 2751 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2752 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2753 2754 2755 2) iASL Compiler/Disassembler and Tools: 2756 2757 iASL: Fixed a problem where an External() declaration could not refer to 2758 a Field Unit. Erik Schmauss. 2759 2760 Disassembler: Improved support for the Switch/Case operators. This 2761 feature will disassemble AML code back to the original Switch operators 2762 when possible, instead of an If..Else sequence. David Box 2763 2764 iASL and disassembler: Improved the handling of multiple extraneous 2765 parentheses for both ASL input and disassembled ASL output. 2766 2767 Improved the behavior of the iASL compiler and disassembler to detect 2768 improper use of external declarations 2769 2770 Disassembler: Now aborts immediately upon detection of an unknown AML 2771 opcode. The AML parser has no real way to recover from this, and can 2772 result in the creation of an ill-formed parse tree that causes errors 2773 later during the disassembly. 2774 2775 All tools: Fixed a problem where the Unix application OSL did not handle 2776 control-c correctly. For example, a control-c could incorrectly wake the 2777 debugger. 2778 2779 AcpiExec: Improved the Control-C handling and added a handler for 2780 segmentation faults (SIGSEGV). Supports both Windows and Unix-like 2781 environments. 2782 2783 Reduced the verbosity of the generic unix makefiles. Previously, each 2784 compilation displayed the full set of compiler options. This has been 2785 eliminated as the options are easily inspected within the makefiles. Each 2786 compilation now results in a single line of output. 2787 2788 ---------------------------------------- 2789 03 March 2017. Summary of changes for version 20170303: 2790 2791 2792 0) ACPICA licensing: 2793 2794 The licensing information at the start of each source code module has 2795 been updated. In addition to the Intel license, the dual GPLv2/BSD 2796 license has been added for completeness. Now, a single version of the 2797 source code should be suitable for all ACPICA customers. This is the 2798 major change for this release since it affects all source code modules. 2799 2800 2801 1) ACPICA kernel-resident subsystem: 2802 2803 Fixed two issues with the common asltypes.h header that could cause 2804 problems in some environments: (Kim Jung-uk) 2805 Removed typedef for YY_BUFFER_STATE ? 2806 Fixes an error with earlier versions of Flex. 2807 Removed use of FILE typedef (which is only defined in stdio.h) 2808 2809 2810 2) iASL Compiler/Disassembler and Tools: 2811 2812 Disassembler: fixed a regression introduced in 20170224. A fix for a 2813 memory leak related to resource descriptor tags (names) could fault when 2814 the disassembler was generated with 64-bit compilers. 2815 2816 The ASLTS test suite has been updated to implement a new testing 2817 architecture. During generation of the suite from ASL source, both the 2818 ASL and ASL+ compilers are now validated, as well as the disassembler 2819 itself (Erik Schmauss). The architecture executes as follows: 2820 2821 For every ASL source module: 2822 Compile (legacy ASL compilation) 2823 Disassemble the resulting AML to ASL+ source code 2824 Compile the new ASL+ module 2825 Perform a binary compare on the legacy AML and the new ASL+ AML 2826 The ASLTS suite then executes normally using the AML binaries. 2827 2828 ---------------------------------------- 2829 24 February 2017. Summary of changes for version 20170224: 2830 2831 2832 1) ACPICA kernel-resident subsystem: 2833 2834 Interpreter: Fixed two issues with the control method return value auto- 2835 repair feature, where an attempt to double-delete an internal object 2836 could result in an ACPICA warning (for _CID repair and others). No fault 2837 occurs, however, because the attempted deletion (actually a release to an 2838 internal cache) is detected and ignored via object poisoning. 2839 2840 Debugger: Fixed an AML interpreter mutex issue during the single stepping 2841 of control methods. If certain debugger commands are executed during 2842 stepping, a mutex acquire/release error could occur. Lv Zheng. 2843 2844 Fixed some issues generating ACPICA with the Intel C compiler by 2845 restoring the original behavior and compiler-specific include file in 2846 acenv.h. Lv Zheng. 2847 2848 Example Code and Data Size: These are the sizes for the OS-independent 2849 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2850 debug version of the code includes the debug output trace mechanism and 2851 has a much larger code and data size. 2852 2853 Current Release: 2854 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 2855 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 2856 Previous Release: 2857 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2858 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2859 2860 2861 2) iASL Compiler/Disassembler and Tools: 2862 2863 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 2864 tool has been designed, implemented, and included in this release. The 2865 key feature of this utility is that the original comments within the 2866 input ASL file are preserved during the conversion process, and included 2867 within the converted ASL+ file -- thus creating a transparent conversion 2868 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 2869 2870 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 2871 converted code 2872 2873 iASL/Disassembler: Improved the detection and correct disassembly of 2874 Switch/Case operators. This feature detects sequences of if/elseif/else 2875 operators that originated from ASL Switch/Case/Default operators and 2876 emits the original operators. David Box. 2877 2878 iASL: Improved the IORT ACPI table support in the following areas. Lv 2879 Zheng: 2880 Clear MappingOffset if the MappingCount is zero. 2881 Fix the disassembly of the SMMU GSU interrupt offset. 2882 Update the template file for the IORT table. 2883 2884 Disassembler: Enhanced the detection and disassembly of resource 2885 template/descriptor within a Buffer object. An EndTag descriptor is now 2886 required to have a zero second byte, since all known ASL compilers emit 2887 this. This helps eliminate incorrect decisions when a buffer is 2888 disassembled (false positives on resource templates). 2889 2890 ---------------------------------------- 2891 19 January 2017. Summary of changes for version 20170119: 2892 2893 2894 1) General ACPICA software: 2895 2896 Entire source code base: Added the 2017 copyright to all source code 2897 legal/licensing module headers and utility/tool signons. This includes 2898 the standard Linux dual-license header. This affects virtually every file 2899 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 2900 the ACPICA test suite. 2901 2902 2903 2) iASL Compiler/Disassembler and Tools: 2904 2905 iASL: Removed/fixed an inadvertent remark when a method argument 2906 containing a reference is used as a target operand within the method (and 2907 never used as a simple argument), as in the example below. Jeffrey Hugo. 2908 2909 dsdt.asl 1507: Store(0x1, Arg0) 2910 Remark 2146 - ^ Method Argument is never used (Arg0) 2911 2912 All tools: Removed the bit width of the compiler that generated the tool 2913 from the common signon for all user space tools. This proved to be 2914 confusing and unnecessary. This includes similar removal of HARDWARE_NAME 2915 from the generic makefiles (Thomas Petazzoni). Example below. 2916 2917 Old: 2918 ASL+ Optimizing Compiler version 20170119-32 2919 ASL+ Optimizing Compiler version 20170119-64 2920 2921 New: 2922 ASL+ Optimizing Compiler version 20170119 2923 2924 ---------------------------------------- 2925 22 December 2016. Summary of changes for version 20161222: 2926 2927 2928 1) ACPICA kernel-resident subsystem: 2929 2930 AML Debugger: Implemented a new mechanism to simplify and enhance 2931 debugger integration into all environments, including kernel debuggers 2932 and user-space utilities, as well as remote debug services. This 2933 mechanism essentially consists of new OSL interfaces to support debugger 2934 initialization/termination, as well as wait/notify interfaces to perform 2935 the debugger handshake with the host. Lv Zheng. 2936 2937 New OSL interfaces: 2938 AcpiOsInitializeDebugger (void) 2939 AcpiOsTerminateDebugger (void) 2940 AcpiOsWaitCommandReady (void) 2941 AcpiOsNotifyCommandComplete (void) 2942 2943 New OS services layer: 2944 osgendbg.c -- Example implementation, and used for AcpiExec 2945 2946 Update for Generic Address Space (GAS) support: Although the AccessWidth 2947 and/or BitOffset fields of the GAS are not often used, this change now 2948 fully supports these fields. This affects the internal support for FADT 2949 registers, registers in other ACPI data tables, and the AcpiRead and 2950 AcpiWrite public interfaces. Lv Zheng. 2951 2952 Sleep support: In order to simplify integration of ACPI sleep for the 2953 various host operating systems, a new OSL interface has been introduced. 2954 AcpiOsEnterSleep allows the host to perform any required operations 2955 before the final write to the sleep control register(s) is performed by 2956 ACPICA. Lv Zheng. 2957 2958 New OSL interface: 2959 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 2960 2961 Called from these internal interfaces: 2962 AcpiHwLegacySleep 2963 AcpiHwExtendedSleep 2964 2965 EFI support: Added a very small EFI/ACPICA example application. Provides 2966 a simple demo for EFI integration, as well as assisting with resolution 2967 of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 2968 2969 source/tools/efihello/efihello.c 2970 2971 Local C library: Implemented several new functions to enhance ACPICA 2972 portability, for environments where these clib functions are not 2973 available (such as EFI). Lv Zheng: 2974 putchar 2975 getchar 2976 strpbrk 2977 strtok 2978 memmove 2979 2980 Fixed a regression where occasionally a valid resource descriptor was 2981 incorrectly detected as invalid at runtime, and a 2982 AE_AML_NO_RESOURCE_END_TAG was returned. 2983 2984 Fixed a problem with the recently implemented support that enables 2985 control method invocations as Target operands to many ASL operators. 2986 Warnings of this form: "Needed type [Reference], found [Processor]" were 2987 seen at runtime for some method invocations. 2988 2989 Example Code and Data Size: These are the sizes for the OS-independent 2990 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2991 debug version of the code includes the debug output trace mechanism and 2992 has a much larger code and data size. 2993 2994 Current Release: 2995 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 2996 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 2997 Previous Release: 2998 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 2999 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3000 3001 3002 2) iASL Compiler/Disassembler and Tools: 3003 3004 Disassembler: Enhanced output by adding the capability to detect and 3005 disassemble ASL Switch/Case statements back to the original ASL source 3006 code instead of if/else blocks. David Box. 3007 3008 AcpiHelp: Split a large file into separate files based upon 3009 functionality/purpose. New files are: 3010 ahaml.c 3011 ahasl.c 3012 3013 ---------------------------------------- 3014 17 November 2016. Summary of changes for version 20161117: 3015 3016 3017 1) ACPICA kernel-resident subsystem: 3018 3019 Table Manager: Fixed a regression introduced in 20160729, "FADT support 3020 cleanup". This was an attempt to remove all references in the source to 3021 the FADT version 2, which never was a legal version number. It was 3022 skipped because it was an early version of 64-bit support that was 3023 eventually abandoned for the current 64-bit support. 3024 3025 Interpreter: Fixed a problem where runtime implicit conversion was 3026 incorrectly disabled for the ASL operators below. This brings the 3027 behavior into compliance with the ACPI specification: 3028 FromBCD 3029 ToBCD 3030 ToDecimalString 3031 ToHexString 3032 ToInteger 3033 ToBuffer 3034 3035 Table Manager: Added a new public interface, AcpiPutTable, used to 3036 release and free an ACPI table returned by AcpiGetTable and related 3037 interfaces. Lv Zheng. 3038 3039 Example Code and Data Size: These are the sizes for the OS-independent 3040 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3041 debug version of the code includes the debug output trace mechanism and 3042 has a much larger code and data size. 3043 3044 Current Release: 3045 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 3046 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 3047 Previous Release: 3048 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3049 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3050 3051 3052 2) iASL Compiler/Disassembler and Tools: 3053 3054 Disassembler: Fixed a regression for disassembly of Resource Template. 3055 Detection of templates in the AML stream missed some types of templates. 3056 3057 iASL: Fixed a problem where an Access Size error was returned for the PCC 3058 address space when the AccessSize of the GAS register is greater than a 3059 DWORD. Hoan Tran. 3060 3061 iASL: Implemented several grammar changes for the operators below. These 3062 changes are slated for the next version of the ACPI specification: 3063 RefOf - Disallow method invocation as an operand 3064 CondRefOf - Disallow method invocation as an operand 3065 DerefOf - Disallow operands that use the result from operators 3066 that 3067 do not return a reference (Changed TermArg to 3068 SuperName). 3069 3070 iASL: Control method invocations are now allowed for Target operands, as 3071 per the ACPI specification. Removed error for using a control method 3072 invocation as a Target operand. 3073 3074 Disassembler: Improved detection of Resource Templates, Unicode, and 3075 Strings within Buffer objects. These subtypes do not contain a specific 3076 opcode to indicate the originating ASL code, and they must be detected by 3077 other means within the disassembler. 3078 3079 iASL: Implemented an optimization improvement for 32-bit ACPI tables 3080 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 3081 only after 64-bit to 32-bit truncation. A truncation warning message is 3082 still emitted, however. 3083 3084 AcpiXtract: Implemented handling for both types of line terminators (LF 3085 or CR/LF) so that it can accept AcpiDump output files from any system. 3086 Peter Wu. 3087 3088 AcpiBin: Added two new options for comparing AML files: 3089 -a: compare and display ALL mismatches 3090 -o: start compare at this offset into the second file 3091 3092 ---------------------------------------- 3093 30 September 2016. Summary of changes for version 20160930: 3094 3095 3096 1) ACPICA kernel-resident subsystem: 3097 3098 Fixed a regression in the internal AcpiTbFindTable function where a non 3099 AE_OK exception could inadvertently be returned even if the function did 3100 not fail. This problem affects the following operators: 3101 DataTableRegion 3102 LoadTable 3103 3104 Fixed a regression in the LoadTable operator where a load to any 3105 namespace location other than the root no longer worked properly. 3106 3107 Increased the maximum loop count value that will result in the 3108 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 3109 prevent infinite loops within the AML interpreter and thus the host OS 3110 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 3111 1,048,575). 3112 3113 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 3114 acpixf.h file. This allows hosts to easily configure the maximum loop 3115 count at runtime. 3116 3117 Removed an illegal character in the strtoul64.c file. This character 3118 caused errors with some C compilers. 3119 3120 Example Code and Data Size: These are the sizes for the OS-independent 3121 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3122 debug version of the code includes the debug output trace mechanism and 3123 has a much larger code and data size. 3124 3125 Current Release: 3126 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 3127 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 3128 Previous Release: 3129 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 3130 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3131 3132 3133 2) iASL Compiler/Disassembler and Tools: 3134 3135 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 3136 the simpler ASL ElseIf keyword. During the conversion, a trailing If 3137 block could be lost and missing from the disassembled output. 3138 3139 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 3140 the missing rule caused a parse error when using the Index operator as an 3141 operand to ObjectType. This construct now compiles properly. Example: 3142 ObjectType(PKG1[4]). 3143 3144 iASL: Correctly handle unresolved symbols in the hardware map file (-lm 3145 option). Previously, unresolved symbols could cause a protection fault. 3146 Such symbols are now marked as unresolved in the map file. 3147 3148 iASL: Implemented support to allow control method invocations as an 3149 operand to the ASL DeRefOf operator. Example: 3150 DeRefOf(MTH1(Local0)) 3151 3152 Disassembler: Improved support for the ToPLD ASL macro. Detection of a 3153 possible _PLD buffer now includes examination of both the normal buffer 3154 length (16 or 20) as well as the surrounding AML package length. 3155 3156 Disassembler: Fixed a problem with the decoding of complex expressions 3157 within the Divide operator for ASL+. For the case where both the quotient 3158 and remainder targets are specified, the entire statement cannot be 3159 disassembled. Previously, the output incorrectly contained a mix of ASL- 3160 and ASL+ operators. This mixed statement causes a syntax error when 3161 compiled. Example: 3162 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 3163 disassembled to: 3164 Divide (INT1 + 6, 128, RSLT, QUOT) 3165 3166 iASL/Tools: Added support to process AML and non-AML ACPI tables 3167 consistently. For the disassembler and AcpiExec, allow all types of ACPI 3168 tables (AML and data tables). For the iASL -e option, allow only AML 3169 tables (DSDT/SSDT). 3170 3171 ---------------------------------------- 3172 31 August 2016. Summary of changes for version 20160831: 3173 3174 3175 1) ACPICA kernel-resident subsystem: 3176 3177 Improve support for the so-called "module-level code", which is defined 3178 to be math, logical and control AML opcodes that appear outside of any 3179 control method. This change improves the support by adding more opcodes 3180 that can be executed in the manner. Some other issues have been solved, 3181 and the ASL grammar changes to support such code under all scope 3182 operators (Device, etc.) are complete. Lv Zheng. 3183 3184 UEFI support: these OSL functions have been implemented. This is an 3185 additional step toward supporting the AcpiExec utility natively (with 3186 full hardware access) under UEFI. Marcelo Ferreira. 3187 AcpiOsReadPciConfiguration 3188 AcpiOsWritePciConfiguration 3189 3190 Fixed a possible mutex error during control method auto-serialization. Lv 3191 Zheng. 3192 3193 Updated support for the Generic Address Structure by fully implementing 3194 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 3195 Zheng. 3196 3197 Updated the return value for the internal _OSI method. Instead of 3198 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 3199 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 3200 implementations, and will be reflected and clarified in the next version 3201 of the ACPI specification. 3202 3203 Implemented two new table events that can be passed to an ACPICA table 3204 handler. These events are used to indicate a table installation or 3205 uninstallation. These events are used in addition to existed table load 3206 and unload events. Lv Zheng. 3207 3208 Implemented a cleanup for all internal string-to-integer conversions. 3209 Consolidate multiple versions of this functionality and limit possible 3210 bases to either 10 or 16 to simplify the code. Adds a new file, 3211 utstrtoul64. 3212 3213 Cleanup the inclusion order of the various compiler-specific headers. 3214 This simplifies build configuration management. The compiler-specific 3215 headers are now split out from the host-specific headers. Lv Zheng. 3216 3217 Example Code and Data Size: These are the sizes for the OS-independent 3218 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3219 debug version of the code includes the debug output trace mechanism and 3220 has a much larger code and data size. 3221 3222 Current Release: 3223 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 3224 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 3225 3226 3227 2) iASL Compiler/Disassembler and Tools: 3228 3229 iASL/AcpiExec: Added a command line option to display the build date/time 3230 of the tool (-vd). This can be useful to verify that the correct version 3231 of the tools are being used. 3232 3233 AML Debugger: Implemented a new subcommand ("execute predef") to execute 3234 all predefined control methods and names within the current namespace. 3235 This can be useful for debugging problems with ACPI tables and the ACPI 3236 namespace. 3237 3238 ---------------------------------------- 3239 29 July 2016. Summary of changes for version 20160729: 3240 3241 3242 1) ACPICA kernel-resident subsystem: 3243 3244 Implemented basic UEFI support for the various ACPICA tools. This 3245 includes: 3246 1) An OSL to implement the various AcpiOs* interfaces on UEFI. 3247 2) Support to obtain the ACPI tables on UEFI. 3248 3) Local implementation of required C library functions not available on 3249 UEFI. 3250 4) A front-end (main) function for the tools for UEFI-related 3251 initialization. 3252 3253 The initial deployment of this support is the AcpiDump utility executing 3254 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 3255 Current environments supported are Linux/Unix. MSVC generation is not 3256 supported at this time. See the generate/efi/README file for build 3257 instructions. Lv Zheng. 3258 3259 Future plans include porting the AcpiExec utility to execute natively on 3260 the platform with I/O and memory access. This will allow viewing/dump of 3261 the platform namespace and native execution of ACPI control methods that 3262 access the actual hardware. To fully implement this support, the OSL 3263 functions below must be implemented with UEFI interfaces. Any community 3264 help in the implementation of these functions would be appreciated: 3265 AcpiOsReadPort 3266 AcpiOsWritePort 3267 AcpiOsReadMemory 3268 AcpiOsWriteMemory 3269 AcpiOsReadPciConfiguration 3270 AcpiOsWritePciConfiguration 3271 3272 Restructured and standardized the C library configuration for ACPICA, 3273 resulting in the various configuration options below. This includes a 3274 global restructuring of the compiler-dependent and platform-dependent 3275 include files. These changes may affect the existing platform-dependent 3276 configuration files on some hosts. Lv Zheng. 3277 3278 The current C library configuration options appear below. For any issues, 3279 it may be helpful to examine the existing compiler-dependent and 3280 platform-dependent files as examples. Lv Zheng. 3281 3282 1) Linux kernel: 3283 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3284 library. 3285 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 3286 2) Unix/Windows/BSD applications: 3287 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 3288 library. 3289 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 3290 3) UEFI applications: 3291 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 3292 library. 3293 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 3294 4) UEFI applications (EDK2/StdLib): 3295 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 3296 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 3297 3298 3299 AML interpreter: "module-level code" support. Allows for execution of so- 3300 called "executable" AML code (math/logical operations, etc.) outside of 3301 control methods not just at the module level (top level) but also within 3302 any scope declared outside of a control method - Scope{}, Device{}, 3303 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 3304 3305 Simplified the configuration of the "maximum AML loops" global option by 3306 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 3307 modified at runtime. 3308 3309 3310 Example Code and Data Size: These are the sizes for the OS-independent 3311 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3312 debug version of the code includes the debug output trace mechanism and 3313 has a much larger code and data size. 3314 3315 Current Release: 3316 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 3317 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 3318 3319 3320 2) iASL Compiler/Disassembler and Tools: 3321 3322 iASL: Add full support for the RASF ACPI table (RAS Features Table). 3323 Includes disassembler, data table compiler, and header support. 3324 3325 iASL Expand "module-level code" support. Allows for 3326 compilation/disassembly of so-called "executable" AML code (math/logical 3327 operations, etc.) outside of control methods not just at the module level 3328 (top level) but also within any scope declared outside of a control 3329 method - Scope{}, Device{}, Processor{}, PowerResource{}, and 3330 ThermalZone{}. 3331 3332 AcpiDump: Added support for dumping all SSDTs on newer versions of 3333 Windows. These tables are now easily available -- SSDTs are not available 3334 through the registry on older versions. 3335 3336 ---------------------------------------- 3337 27 May 2016. Summary of changes for version 20160527: 3338 3339 3340 1) ACPICA kernel-resident subsystem: 3341 3342 Temporarily reverted the new arbitrary bit length/alignment support in 3343 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 3344 a number of regressions with the new code that need to be fully resolved 3345 and tested before this support can be finally integrated into ACPICA. 3346 Apologies for any inconveniences these issues may have caused. 3347 3348 The ACPI message macros are not configurable (ACPI_MSG_ERROR, 3349 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 3350 and ACPI_MSG_BIOS_WARNING). Lv Zheng. 3351 3352 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 3353 option. Adds a new return macro, return_STR. Junk-uk Kim. 3354 3355 Example Code and Data Size: These are the sizes for the OS-independent 3356 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3357 debug version of the code includes the debug output trace mechanism and 3358 has a much larger code and data size. 3359 3360 Current Release: 3361 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 3362 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3363 Previous Release: 3364 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3365 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 3366 3367 ---------------------------------------- 3368 22 April 2016. Summary of changes for version 20160422: 3369 3370 1) ACPICA kernel-resident subsystem: 3371 3372 Fixed a regression in the GAS (generic address structure) arbitrary bit 3373 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 3374 and incorrect return values. Lv Zheng. ACPICA BZ 1270. 3375 3376 ACPI 6.0: Added support for new/renamed resource macros. One new argument 3377 was added to each of these macros, and the original name has been 3378 deprecated. The AML disassembler will always disassemble to the new 3379 names. Support for the new macros was added to iASL, disassembler, 3380 resource manager, and the acpihelp utility. ACPICA BZ 1274. 3381 3382 I2cSerialBus -> I2cSerialBusV2 3383 SpiSerialBus -> SpiSerialBusV2 3384 UartSerialBus -> UartSerialBusV2 3385 3386 ACPI 6.0: Added support for a new integer field that was appended to the 3387 package object returned by the _BIX method. This adds iASL compile-time 3388 and AML runtime error checking. ACPICA BZ 1273. 3389 3390 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 3391 Subspace Type2" (Headers, Disassembler, and data table compiler). 3392 3393 Example Code and Data Size: These are the sizes for the OS-independent 3394 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3395 debug version of the code includes the debug output trace mechanism and 3396 has a much larger code and data size. 3397 3398 Current Release: 3399 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 3400 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 3401 Previous Release: 3402 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3403 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3404 3405 3406 2) iASL Compiler/Disassembler and Tools: 3407 3408 iASL: Implemented an ASL grammar extension to allow/enable executable 3409 "module-level code" to be created and executed under the various 3410 operators that create new scopes. This type of AML code is already 3411 supported in all known AML interpreters, and the grammar change will 3412 appear in the next version of the ACPI specification. Simplifies the 3413 conditional runtime creation of named objects under these object types: 3414 3415 Device 3416 PowerResource 3417 Processor 3418 Scope 3419 ThermalZone 3420 3421 iASL: Implemented a new ASL extension, a "For" loop macro to add greater 3422 ease-of-use to the ASL language. The syntax is similar to the 3423 corresponding C operator, and is implemented with the existing AML While 3424 opcode -- thus requiring no changes to existing AML interpreters. 3425 3426 For (Initialize, Predicate, Update) {TermList} 3427 3428 Grammar: 3429 ForTerm := 3430 For ( 3431 Initializer // Nothing | TermArg => ComputationalData 3432 Predicate // Nothing | TermArg => ComputationalData 3433 Update // Nothing | TermArg => ComputationalData 3434 ) {TermList} 3435 3436 3437 iASL: The _HID/_ADR detection and validation has been enhanced to search 3438 under conditionals in order to allow these objects to be conditionally 3439 created at runtime. 3440 3441 iASL: Fixed several issues with the constant folding feature. The 3442 improvement allows better detection and resolution of statements that can 3443 be folded at compile time. ACPICA BZ 1266. 3444 3445 iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 3446 conversion to the ASL ElseIf operator where incorrect ASL code could be 3447 generated. 3448 3449 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 3450 sometimes an extra (and extraneous) set of parentheses were emitted for 3451 some combinations of operators. Although this did not cause any problems 3452 with recompilation of the disassembled code, it made the code more 3453 difficult to read. David Box. ACPICA BZ 1231. 3454 3455 iASL: Changed to ignore the unreferenced detection for predefined names 3456 of resource descriptor elements, when the resource descriptor is 3457 created/defined within a control method. 3458 3459 iASL: Disassembler: Fix a possible fault with externally declared Buffer 3460 objects. 3461 3462 ---------------------------------------- 3463 18 March 2016. Summary of changes for version 20160318: 3464 3465 1) ACPICA kernel-resident subsystem: 3466 3467 Added support for arbitrary bit lengths and bit offsets for registers 3468 defined by the Generic Address Structure. Previously, only aligned bit 3469 lengths of 8/16/32/64 were supported. This was sufficient for many years, 3470 but recently some machines have been seen that require arbitrary bit- 3471 level support. ACPICA BZ 1240. Lv Zheng. 3472 3473 Fixed an issue where the \_SB._INI method sometimes must be evaluated 3474 before any _REG methods are evaluated. Lv Zheng. 3475 3476 Implemented several changes related to ACPI table support 3477 (Headers/Disassembler/TableCompiler): 3478 NFIT: For ACPI 6.1, updated to add some additional new fields and 3479 constants. 3480 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 3481 6). 3482 DMAR: Added new constants per the 10/2014 DMAR spec. 3483 IORT: Added new subtable per the 10/2015 IORT spec. 3484 HEST: For ACPI 6.1, added new constants and new subtable. 3485 DBG2: Added new constants per the 12/2015 DBG2 spec. 3486 FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 3487 ACPICA BZ 1249. 3488 ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 3489 3490 Updated header support for the DMAR table to match the current version of 3491 the related spec. 3492 3493 Added extensions to the ASL Concatenate operator to allow any ACPI object 3494 to be passed as an operand. Any object other than Integer/String/Buffer 3495 simply returns a string containing the object type. This extends the 3496 usefulness of the Printf macros. Previously, Concatenate would abort the 3497 control method if a non-data object was encountered. 3498 3499 ACPICA source code: Deployed the C "const" keyword across the source code 3500 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 3501 3502 Example Code and Data Size: These are the sizes for the OS-independent 3503 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3504 debug version of the code includes the debug output trace mechanism and 3505 has a much larger code and data size. 3506 3507 Current Release: 3508 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 3509 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 3510 Previous Release: 3511 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3512 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3513 3514 3515 2) iASL Compiler/Disassembler and Tools: 3516 3517 iASL/Disassembler: Improved the heuristic used to determine the number of 3518 arguments for an externally defined control method (a method in another 3519 table). Although this is an improvement, there is no deterministic way to 3520 "guess" the number of method arguments. Only the ACPI 6.0 External opcode 3521 will completely solve this problem as it is deployed (automatically) in 3522 newer BIOS code. 3523 3524 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 3525 statements that could cause errors when the disassembled file is 3526 compiled. ACPICA BZ 1243. David Box. 3527 3528 iASL: Fixed a regression caused by the merger of the two versions of the 3529 local strtoul64. Because of a dependency on a global variable, strtoul64 3530 could return an error for integers greater than a 32-bit value. ACPICA BZ 3531 1260. 3532 3533 iASL: Fixed a regression where a fault could occur for an ASL Return 3534 statement if it invokes a control method that is not resolved. ACPICA BZ 3535 1264. 3536 3537 AcpiXtract: Improved input file validation: detection of binary files and 3538 non-acpidump text files. 3539 3540 ---------------------------------------- 3541 12 February 2016. Summary of changes for version 20160212: 3542 3543 1) ACPICA kernel-resident subsystem: 3544 3545 Implemented full support for the ACPI 6.1 specification (released in 3546 January). This version of the specification is available at: 3547 http://www.uefi.org/specifications 3548 3549 Only a relatively small number of changes were required in ACPICA to 3550 support ACPI 6.1, in these areas: 3551 - New predefined names 3552 - New _HID values 3553 - A new subtable for HEST 3554 - A few other header changes for new values 3555 3556 Ensure \_SB_._INI is executed before any _REG methods are executed. There 3557 appears to be existing BIOS code that relies on this behavior. Lv Zheng. 3558 3559 Reverted a change made in version 20151218 which enabled method 3560 invocations to be targets of various ASL operators (SuperName and Target 3561 grammar elements). While the new behavior is supported by the ACPI 3562 specification, other AML interpreters do not support this behavior and 3563 never will. The ACPI specification will be updated for ACPI 6.2 to remove 3564 this support. Therefore, the change was reverted to the original ACPICA 3565 behavior. 3566 3567 ACPICA now supports the GCC 6 compiler. 3568 3569 Current Release: (Note: build changes increased sizes) 3570 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 3571 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 3572 Previous Release: 3573 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3574 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 3575 3576 3577 2) iASL Compiler/Disassembler and Tools: 3578 3579 Completed full support for the ACPI 6.0 External() AML opcode. The 3580 compiler emits an external AML opcode for each ASL External statement. 3581 This opcode is used by the disassembler to assist with the disassembly of 3582 external control methods by specifying the required number of arguments 3583 for the method. AML interpreters do not use this opcode. To ensure that 3584 interpreters do not even see the opcode, a block of one or more external 3585 opcodes is surrounded by an "If(0)" construct. As this feature becomes 3586 commonly deployed in BIOS code, the ability of disassemblers to correctly 3587 disassemble AML code will be greatly improved. David Box. 3588 3589 iASL: Implemented support for an optional cross-reference output file. 3590 The -lx option will create a the cross-reference file with the suffix 3591 "xrf". Three different types of cross-reference are created in this file: 3592 - List of object references made from within each control method 3593 - Invocation (caller) list for each user-defined control method 3594 - List of references to each non-method object in the namespace 3595 3596 iASL: Method invocations as ASL Target operands are now disallowed and 3597 flagged as errors in preparation for ACPI 6.2 (see the description of the 3598 problem above). 3599 3600 ---------------------------------------- 3601 8 January 2016. Summary of changes for version 20160108: 3602 3603 1) ACPICA kernel-resident subsystem: 3604 3605 Updated all ACPICA copyrights and signons to 2016: Added the 2016 3606 copyright to all source code module headers and utility/tool signons. 3607 This includes the standard Linux dual-license header. This affects 3608 virtually every file in the ACPICA core subsystem, iASL compiler, all 3609 ACPICA utilities, and the ACPICA test suite. 3610 3611 Fixed a regression introduced in version 20151218 concerning the 3612 execution of so-called module-level ASL/AML code. Namespace objects 3613 created under a module-level If() construct were not properly/fully 3614 entered into the namespace and could cause an interpreter fault when 3615 accessed. 3616 3617 Example Code and Data Size: These are the sizes for the OS-independent 3618 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3619 debug version of the code includes the debug output trace mechanism and 3620 has a much larger code and data size. 3621 3622 Current Release: 3623 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 3624 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 3625 Previous Release: 3626 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3627 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3628 3629 3630 2) iASL Compiler/Disassembler and Tools: 3631 3632 Fixed a problem with the compilation of the GpioIo and GpioInt resource 3633 descriptors. The _PIN field name was incorrectly defined to be an array 3634 of 32-bit values, but the _PIN values are in fact 16 bits each. This 3635 would cause incorrect bit width warnings when using Word (16-bit) fields 3636 to access the descriptors. 3637 3638 3639 ---------------------------------------- 3640 18 December 2015. Summary of changes for version 20151218: 3641 3642 1) ACPICA kernel-resident subsystem: 3643 3644 Implemented per-AML-table execution of "module-level code" as individual 3645 ACPI tables are loaded into the namespace during ACPICA initialization. 3646 In other words, any module-level code within an AML table is executed 3647 immediately after the table is loaded, instead of batched and executed 3648 after all of the tables have been loaded. This provides compatibility 3649 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 3650 David Box. 3651 3652 To fully support the feature above, the default operation region handlers 3653 for the SystemMemory, SystemIO, and PCI_Config address spaces are now 3654 installed before any ACPI tables are loaded. This enables module-level 3655 code to access these address spaces during the table load and module- 3656 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 3657 Box. 3658 3659 Implemented several changes to the internal _REG support in conjunction 3660 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 3661 utilities for the changes above. Although these tools were changed, host 3662 operating systems that simply use the default handlers for SystemMemory, 3663 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 3664 3665 For example, in the code below, DEV1 is conditionally added to the 3666 namespace by the DSDT via module-level code that accesses an operation 3667 region. The SSDT references DEV1 via the Scope operator. DEV1 must be 3668 created immediately after the DSDT is loaded in order for the SSDT to 3669 successfully reference DEV1. Previously, this code would cause an 3670 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 3671 fully supported by ACPICA. 3672 3673 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 3674 { 3675 OperationRegion (OPR1, SystemMemory, 0x400, 32) 3676 Field (OPR1, AnyAcc, NoLock, Preserve) 3677 { 3678 FLD1, 1 3679 } 3680 If (FLD1) 3681 { 3682 Device (\DEV1) 3683 { 3684 } 3685 } 3686 } 3687 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 3688 { 3689 External (\DEV1, DeviceObj) 3690 Scope (\DEV1) 3691 { 3692 } 3693 } 3694 3695 Fixed an AML interpreter problem where control method invocations were 3696 not handled correctly when the invocation was itself a SuperName argument 3697 to another ASL operator. In these cases, the method was not invoked. 3698 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 3699 argument: 3700 Store 3701 Acquire, Wait 3702 CondRefOf, RefOf 3703 Decrement, Increment 3704 Load, Unload 3705 Notify 3706 Signal, Release, Reset 3707 SizeOf 3708 3709 Implemented automatic String-to-ObjectReference conversion support for 3710 packages returned by predefined names (such as _DEP). A common BIOS error 3711 is to add double quotes around an ObjectReference namepath, which turns 3712 the reference into an unexpected string object. This support detects the 3713 problem and corrects it before the package is returned to the caller that 3714 invoked the method. Lv Zheng. 3715 3716 Implemented extensions to the Concatenate operator. Concatenate now 3717 accepts any type of object, it is not restricted to simply 3718 Integer/String/Buffer. For objects other than these 3 basic data types, 3719 the argument is treated as a string containing the name of the object 3720 type. This expands the utility of Concatenate and the Printf/Fprintf 3721 macros. ACPICA BZ 1222. 3722 3723 Cleaned up the output of the ASL Debug object. The timer() value is now 3724 optional and no longer emitted by default. Also, the basic data types of 3725 Integer/String/Buffer are simply emitted as their values, without a data 3726 type string -- since the data type is obvious from the output. ACPICA BZ 3727 1221. 3728 3729 Example Code and Data Size: These are the sizes for the OS-independent 3730 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3731 debug version of the code includes the debug output trace mechanism and 3732 has a much larger code and data size. 3733 3734 Current Release: 3735 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 3736 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 3737 Previous Release: 3738 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3739 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3740 3741 3742 2) iASL Compiler/Disassembler and Tools: 3743 3744 iASL: Fixed some issues with the ASL Include() operator. This operator 3745 was incorrectly defined in the iASL parser rules, causing a new scope to 3746 be opened for the code within the include file. This could lead to 3747 several issues, including allowing ASL code that is technically illegal 3748 and not supported by AML interpreters. Note, this does not affect the 3749 related #include preprocessor operator. ACPICA BZ 1212. 3750 3751 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 3752 operator is essentially an ASL macro since there is no AML opcode 3753 associated with it. The code emitted by the iASL compiler for ElseIf is 3754 an Else opcode followed immediately by an If opcode. The disassembler 3755 will now emit an ElseIf if it finds an Else immediately followed by an 3756 If. This simplifies the decoded ASL, especially for deeply nested 3757 If..Else and large Switch constructs. Thus, the disassembled code more 3758 closely follows the original source ASL. ACPICA BZ 1211. Example: 3759 3760 Old disassembly: 3761 Else 3762 { 3763 If (Arg0 == 0x02) 3764 { 3765 Local0 = 0x05 3766 } 3767 } 3768 3769 New disassembly: 3770 ElseIf (Arg0 == 0x02) 3771 { 3772 Local0 = 0x05 3773 } 3774 3775 AcpiExec: Added support for the new module level code behavior and the 3776 early region installation. This required a small change to the 3777 initialization, since AcpiExec must install its own operation region 3778 handlers. 3779 3780 AcpiExec: Added support to make the debug object timer optional. Default 3781 is timer disabled. This cleans up the debug object output -- the timer 3782 data is rarely used. 3783 3784 AcpiExec: Multiple ACPI tables are now loaded in the order that they 3785 appear on the command line. This can be important when there are 3786 interdependencies/references between the tables. 3787 3788 iASL/Templates. Add support to generate template files with multiple 3789 SSDTs within a single output file. Also added ommand line support to 3790 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 3791 1223, 1225. 3792 3793 3794 ---------------------------------------- 3795 24 November 2015. Summary of changes for version 20151124: 3796 3797 1) ACPICA kernel-resident subsystem: 3798 3799 Fixed a possible regression for a previous update to FADT handling. The 3800 FADT no longer has a fixed table ID, causing some issues with code that 3801 was hardwired to a specific ID. Lv Zheng. 3802 3803 Fixed a problem where the method auto-serialization could interfere with 3804 the current SyncLevel. This change makes the auto-serialization support 3805 transparent to the SyncLevel support and management. 3806 3807 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 3808 interface is intended for early access to the namespace during the 3809 initial namespace device discovery walk. The _SUB method has been seen to 3810 access operation regions in some cases, causing errors because the 3811 operation regions are not fully initialized. 3812 3813 AML Debugger: Fixed some issues with the terminate/quit/exit commands 3814 that can cause faults. Lv Zheng. 3815 3816 AML Debugger: Add thread ID support so that single-step mode only applies 3817 to the AML Debugger thread. This prevents runtime errors within some 3818 kernels. Lv Zheng. 3819 3820 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 3821 methods that are invoked by this interface are optional, removed warnings 3822 emitted for the case where one or more of these methods do not exist. 3823 ACPICA BZ 1208, original change by Prarit Bhargava. 3824 3825 Made a major pass through the entire ACPICA source code base to 3826 standardize formatting that has diverged a bit over time. There are no 3827 functional changes, but this will of course cause quite a few code 3828 differences from the previous ACPICA release. 3829 3830 Example Code and Data Size: These are the sizes for the OS-independent 3831 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3832 debug version of the code includes the debug output trace mechanism and 3833 has a much larger code and data size. 3834 3835 Current Release: 3836 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 3837 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 3838 Previous Release: 3839 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3840 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3841 3842 3843 2) iASL Compiler/Disassembler and Tools: 3844 3845 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 3846 definition blocks within a single ASL file and the resulting AML file. 3847 Support for this type of file was also added to the various tools that 3848 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 3849 example code below shows two definition blocks within the same file: 3850 3851 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 3852 0x12345678) 3853 { 3854 } 3855 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 3856 { 3857 } 3858 3859 iASL: Enhanced typechecking for the Name() operator. All expressions for 3860 the value of the named object must be reduced/folded to a single constant 3861 at compile time, as per the ACPI specification (the AML definition of 3862 Name()). 3863 3864 iASL: Fixed some code indentation issues for the -ic and -ia options (C 3865 and assembly headers). Now all emitted code correctly begins in column 1. 3866 3867 iASL: Added an error message for an attempt to open a Scope() on an 3868 object defined in an SSDT. The DSDT is always loaded into the namespace 3869 first, so any attempt to open a Scope on an SSDT object will fail at 3870 runtime. 3871 3872 3873 ---------------------------------------- 3874 30 September 2015. Summary of changes for version 20150930: 3875 3876 1) ACPICA kernel-resident subsystem: 3877 3878 Debugger: Implemented several changes and bug fixes to assist support for 3879 the in-kernel version of the AML debugger. Lv Zheng. 3880 - Fix the "predefined" command for in-kernel debugger. 3881 - Do not enter debug command loop for the help and version commands. 3882 - Disallow "execute" command during execution/single-step of a method. 3883 3884 Interpreter: Updated runtime typechecking for all operators that have 3885 target operands. The operand is resolved and validated that it is legal. 3886 For example, the target cannot be a non-data object such as a Device, 3887 Mutex, ThermalZone, etc., as per the ACPI specification. 3888 3889 Debugger: Fixed the double-mutex user I/O handshake to work when local 3890 deadlock detection is enabled. 3891 3892 Debugger: limited display of method locals and arguments (LocalX and 3893 ArgX) to only those that have actually been initialized. This prevents 3894 lines of extraneous output. 3895 3896 Updated the definition of the NFIT table to correct the bit polarity of 3897 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 3898 3899 Example Code and Data Size: These are the sizes for the OS-independent 3900 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3901 debug version of the code includes the debug output trace mechanism and 3902 has a much larger code and data size. 3903 3904 Current Release: 3905 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3906 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 3907 Previous Release: 3908 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 3909 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 3910 3911 3912 2) iASL Compiler/Disassembler and Tools: 3913 3914 iASL: Improved the compile-time typechecking for operands of many of the 3915 ASL operators: 3916 3917 -- Added an option to disable compiler operand/operator typechecking (- 3918 ot). 3919 3920 -- For the following operators, the TermArg operands are now validated 3921 when possible to be Integer data objects: BankField, OperationRegion, 3922 DataTableRegion, Buffer, and Package. 3923 3924 -- Store (Source, Target): Both the source and target operands are 3925 resolved and checked that the operands are both legal. For example, 3926 neither operand can be a non-data object such as a Device, Mutex, 3927 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 3928 operator can be used to store an object to any type of target object. 3929 3930 -- Store (Source, Target): If the source is a Package object, the target 3931 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 3932 is a Package, the source must also be a Package. 3933 3934 -- Store (Source, Target): A warning is issued if the source and target 3935 resolve to the identical named object. 3936 3937 -- Store (Source, <method invocation>): An error is generated for the 3938 target method invocation, as this construct is not supported by the AML 3939 interpreter. 3940 3941 -- For all ASL math and logic operators, the target operand must be a 3942 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 3943 includes the function return value also. 3944 3945 -- External declarations are also included in the typechecking where 3946 possible. External objects defined using the UnknownObj keyword cannot be 3947 typechecked, however. 3948 3949 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 3950 operator: 3951 - Legacy code: Index(PKG1, 3) 3952 - New ASL+ code: PKG1[3] 3953 This completes the ACPI 6.0 ASL+ support as it was the only operator not 3954 supported. 3955 3956 iASL: Fixed the file suffix for the preprocessor output file (.i). Two 3957 spaces were inadvertently appended to the filename, causing file access 3958 and deletion problems on some systems. 3959 3960 ASL Test Suite (ASLTS): Updated the master makefile to generate all 3961 possible compiler output files when building the test suite -- thus 3962 exercising these features of the compiler. These files are automatically 3963 deleted when the test suite exits. 3964 3965 3966 ---------------------------------------- 3967 18 August 2015. Summary of changes for version 20150818: 3968 3969 1) ACPICA kernel-resident subsystem: 3970 3971 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 3972 Zheng. ACPICA BZ 1186. 3973 3974 Completed development to ensure that the ACPICA Disassembler and Debugger 3975 are fully standalone components of ACPICA. Removed cross-component 3976 dependences. Lv Zheng. 3977 3978 The max-number-of-AML-loops is now runtime configurable (previously was 3979 compile-time only). This is essentially a loop timeout to force-abort 3980 infinite AML loops. ACPCIA BZ 1192. 3981 3982 Debugger: Cleanup output to dump ACPI names and namepaths without any 3983 trailing underscores. Lv Zheng. ACPICA BZ 1135. 3984 3985 Removed unnecessary conditional compilations across the Debugger and 3986 Disassembler components where entire modules could be left uncompiled. 3987 3988 The aapits test is deprecated and has been removed from the ACPICA git 3989 tree. The test has never been completed and has not been maintained, thus 3990 becoming rather useless. ACPICA BZ 1015, 794. 3991 3992 A batch of small changes to close bugzilla and other reports: 3993 - Remove duplicate code for _PLD processing. ACPICA BZ 1176. 3994 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 3995 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 3996 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob 3997 Moore. 3998 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 3999 ACPICA BZ 1184. 4000 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 4001 operators. 4002 - Debugger: Split debugger initialization/termination interfaces. Lv 4003 Zheng. 4004 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table 4005 identification. 4006 - AcpiExec: Add debug message during _REG method phase during table 4007 load/init. 4008 - AcpiNames: Fix a regression where some output was missing and no longer 4009 emitted. 4010 - Debugger: General cleanup and simplification. Lv Zheng. 4011 - Disassembler: Cleanup use of several global option variables. Lv Zheng. 4012 4013 Example Code and Data Size: These are the sizes for the OS-independent 4014 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4015 debug version of the code includes the debug output trace mechanism and 4016 has a much larger code and data size. 4017 4018 Current Release: 4019 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 4020 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 4021 Previous Release: 4022 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4023 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4024 4025 4026 2) iASL Compiler/Disassembler and Tools: 4027 4028 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 4029 were not handled properly and caused load errors. Now, properly invoke 4030 and use the ACPICA auto-reallocate mechanism for ACPI table data 4031 structures. ACPICA BZ 1188 4032 4033 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 4034 BZ 1190. 4035 4036 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 4037 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 4038 executed during initialization. ACPICA BZ 1187, 1189. 4039 4040 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 4041 that corresponds to each disassembled ASL statement, to simplify 4042 debugging. ACPICA BZ 1191. 4043 4044 Debugger: Add option to the "objects" command to display a summary of the 4045 current namespace objects (Object type and count). This is displayed if 4046 the command is entered with no arguments. 4047 4048 AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 4049 4050 4051 ---------------------------------------- 4052 17 July 2015. Summary of changes for version 20150717: 4053 4054 1) ACPICA kernel-resident subsystem: 4055 4056 Improved the partitioning between the Debugger and Disassembler 4057 components. This allows the Debugger to be used standalone within kernel 4058 code without the Disassembler (which is used for single stepping also). 4059 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 4060 4061 Debugger: Implemented a new command to trace the execution of control 4062 methods (Trace). This is especially useful for the in-kernel version of 4063 the debugger when file I/O may not be available for method trace output. 4064 See the ACPICA reference for more information. Lv Zheng. 4065 4066 Moved all C library prototypes (used for the local versions of these 4067 functions when requested) to a new header, acclib.h 4068 Cleaned up the use of non-ANSI C library functions. These functions are 4069 implemented locally in ACPICA. Moved all such functions to a common 4070 source file, utnonansi.c 4071 4072 Debugger: Fixed a problem with the "!!" command (get last command 4073 executed) where the debugger could enter an infinite loop and eventually 4074 crash. 4075 4076 Removed the use of local macros that were used for some of the standard C 4077 library functions to automatically cast input parameters. This mostly 4078 affected the is* functions where the input parameter is defined to be an 4079 int. This required a few modifications to the main ACPICA source code to 4080 provide casting for these functions and eliminate possible compiler 4081 warnings for these parameters. 4082 4083 Across the source code, added additional status/error checking to resolve 4084 issues discovered by static source code analysis tools such as Coverity. 4085 4086 Example Code and Data Size: These are the sizes for the OS-independent 4087 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4088 debug version of the code includes the debug output trace mechanism and 4089 has a much larger code and data size. 4090 4091 Current Release: 4092 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 4093 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 4094 Previous Release: 4095 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4096 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4097 4098 4099 2) iASL Compiler/Disassembler and Tools: 4100 4101 iASL: Fixed a regression where the device map file feature no longer 4102 worked properly when used in conjunction with the disassembler. It only 4103 worked properly with the compiler itself. 4104 4105 iASL: Implemented a new warning for method LocalX variables that are set 4106 but never used (similar to a C compiler such as gcc). This also applies 4107 to ArgX variables that are not defined by the parent method, and are 4108 instead (legally) used as local variables. 4109 4110 iASL/Preprocessor: Finished the pass-through of line numbers from the 4111 preprocessor to the compiler. This ensures that compiler errors/warnings 4112 have the correct original line numbers and filenames, regardless of any 4113 #include files. 4114 4115 iASL/Preprocessor: Fixed a couple of issues with comment handling and the 4116 pass-through of comments to the preprocessor output file (which becomes 4117 the compiler input file). Also fixed a problem with // comments that 4118 appear after a math expression. 4119 4120 iASL: Added support for the TCPA server table to the table compiler and 4121 template generator. (The client table was already previously supported) 4122 4123 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 4124 identify the iASL compiler. 4125 4126 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 4127 multiple times. The new names are ACPI_SIGN_NEGATIVE and 4128 ACPI_SIGN_POSITIVE. 4129 4130 AcpiHelp: Update to expand help messages for the iASL preprocessor 4131 directives. 4132 4133 4134 ---------------------------------------- 4135 19 June 2015. Summary of changes for version 20150619: 4136 4137 Two regressions in version 20150616 have been addressed: 4138 4139 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 4140 etc.) This update changes ACPICA to only use the standard headers for 4141 functions, or the prototypes for the local versions of the C library 4142 functions. Across the source code, this required some additional casts 4143 for some Clib invocations for portability. Moved all local prototypes to 4144 a new file, acclib.h 4145 4146 Fixes several problems with recent changes to the handling of the FACS 4147 table that could cause some systems not to boot. 4148 4149 4150 ---------------------------------------- 4151 16 June 2015. Summary of changes for version 20150616: 4152 4153 4154 1) ACPICA kernel-resident subsystem: 4155 4156 Across the entire ACPICA source code base, the various macros for the C 4157 library functions (such as ACPI_STRLEN, etc.) have been removed and 4158 replaced by the standard C library names (strlen, etc.) The original 4159 purpose for these macros is no longer applicable. This simplification 4160 reduces the number of macros used in the ACPICA source code 4161 significantly, improving readability and maintainability. 4162 4163 Implemented support for a new ACPI table, the OSDT. This table, the 4164 "override" SDT, can be loaded directly by the host OS at boot time. It 4165 enables the replacement of existing namespace objects that were installed 4166 via the DSDT and/or SSDTs. The primary purpose for this is to replace 4167 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 4168 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 4169 Moore. 4170 4171 Added support for systems with (improperly) two FACS tables -- a "32-bit" 4172 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 4173 X field). This change will support both automatically. There continues to 4174 be systems found with this issue. This support requires a change to the 4175 AcpiSetFirmwareWakingVector interface. Also, a public global variable has 4176 been added to allow the host to select which FACS is desired 4177 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 4178 details Lv Zheng. 4179 4180 Added a new feature to allow for systems that do not contain an FACS. 4181 Although this is already supported on hardware-reduced platforms, the 4182 feature has been extended for all platforms. The reasoning is that we do 4183 not want to abort the entire ACPICA initialization just because the 4184 system is seriously buggy and has no FACS. 4185 4186 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 4187 not correctly transcribed from the ACPI specification in ACPICA version 4188 20150515. 4189 4190 Implemented support for the _CLS object in the AcpiGetObjectInfo external 4191 interface. 4192 4193 Updated the definitions of the TCPA and TPM2 ACPI tables to the more 4194 recent TCG ACPI Specification, December 14, 2014. Table disassembler and 4195 compiler also updated. Note: The TCPA "server" table is not supported by 4196 the disassembler/table-compiler at this time. 4197 4198 ACPI 6.0: Added definitions for the new GIC version field in the MADT. 4199 4200 Example Code and Data Size: These are the sizes for the OS-independent 4201 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4202 debug version of the code includes the debug output trace mechanism and 4203 has a much larger code and data size. 4204 4205 Current Release: 4206 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 4207 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 4208 Previous Release: 4209 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4210 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4211 4212 4213 2) iASL Compiler/Disassembler and Tools: 4214 4215 Disassembler: Fixed a problem with the new symbolic operator disassembler 4216 where incorrect ASL code could be emitted in some cases for the "non- 4217 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 4218 ShiftRight. The actual problem cases seem to be rather unusual in common 4219 ASL code, however. David Box. 4220 4221 Modified the linux version of acpidump to obtain ACPI tables from not 4222 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 4223 Zheng. 4224 4225 iASL: Fixed a problem where the user preprocessor output file (.i) 4226 contained extra data that was not expected. The compiler was using this 4227 file as a temporary file and passed through #line directives in order to 4228 keep compiler error messages in sync with the input file and line number 4229 across multiple include files. The (.i) is no longer a temporary file as 4230 the compiler uses a new, different file for the original purpose. 4231 4232 iASL: Fixed a problem where comments within the original ASL source code 4233 file were not passed through to the preprocessor output file, nor any 4234 listing files. 4235 4236 iASL: Fixed some issues for the handling of the "#include" preprocessor 4237 directive and the similar (but not the same) "Include" ASL operator. 4238 4239 iASL: Add support for the new OSDT in both the disassembler and compiler. 4240 4241 iASL: Fixed a problem with the constant folding support where a Buffer 4242 object could be incorrectly generated (incorrectly formed) during a 4243 conversion to a Store() operator. 4244 4245 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 4246 description text for the _REV predefined name. _REV now permanently 4247 returns 2, as per the ACPI 6.0 specification. 4248 4249 Debugger: Enhanced the output of the Debug ASL object for references 4250 produced by the Index operator. For Buffers and strings, only output the 4251 actual byte pointed to by the index. For packages, only print the single 4252 package element decoded by the index. Previously, the entire 4253 buffer/string/package was emitted. 4254 4255 iASL/Table-compiler: Fixed a regression where the "generic" data types 4256 were no longer recognized, causing errors. 4257 4258 4259 ---------------------------------------- 4260 15 May 2015. Summary of changes for version 20150515: 4261 4262 This release implements most of ACPI 6.0 as described below. 4263 4264 1) ACPICA kernel-resident subsystem: 4265 4266 Implemented runtime argument checking and return value checking for all 4267 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 4268 _MTL, _PRR, _RDI, _RST, _TFP, _TSN. 4269 4270 Example Code and Data Size: These are the sizes for the OS-independent 4271 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4272 debug version of the code includes the debug output trace mechanism and 4273 has a much larger code and data size. 4274 4275 Current Release: 4276 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 4277 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 4278 Previous Release: 4279 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4280 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4281 4282 4283 2) iASL Compiler/Disassembler and Tools: 4284 4285 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 4286 names (argument count validation and return value typechecking.) 4287 4288 iASL disassembler and table compiler: implemented support for all new 4289 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 4290 4291 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 4292 tables: FADT, MADT. 4293 4294 iASL preprocessor: Added a new directive to enable inclusion of binary 4295 blobs into ASL code. The new directive is #includebuffer. It takes a 4296 binary file as input and emits a named ascii buffer object into the ASL 4297 code. 4298 4299 AcpiHelp: Added support for all new ACPI 6.0 predefined names. 4300 4301 AcpiHelp: Added a new option, -d, to display all iASL preprocessor 4302 directives. 4303 4304 AcpiHelp: Added a new option, -t, to display all known/supported ACPI 4305 tables. 4306 4307 4308 ---------------------------------------- 4309 10 April 2015. Summary of changes for version 20150410: 4310 4311 Reverted a change introduced in version 20150408 that caused 4312 a regression in the disassembler where incorrect operator 4313 symbols could be emitted. 4314 4315 4316 ---------------------------------------- 4317 08 April 2015. Summary of changes for version 20150408: 4318 4319 4320 1) ACPICA kernel-resident subsystem: 4321 4322 Permanently set the return value for the _REV predefined name. It now 4323 returns 2 (was 5). This matches other ACPI implementations. _REV will be 4324 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 4325 for ACPI 2.0 and later. It should never be used to differentiate or 4326 identify operating systems. 4327 4328 Added the "Windows 2015" string to the _OSI support. ACPICA will now 4329 return TRUE to a query with this string. 4330 4331 Fixed several issues with the local version of the printf function. 4332 4333 Added the C99 compiler option (-std=c99) to the Unix makefiles. 4334 4335 Current Release: 4336 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 4337 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 4338 Previous Release: 4339 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4340 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4341 4342 4343 2) iASL Compiler/Disassembler and Tools: 4344 4345 iASL: Implemented an enhancement to the constant folding feature to 4346 transform the parse tree to a simple Store operation whenever possible: 4347 Add (2, 3, X) ==> is converted to: Store (5, X) 4348 X = 2 + 3 ==> is converted to: Store (5, X) 4349 4350 Updated support for the SLIC table (Software Licensing Description Table) 4351 in both the Data Table compiler and the disassembler. The SLIC table 4352 support now conforms to "Microsoft Software Licensing Tables (SLIC and 4353 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 4354 following the ACPI header is now defined to be "Proprietary Data", and as 4355 such, can only be entered or displayed as a hex data block. 4356 4357 Implemented full support for the MSDM table as described in the document 4358 above. Note: The format of MSDM is similar to SLIC. Any MSDM data 4359 following the ACPI header is defined to be "Proprietary Data", and can 4360 only be entered or displayed as a hex data block. 4361 4362 Implemented the -Pn option for the iASL Table Compiler (was only 4363 implemented for the ASL compiler). This option disables the iASL 4364 preprocessor. 4365 4366 Disassembler: For disassembly of Data Tables, added a comment field 4367 around the Ascii equivalent data that is emitted as part of the "Raw 4368 Table Data" block. This prevents the iASL Preprocessor from possible 4369 confusion if/when the table is compiled. 4370 4371 Disassembler: Added an option (-df) to force the disassembler to assume 4372 that the table being disassembled contains valid AML. This feature is 4373 useful for disassembling AML files that contain ACPI signatures other 4374 than DSDT or SSDT (such as OEMx or other signatures). 4375 4376 Changes for the EFI version of the tools: 4377 1) Fixed a build error/issue 4378 2) Fixed a cast warning 4379 4380 iASL: Fixed a path issue with the __FILE__ operator by making the 4381 directory prefix optional within the internal SplitInputFilename 4382 function. 4383 4384 Debugger: Removed some unused global variables. 4385 4386 Tests: Updated the makefile for proper generation of the AAPITS suite. 4387 4388 4389 ---------------------------------------- 4390 04 February 2015. Summary of changes for version 20150204: 4391 4392 ACPICA kernel-resident subsystem: 4393 4394 Updated all ACPICA copyrights and signons to 2014. Added the 2014 4395 copyright to all module headers and signons, including the standard Linux 4396 header. This affects virtually every file in the ACPICA core subsystem, 4397 iASL compiler, all ACPICA utilities, and the test suites. 4398 4399 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 4400 A raw gpe handling mechanism was created to allow better handling of GPE 4401 storms that aren't easily managed by the normal handler. The raw handler 4402 allows disabling/renabling of the GPE so that interrupt storms can be 4403 avoided in cases where events cannot be timely serviced. In this 4404 scenario, handlers should use the AcpiSetGpe() API to disable/enable the 4405 GPE. This API will leave the reference counts undisturbed, thereby 4406 preventing unintentional clearing of the GPE when the intent in only to 4407 temporarily disable it. Raw handlers allow enabling and disabling of a 4408 GPE by removing GPE register locking. As such, raw handlers much provide 4409 their own locks while using GPE API's to protect access to GPE data 4410 structures. 4411 Lv Zheng 4412 4413 Events: Always modify GPE registers under the GPE lock. 4414 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 4415 values. Reported as bug by joe.liu (a] apple.com. 4416 4417 Unix makefiles: Separate option to disable optimizations and 4418 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 4419 NOOPT disable option and creates a separate flag (NOFORTIFY) for this 4420 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 4421 errors when building ACPICA. This allows disabling the option without 4422 also having to disable optimazations. 4423 David Box 4424 4425 Current Release: 4426 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 4427 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 4428 4429 -- 4430 -------------------------------------- 4431 07 November 2014. Summary of changes for version 20141107: 4432 4433 This release is available at https://acpica.org/downloads 4434 4435 This release introduces and implements language extensions to ASL that 4436 provide support for symbolic ("C-style") operators and expressions. These 4437 language extensions are known collectively as ASL+. 4438 4439 4440 1) iASL Compiler/Disassembler and Tools: 4441 4442 Disassembler: Fixed a problem with disassembly of the UartSerialBus 4443 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 4444 Box. 4445 4446 Disassembler: Fixed the Unicode macro support to add escape sequences. 4447 All non-printable ASCII values are emitted as escape sequences, as well 4448 as the standard escapes for quote and backslash. Ensures that the 4449 disassembled macro can be correctly recompiled. 4450 4451 iASL: Added Printf/Fprintf macros for formatted output. These macros are 4452 translated to existing AML Concatenate and Store operations. Printf 4453 writes to the ASL Debug object. Fprintf allows the specification of an 4454 ASL name as the target. Only a single format specifier is required, %o, 4455 since the AML interpreter dynamically converts objects to the required 4456 type. David E. Box. 4457 4458 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4459 (Concatenate (Concatenate (Concatenate ("", Arg0), 4460 ": Unexpected value for "), Arg1), ", "), Arg2), 4461 " at line "), Arg3), Debug) 4462 4463 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 4464 Arg0, Arg1, Arg2, Arg3) 4465 4466 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 4467 ("", Arg1), ": "), Arg0), " Successful"), STR1) 4468 4469 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 4470 4471 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 4472 ASL parse tree before the AML code is generated. This allows blocks of 4473 ASL code to be removed in order to help locate and identify problem 4474 devices and/or code. David E. Box. 4475 4476 AcpiExec: Added support (-fi) for an optional namespace object 4477 initialization file. This file specifies initial values for namespace 4478 objects as necessary for debugging and testing different ASL code paths 4479 that may be taken as a result of BIOS options. 4480 4481 4482 2) Overview of symbolic operator support for ASL (ASL+) 4483 ------------------------------------------------------- 4484 4485 As an extension to the ASL language, iASL implements support for symbolic 4486 (C-style) operators for math and logical expressions. This can greatly 4487 simplify ASL code as well as improve both readability and 4488 maintainability. These language extensions can exist concurrently with 4489 all legacy ASL code and expressions. 4490 4491 The symbolic extensions are 100% compatible with existing AML 4492 interpreters, since no new AML opcodes are created. To implement the 4493 extensions, the iASL compiler transforms the symbolic expressions into 4494 the legacy ASL/AML equivalents at compile time. 4495 4496 Full symbolic expressions are supported, along with the standard C 4497 precedence and associativity rules. 4498 4499 Full disassembler support for the symbolic expressions is provided, and 4500 creates an automatic migration path for existing ASL code to ASL+ code 4501 via the disassembly process. By default, the disassembler now emits ASL+ 4502 code with symbolic expressions. An option (-dl) is provided to force the 4503 disassembler to emit legacy ASL code if desired. 4504 4505 Below is the complete list of the currently supported symbolic operators 4506 with examples. See the iASL User Guide for additional information. 4507 4508 4509 ASL+ Syntax Legacy ASL Equivalent 4510 ----------- --------------------- 4511 4512 // Math operators 4513 4514 Z = X + Y Add (X, Y, Z) 4515 Z = X - Y Subtract (X, Y, Z) 4516 Z = X * Y Multiply (X, Y, Z) 4517 Z = X / Y Divide (X, Y, , Z) 4518 Z = X % Y Mod (X, Y, Z) 4519 Z = X << Y ShiftLeft (X, Y, Z) 4520 Z = X >> Y ShiftRight (X, Y, Z) 4521 Z = X & Y And (X, Y, Z) 4522 Z = X | Y Or (X, Y, Z) 4523 Z = X ^ Y Xor (X, Y, Z) 4524 Z = ~X Not (X, Z) 4525 X++ Increment (X) 4526 X-- Decrement (X) 4527 4528 // Logical operators 4529 4530 (X == Y) LEqual (X, Y) 4531 (X != Y) LNotEqual (X, Y) 4532 (X < Y) LLess (X, Y) 4533 (X > Y) LGreater (X, Y) 4534 (X <= Y) LLessEqual (X, Y) 4535 (X >= Y) LGreaterEqual (X, Y) 4536 (X && Y) LAnd (X, Y) 4537 (X || Y) LOr (X, Y) 4538 (!X) LNot (X) 4539 4540 // Assignment and compound assignment operations 4541 4542 X = Y Store (Y, X) 4543 X += Y Add (X, Y, X) 4544 X -= Y Subtract (X, Y, X) 4545 X *= Y Multiply (X, Y, X) 4546 X /= Y Divide (X, Y, , X) 4547 X %= Y Mod (X, Y, X) 4548 X <<= Y ShiftLeft (X, Y, X) 4549 X >>= Y ShiftRight (X, Y, X) 4550 X &= Y And (X, Y, X) 4551 X |= Y Or (X, Y, X) 4552 X ^= Y Xor (X, Y, X) 4553 4554 4555 3) ASL+ Examples: 4556 ----------------- 4557 4558 Legacy ASL: 4559 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 4560 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 4561 0x03FB), 4562 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 4563 { 4564 And (MEMB, 0xFFFFFFF0, SRMB) 4565 Store (MEMB, Local2) 4566 Store (PDBM, Local1) 4567 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 4568 Store (SRMB, MEMB) 4569 Or (PDBM, 0x02, PDBM) 4570 } 4571 4572 ASL+ version: 4573 If (((R510 & 0x03FB) == 0x02E0) || 4574 ((R520 & 0x03FB) == 0x02E0) || 4575 ((R530 & 0x03FB) == 0x02E0) || 4576 ((R540 & 0x03FB) == 0x02E0)) 4577 { 4578 SRMB = (MEMB & 0xFFFFFFF0) 4579 Local2 = MEMB 4580 Local1 = PDBM 4581 PDBM &= 0xFFFFFFFFFFFFFFF9 4582 MEMB = SRMB 4583 PDBM |= 0x02 4584 } 4585 4586 Legacy ASL: 4587 Store (0x1234, Local1) 4588 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 4589 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 4590 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 4591 Store (Index (PKG1, 0x03), Local6) 4592 Store (Add (Local3, Local2), Debug) 4593 Add (Local1, 0x0F, Local2) 4594 Add (Local1, Multiply (Local2, Local3), Local2) 4595 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 4596 4597 ASL+ version: 4598 Local1 = 0x1234 4599 Local3 = (((Local1 + TEST) + 0x20) * Local2) 4600 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 4601 Local3 = (Local1 + (TEST + (0x20 * Local2))) 4602 Local6 = Index (PKG1, 0x03) 4603 Debug = (Local3 + Local2) 4604 Local2 = (Local1 + 0x0F) 4605 Local2 = (Local1 + (Local2 * Local3)) 4606 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 4607 4608 4609 ---------------------------------------- 4610 26 September 2014. Summary of changes for version 20140926: 4611 4612 1) ACPICA kernel-resident subsystem: 4613 4614 Updated the GPIO operation region handler interface (GeneralPurposeIo). 4615 In order to support GPIO Connection objects with multiple pins, along 4616 with the related Field objects, the following changes to the interface 4617 have been made: The Address is now defined to be the offset in bits of 4618 the field unit from the previous invocation of a Connection. It can be 4619 viewed as a "Pin Number Index" into the connection resource descriptor. 4620 The BitWidth is the exact bit width of the field. It is usually one bit, 4621 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 4622 additional information and examples. 4623 4624 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 4625 corresponding _Lxx/_Exx methods are disabled (they may have been enabled 4626 by the firmware), so that they cannot fire until they are enabled via 4627 AcpiUpdateAllGpes. Rafael J. Wysocki. 4628 4629 Added a new return flag for the Event/GPE status interfaces -- 4630 AcpiGetEventStatus and AcpiGetGpeStatus. The new 4631 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 4632 GPE currently has a handler associated with it, and can thus actually 4633 affect the system. Lv Zheng. 4634 4635 Example Code and Data Size: These are the sizes for the OS-independent 4636 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4637 debug version of the code includes the debug output trace mechanism and 4638 has a much larger code and data size. 4639 4640 Current Release: 4641 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 4642 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 4643 Previous Release: 4644 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4645 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4646 4647 2) iASL Compiler/Disassembler and Tools: 4648 4649 iASL: Fixed a memory allocation/free regression introduced in 20140828 4650 that could cause the compiler to crash. This was introduced inadvertently 4651 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 4652 1113. 4653 4654 iASL: Removed two error messages that have been found to create false 4655 positives, until they can be fixed and fully validated (ACPICA BZ 1112): 4656 1) Illegal forward reference within a method 4657 2) Illegal reference across two methods 4658 4659 iASL: Implemented a new option (-lm) to create a hardware mapping file 4660 that summarizes all GPIO, I2C, SPI, and UART connections. This option 4661 works for both the compiler and disassembler. See the iASL compiler user 4662 guide for additional information and examples (section 6.4.6). 4663 4664 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 4665 version 2. This corrects the AE_BAD_HEADER exception seen on systems with 4666 a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 4667 4668 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 4669 unless STDIN is actually a terminal. Assists with batch-mode processing. 4670 ACPICA BZ 1114. 4671 4672 Disassembler/AcpiHelp: Added another large group of recognized _HID 4673 values. 4674 4675 4676 ---------------------------------------- 4677 28 August 2014. Summary of changes for version 20140828: 4678 4679 1) ACPICA kernel-resident subsystem: 4680 4681 Fixed a problem related to the internal use of the Timer() operator where 4682 a 64-bit divide could cause an attempted link to a double-precision math 4683 library. This divide is not actually necessary, so the code was 4684 restructured to eliminate it. Lv Zheng. 4685 4686 ACPI 5.1: Added support for the runtime validation of the _DSD package 4687 (similar to the iASL support). 4688 4689 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 4690 SRAT table. Hanjun Guo <hanjun.guo (a] linaro.org>. 4691 4692 Example Code and Data Size: These are the sizes for the OS-independent 4693 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4694 debug version of the code includes the debug output trace mechanism and 4695 has a much larger code and data size. 4696 4697 Current Release: 4698 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 4699 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 4700 Previous Release: 4701 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 4702 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4703 4704 2) iASL Compiler/Disassembler and Tools: 4705 4706 AcpiExec: Fixed a problem on unix systems where the original terminal 4707 state was not always properly restored upon exit. Seen when using the -v 4708 option. ACPICA BZ 1104. 4709 4710 iASL: Fixed a problem with the validation of the ranges/length within the 4711 Memory24 resource descriptor. There was a boundary condition when the 4712 range was equal to the (length -1) caused by the fact that these values 4713 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 4714 4715 Disassembler: Fixed a problem with the GpioInt descriptor interrupt 4716 polarity 4717 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 4718 is 4719 now supported properly. 4720 4721 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 4722 in the disassembler, data table compiler, and table template generator. 4723 4724 iASL: Added a requirement for Device() objects that one of either a _HID 4725 or _ADR must exist within the scope of a Device, as per the ACPI 4726 specification. Remove a similar requirement that was incorrectly in place 4727 for the _DSD object. 4728 4729 iASL: Added error detection for illegal named references within control 4730 methods that would cause runtime failures. Now trapped as errors are: 1) 4731 References to objects within a non-parent control method. 2) Forward 4732 references (within a method) -- for control methods, AML interpreters use 4733 a one-pass parse of control methods. ACPICA BZ 1008. 4734 4735 iASL: Added error checking for dependencies related to the _PSx power 4736 methods. ACPICA BZ 1029. 4737 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 4738 _PS3. 4739 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 4740 scope. 4741 4742 iASL and table compiler: Cleanup miscellaneous memory leaks by fully 4743 deploying the existing object and string caches and adding new caches for 4744 the table compiler. 4745 4746 iASL: Split the huge parser source file into multiple subfiles to improve 4747 manageability. Generation now requires the M4 macro preprocessor, which 4748 is part of the Bison distribution on both unix and windows platforms. 4749 4750 AcpiSrc: Fixed and removed all extraneous warnings generated during 4751 entire ACPICA source code scan and/or conversion. 4752 4753 4754 ---------------------------------------- 4755 4756 24 July 2014. Summary of changes for version 20140724: 4757 4758 The ACPI 5.1 specification has been released and is available at: 4759 http://uefi.org/specs/access 4760 4761 4762 0) ACPI 5.1 support in ACPICA: 4763 4764 ACPI 5.1 is fully supported in ACPICA as of this release. 4765 4766 New predefined names. Support includes iASL and runtime ACPICA 4767 validation. 4768 _CCA (Cache Coherency Attribute). 4769 _DSD (Device-Specific Data). David Box. 4770 4771 Modifications to existing ACPI tables. Support includes headers, iASL 4772 Data Table compiler, disassembler, and the template generator. 4773 FADT - New fields and flags. Graeme Gregory. 4774 GTDT - One new subtable and new fields. Tomasz Nowicki. 4775 MADT - Two new subtables. Tomasz Nowicki. 4776 PCCT - One new subtable. 4777 4778 Miscellaneous. 4779 New notification type for System Resource Affinity change events. 4780 4781 4782 1) ACPICA kernel-resident subsystem: 4783 4784 Fixed a regression introduced in 20140627 where a fault can happen during 4785 the deletion of Alias AML namespace objects. The problem affected both 4786 the core ACPICA and the ACPICA tools including iASL and AcpiExec. 4787 4788 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 4789 simple mechanism to enable wake GPEs that have no associated handler or 4790 control method. Rafael Wysocki. 4791 4792 Updated the AcpiEnableGpe interface to disallow the enable if there is no 4793 handler or control method associated with the particular GPE. This will 4794 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 4795 4796 Updated GPE handling and dispatch by disabling the GPE before clearing 4797 the status bit for edge-triggered GPEs. Lv Zheng. 4798 4799 Added Timer() support to the AML Debug object. The current timer value is 4800 now displayed with each invocation of (Store to) the debug object to 4801 enable simple generation of execution times for AML code (method 4802 execution for example.) ACPICA BZ 1093. 4803 4804 Example Code and Data Size: These are the sizes for the OS-independent 4805 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4806 debug version of the code includes the debug output trace mechanism and 4807 has a much larger code and data size. 4808 4809 Current Release: 4810 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 4811 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 4812 Previous Release: 4813 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4814 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4815 4816 4817 2) iASL Compiler/Disassembler and Tools: 4818 4819 Fixed an issue with the recently added local printf implementation, 4820 concerning width/precision specifiers that could cause incorrect output. 4821 Lv Zheng. ACPICA BZ 1094. 4822 4823 Disassembler: Added support to detect buffers that contain UUIDs and 4824 disassemble them to an invocation of the ToUUID operator. Also emit 4825 commented descriptions of known ACPI-related UUIDs. 4826 4827 AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 4828 -u. Adds three new files. 4829 4830 iASL: Update table compiler and disassembler for DMAR table changes that 4831 were introduced in September 2013. With assistance by David Woodhouse. 4832 4833 ---------------------------------------- 4834 27 June 2014. Summary of changes for version 20140627: 4835 4836 1) ACPICA kernel-resident subsystem: 4837 4838 Formatted Output: Implemented local versions of standard formatted output 4839 utilities such as printf, etc. Over time, it has been discovered that 4840 there are in fact many portability issues with printf, and the addition 4841 of this feature will fix/prevent these issues once and for all. Some 4842 known issues are summarized below: 4843 4844 1) Output of 64-bit values is not portable. For example, UINT64 is %ull 4845 for the Linux kernel and is %uI64 for some MSVC versions. 4846 2) Invoking printf consistently in a manner that is portable across both 4847 32-bit and 64-bit platforms is difficult at best in many situations. 4848 3) The output format for pointers varies from system to system (leading 4849 zeros especially), and leads to inconsistent output from ACPICA across 4850 platforms. 4851 4) Certain platform-specific printf formats may conflict with ACPICA use. 4852 5) If there is no local C library available, ACPICA now has local support 4853 for printf. 4854 4855 -- To address these printf issues in a complete manner, ACPICA now 4856 directly implements a small subset of printf format specifiers, only 4857 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 4858 4859 Implemented support for ACPICA generation within the EFI environment. 4860 Initially, the AcpiDump utility is supported in the UEFI shell 4861 environment. Lv Zheng. 4862 4863 Added a new external interface, AcpiLogError, to improve ACPICA 4864 portability. This allows the host to redirect error messages from the 4865 ACPICA utilities. Lv Zheng. 4866 4867 Added and deployed new OSL file I/O interfaces to improve ACPICA 4868 portability: 4869 AcpiOsOpenFile 4870 AcpiOsCloseFile 4871 AcpiOsReadFile 4872 AcpiOsWriteFile 4873 AcpiOsGetFileOffset 4874 AcpiOsSetFileOffset 4875 There are C library implementations of these functions in the new file 4876 service_layers/oslibcfs.c -- however, the functions can be implemented by 4877 the local host in any way necessary. Lv Zheng. 4878 4879 Implemented a mechanism to disable/enable ACPI table checksum validation 4880 at runtime. This can be useful when loading tables very early during OS 4881 initialization when it may not be possible to map the entire table in 4882 order to compute the checksum. Lv Zheng. 4883 4884 Fixed a buffer allocation issue for the Generic Serial Bus support. 4885 Originally, a fixed buffer length was used. This change allows for 4886 variable-length buffers based upon the protocol indicated by the field 4887 access attributes. Reported by Lan Tianyu. Lv Zheng. 4888 4889 Fixed a problem where an object detached from a namespace node was not 4890 properly terminated/cleared and could cause a circular list problem if 4891 reattached. ACPICA BZ 1063. David Box. 4892 4893 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 4894 4895 Fixed a possible memory leak in an error return path within the function 4896 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 4897 4898 Example Code and Data Size: These are the sizes for the OS-independent 4899 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4900 debug version of the code includes the debug output trace mechanism and 4901 has a much larger code and data size. 4902 4903 Current Release: 4904 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 4905 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 4906 Previous Release: 4907 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4908 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4909 4910 4911 2) iASL Compiler/Disassembler and Tools: 4912 4913 Disassembler: Add dump of ASCII equivalent text within a comment at the 4914 end of each line of the output for the Buffer() ASL operator. 4915 4916 AcpiDump: Miscellaneous changes: 4917 Fixed repetitive table dump in -n mode. 4918 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 4919 the ACPI 2.0 GUID fails. 4920 4921 iASL: Fixed a problem where the compiler could fault if incorrectly given 4922 an acpidump output file as input. ACPICA BZ 1088. David Box. 4923 4924 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 4925 they are invoked without any arguments. 4926 4927 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 4928 1086. Colin Ian King. 4929 4930 Disassembler: Cleaned up a block of code that extracts a parent Op 4931 object. Added a comment that explains that the parent is guaranteed to be 4932 valid in this case. ACPICA BZ 1069. 4933 4934 4935 ---------------------------------------- 4936 24 April 2014. Summary of changes for version 20140424: 4937 4938 1) ACPICA kernel-resident subsystem: 4939 4940 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 4941 Some of these tables are known to contain a trailing NULL entry. Lv 4942 Zheng. 4943 4944 Removed an extraneous error message for the case where there are a large 4945 number of system GPEs (> 124). This was the "32-bit FADT register is too 4946 long to convert to GAS struct" message, which is irrelevant for GPEs 4947 since the GPEx_BLK_LEN fields of the FADT are always used instead of the 4948 (limited capacity) GAS bit length. Also, several changes to ensure proper 4949 support for GPE numbers > 255, where some "GPE number" fields were 8-bits 4950 internally. 4951 4952 Implemented and deployed additional configuration support for the public 4953 ACPICA external interfaces. Entire classes of interfaces can now be 4954 easily modified or configured out, replaced by stubbed inline functions 4955 by default. Lv Zheng. 4956 4957 Moved all public ACPICA runtime configuration globals to the public 4958 ACPICA external interface file for convenience. Also, removed some 4959 obsolete/unused globals. See the file acpixf.h. Lv Zheng. 4960 4961 Documentation: Added a new section to the ACPICA reference describing the 4962 maximum number of GPEs that can be supported by the FADT-defined GPEs in 4963 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 4964 reference. 4965 4966 Example Code and Data Size: These are the sizes for the OS-independent 4967 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4968 debug version of the code includes the debug output trace mechanism and 4969 has a much larger code and data size. 4970 4971 Current Release: 4972 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 4973 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 4974 Previous Release: 4975 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 4976 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 4977 4978 4979 2) iASL Compiler/Disassembler and Tools: 4980 4981 iASL and disassembler: Add full support for the LPIT table (Low Power 4982 Idle Table). Includes support in the disassembler, data table compiler, 4983 and template generator. 4984 4985 AcpiDump utility: 4986 1) Add option to force the use of the RSDT (over the XSDT). 4987 2) Improve validation of the RSDP signature (use 8 chars instead of 4). 4988 4989 iASL: Add check for predefined packages that are too large. For 4990 predefined names that contain subpackages, check if each subpackage is 4991 too large. (Check for too small already exists.) 4992 4993 Debugger: Updated the GPE command (which simulates a GPE by executing the 4994 GPE code paths in ACPICA). The GPE device is now optional, and defaults 4995 to the GPE 0/1 FADT-defined blocks. 4996 4997 Unix application OSL: Update line-editing support. Add additional error 4998 checking and take care not to reset terminal attributes on exit if they 4999 were never set. This should help guarantee that the terminal is always 5000 left in the previous state on program exit. 5001 5002 5003 ---------------------------------------- 5004 25 March 2014. Summary of changes for version 20140325: 5005 5006 1) ACPICA kernel-resident subsystem: 5007 5008 Updated the auto-serialize feature for control methods. This feature 5009 automatically serializes all methods that create named objects in order 5010 to prevent runtime errors. The update adds support to ignore the 5011 currently executing AML SyncLevel when invoking such a method, in order 5012 to prevent disruption of any existing SyncLevel priorities that may exist 5013 in the AML code. Although the use of SyncLevels is relatively rare, this 5014 change fixes a regression where an AE_AML_MUTEX_ORDER exception can 5015 appear on some machines starting with the 20140214 release. 5016 5017 Added a new external interface to allow the host to install ACPI tables 5018 very early, before the namespace is even created. AcpiInstallTable gives 5019 the host additional flexibility for ACPI table management. Tables can be 5020 installed directly by the host as if they had originally appeared in the 5021 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 5022 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along 5023 with additional internal restructuring and cleanup. See the ACPICA 5024 Reference for interface details. Lv Zheng. 5025 5026 Added validation of the checksum for all incoming dynamically loaded 5027 tables (via external interfaces or via AML Load/LoadTable operators). Lv 5028 Zheng. 5029 5030 Updated the use of the AcpiOsWaitEventsComplete interface during Notify 5031 and GPE handler removal. Restructured calls to eliminate possible race 5032 conditions. Lv Zheng. 5033 5034 Added a warning for the use/execution of the ASL/AML Unload (table) 5035 operator. This will help detect and identify machines that use this 5036 operator if and when it is ever used. This operator has never been seen 5037 in the field and the usage model and possible side-effects of the drastic 5038 runtime action of a full table removal are unknown. 5039 5040 Reverted the use of #pragma push/pop which was introduced in the 20140214 5041 release. It appears that push and pop are not implemented by enough 5042 compilers to make the use of this feature feasible for ACPICA at this 5043 time. However, these operators may be deployed in a future ACPICA 5044 release. 5045 5046 Added the missing EXPORT_SYMBOL macros for the install and remove SCI 5047 handler interfaces. 5048 5049 Source code generation: 5050 1) Disabled the use of the "strchr" macro for the gcc-specific 5051 generation. For some versions of gcc, this macro can periodically expose 5052 a compiler bug which in turn causes compile-time error(s). 5053 2) Added support for PPC64 compilation. Colin Ian King. 5054 5055 Example Code and Data Size: These are the sizes for the OS-independent 5056 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5057 debug version of the code includes the debug output trace mechanism and 5058 has a much larger code and data size. 5059 5060 Current Release: 5061 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 5062 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 5063 Previous Release: 5064 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5065 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5066 5067 5068 2) iASL Compiler/Disassembler and Tools: 5069 5070 Disassembler: Added several new features to improve the readability of 5071 the resulting ASL code. Extra information is emitted within comment 5072 fields in the ASL code: 5073 1) Known _HID/_CID values are decoded to descriptive text. 5074 2) Standard values for the Notify() operator are decoded to descriptive 5075 text. 5076 3) Target operands are expanded to full pathnames (in a comment) when 5077 possible. 5078 5079 Disassembler: Miscellaneous updates for extern() handling: 5080 1) Abort compiler if file specified by -fe option does not exist. 5081 2) Silence unnecessary warnings about argument count mismatches. 5082 3) Update warning messages concerning unresolved method externals. 5083 4) Emit "UnknownObj" keyword for externals whose type cannot be 5084 determined. 5085 5086 AcpiHelp utility: 5087 1) Added the -a option to display both the ASL syntax and the AML 5088 encoding for an input ASL operator. This effectively displays all known 5089 information about an ASL operator with one AcpiHelp invocation. 5090 2) Added substring match support (similar to a wildcard) for the -i 5091 (_HID/PNP IDs) option. 5092 5093 iASL/Disassembler: Since this tool does not yet support execution on big- 5094 endian machines, added detection of endianness and an error message if 5095 execution is attempted on big-endian. Support for big-endian within iASL 5096 is a feature that is on the ACPICA to-be-done list. 5097 5098 AcpiBin utility: 5099 1) Remove option to extract binary files from an acpidump; this function 5100 is made obsolete by the AcpiXtract utility. 5101 2) General cleanup of open files and allocated buffers. 5102 5103 5104 ---------------------------------------- 5105 14 February 2014. Summary of changes for version 20140214: 5106 5107 1) ACPICA kernel-resident subsystem: 5108 5109 Implemented a new mechanism to proactively prevent problems with ill- 5110 behaved reentrant control methods that create named ACPI objects. This 5111 behavior is illegal as per the ACPI specification, but is nonetheless 5112 frequently seen in the field. Previously, this could lead to an 5113 AE_ALREADY_EXISTS exception if the method was actually entered by more 5114 than one thread. This new mechanism detects such methods at table load 5115 time and marks them "serialized" to prevent reentrancy. A new global 5116 option, AcpiGbl_AutoSerializeMethods, has been added to disable this 5117 feature if desired. This mechanism and global option obsoletes and 5118 supersedes the previous AcpiGbl_SerializeAllMethods option. 5119 5120 Added the "Windows 2013" string to the _OSI support. ACPICA will now 5121 respond TRUE to _OSI queries with this string. It is the stated policy of 5122 ACPICA to add new strings to the _OSI support as soon as possible after 5123 they are defined. See the full ACPICA _OSI policy which has been added to 5124 the utilities/utosi.c file. 5125 5126 Hardened/updated the _PRT return value auto-repair code: 5127 1) Do not abort the repair on a single subpackage failure, continue to 5128 check all subpackages. 5129 2) Add check for the minimum subpackage length (4). 5130 3) Properly handle extraneous NULL package elements. 5131 5132 Added support to avoid the possibility of infinite loops when traversing 5133 object linked lists. Never allow an infinite loop, even in the face of 5134 corrupted object lists. 5135 5136 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 5137 pack(pop) directives to ensure that the ACPICA headers are independent of 5138 compiler settings or other host headers. 5139 5140 Example Code and Data Size: These are the sizes for the OS-independent 5141 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5142 debug version of the code includes the debug output trace mechanism and 5143 has a much larger code and data size. 5144 5145 Current Release: 5146 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 5147 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 5148 Previous Release: 5149 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5150 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5151 5152 5153 2) iASL Compiler/Disassembler and Tools: 5154 5155 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 5156 first reserved field was incorrectly forced to have a value of zero. This 5157 change correctly forces the field to have a value of one. ACPICA BZ 1081. 5158 5159 Debugger: Added missing support for the "Extra" and "Data" subobjects 5160 when displaying object data. 5161 5162 Debugger: Added support to display entire object linked lists when 5163 displaying object data. 5164 5165 iASL: Removed the obsolete -g option to obtain ACPI tables from the 5166 Windows registry. This feature has been superseded by the acpidump 5167 utility. 5168 5169 5170 ---------------------------------------- 5171 14 January 2014. Summary of changes for version 20140114: 5172 5173 1) ACPICA kernel-resident subsystem: 5174 5175 Updated all ACPICA copyrights and signons to 2014. Added the 2014 5176 copyright to all module headers and signons, including the standard Linux 5177 header. This affects virtually every file in the ACPICA core subsystem, 5178 iASL compiler, all ACPICA utilities, and the test suites. 5179 5180 Improved parameter validation for AcpiInstallGpeBlock. Added the 5181 following checks: 5182 1) The incoming device handle refers to type ACPI_TYPE_DEVICE. 5183 2) There is not already a GPE block attached to the device. 5184 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 5185 device. 5186 5187 Correctly support "references" in the ACPI_OBJECT. This change fixes the 5188 support to allow references (namespace nodes) to be passed as arguments 5189 to control methods via the evaluate object interface. This is probably 5190 most useful for testing purposes, however. 5191 5192 Improved support for 32/64 bit physical addresses in printf()-like 5193 output. This change improves the support for physical addresses in printf 5194 debug statements and other output on both 32-bit and 64-bit hosts. It 5195 consistently outputs the appropriate number of bytes for each host. The 5196 %p specifier is unsatisfactory since it does not emit uniform output on 5197 all hosts/clib implementations (on some, leading zeros are not supported, 5198 leading to difficult-to-read output). 5199 5200 Example Code and Data Size: These are the sizes for the OS-independent 5201 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5202 debug version of the code includes the debug output trace mechanism and 5203 has a much larger code and data size. 5204 5205 Current Release: 5206 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 5207 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 5208 Previous Release: 5209 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5210 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5211 5212 5213 2) iASL Compiler/Disassembler and Tools: 5214 5215 iASL: Fix a possible fault when using the Connection() operator. Fixes a 5216 problem if the parent Field definition for the Connection operator refers 5217 to an operation region that does not exist. ACPICA BZ 1064. 5218 5219 AcpiExec: Load of local test tables is now optional. The utility has the 5220 capability to load some various tables to test features of ACPICA. 5221 However, there are enough of them that the output of the utility became 5222 confusing. With this change, only the required local tables are displayed 5223 (RSDP, XSDT, etc.) along with the actual tables loaded via the command 5224 line specification. This makes the default output simler and easier to 5225 understand. The -el command line option restores the original behavior 5226 for testing purposes. 5227 5228 AcpiExec: Added support for overlapping operation regions. This change 5229 expands the simulation of operation regions by supporting regions that 5230 overlap within the given address space. Supports SystemMemory and 5231 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 5232 5233 AcpiExec: Added region handler support for PCI_Config and EC spaces. This 5234 allows AcpiExec to simulate these address spaces, similar to the current 5235 support for SystemMemory and SystemIO. 5236 5237 Debugger: Added new command to read/write/compare all namespace objects. 5238 The command "test objects" will exercise the entire namespace by writing 5239 new values to each data object, and ensuring that the write was 5240 successful. The original value is then restored and verified. 5241 5242 Debugger: Added the "test predefined" command. This change makes this 5243 test public and puts it under the new "test" command. The test executes 5244 each and every predefined name within the current namespace. 5245 5246 5247 ---------------------------------------- 5248 18 December 2013. Summary of changes for version 20131218: 5249 5250 Global note: The ACPI 5.0A specification was released this month. There 5251 are no changes needed for ACPICA since this release of ACPI is an 5252 errata/clarification release. The specification is available at 5253 acpi.info. 5254 5255 5256 1) ACPICA kernel-resident subsystem: 5257 5258 Added validation of the XSDT root table if it is present. Some older 5259 platforms contain an XSDT that is ill-formed or otherwise invalid (such 5260 as containing some or all entries that are NULL pointers). This change 5261 adds a new function to validate the XSDT before actually using it. If the 5262 XSDT is found to be invalid, ACPICA will now automatically fall back to 5263 using the RSDT instead. Original implementation by Zhao Yakui. Ported to 5264 ACPICA and enhanced by Lv Zheng and Bob Moore. 5265 5266 Added a runtime option to ignore the XSDT and force the use of the RSDT. 5267 This change adds a runtime option that will force ACPICA to use the RSDT 5268 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 5269 requires that an XSDT be used instead of the RSDT, the XSDT has been 5270 found to be corrupt or ill-formed on some machines. Lv Zheng. 5271 5272 Added a runtime option to favor 32-bit FADT register addresses over the 5273 64-bit addresses. This change adds an option to favor 32-bit FADT 5274 addresses when there is a conflict between the 32-bit and 64-bit versions 5275 of the same register. The default behavior is to use the 64-bit version 5276 in accordance with the ACPI specification. This can now be overridden via 5277 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 5278 5279 During the change above, the internal "Convert FADT" and "Verify FADT" 5280 functions have been merged to simplify the code, making it easier to 5281 understand and maintain. ACPICA BZ 933. 5282 5283 Improve exception reporting and handling for GPE block installation. 5284 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 5285 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 5286 5287 Added helper macros to extract bus/segment numbers from the HEST table. 5288 This change adds two macros to extract the encoded bus and segment 5289 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 5290 Betty Dall <betty.dall (a] hp.com> 5291 5292 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 5293 by ACPICA. It is not a public macro, so it should have no effect on 5294 existing OSV code. Lv Zheng. 5295 5296 Example Code and Data Size: These are the sizes for the OS-independent 5297 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5298 debug version of the code includes the debug output trace mechanism and 5299 has a much larger code and data size. 5300 5301 Current Release: 5302 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 5303 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 5304 Previous Release: 5305 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5306 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5307 5308 5309 2) iASL Compiler/Disassembler and Tools: 5310 5311 Disassembler: Improved pathname support for emitted External() 5312 statements. This change adds full pathname support for external names 5313 that have been resolved internally by the inclusion of additional ACPI 5314 tables (via the iASL -e option). Without this change, the disassembler 5315 can emit multiple externals for the same object, or it become confused 5316 when the Scope() operator is used on an external object. Overall, greatly 5317 improves the ability to actually recompile the emitted ASL code when 5318 objects a referenced across multiple ACPI tables. Reported by Michael 5319 Tsirkin (mst (a] redhat.com). 5320 5321 Tests/ASLTS: Updated functional control suite to execute with no errors. 5322 David Box. Fixed several errors related to the testing of the interpreter 5323 slack mode. Lv Zheng. 5324 5325 iASL: Added support to detect names that are declared within a control 5326 method, but are unused (these are temporary names that are only valid 5327 during the time the method is executing). A remark is issued for these 5328 cases. ACPICA BZ 1022. 5329 5330 iASL: Added full support for the DBG2 table. Adds full disassembler, 5331 table compiler, and template generator support for the DBG2 table (Debug 5332 Port 2 table). 5333 5334 iASL: Added full support for the PCCT table, update the table definition. 5335 Updates the PCCT table definition in the actbl3.h header and adds table 5336 compiler and template generator support. 5337 5338 iASL: Added an option to emit only error messages (no warnings/remarks). 5339 The -ve option will enable only error messages, warnings and remarks are 5340 suppressed. This can simplify debugging when only the errors are 5341 important, such as when an ACPI table is disassembled and there are many 5342 warnings and remarks -- but only the actual errors are of real interest. 5343 5344 Example ACPICA code (source/tools/examples): Updated the example code so 5345 that it builds to an actual working program, not just example code. Added 5346 ACPI tables and execution of an example control method in the DSDT. Added 5347 makefile support for Unix generation. 5348 5349 5350 ---------------------------------------- 5351 15 November 2013. Summary of changes for version 20131115: 5352 5353 This release is available at https://acpica.org/downloads 5354 5355 5356 1) ACPICA kernel-resident subsystem: 5357 5358 Resource Manager: Fixed loop termination for the "get AML length" 5359 function. The loop previously had an error termination on a NULL resource 5360 pointer, which can never happen since the loop simply increments a valid 5361 resource pointer. This fix changes the loop to terminate with an error on 5362 an invalid end-of-buffer condition. The problem can be seen as an 5363 infinite loop by callers to AcpiSetCurrentResources with an invalid or 5364 corrupted resource descriptor, or a resource descriptor that is missing 5365 an END_TAG descriptor. Reported by Dan Carpenter 5366 <dan.carpenter (a] oracle.com>. Lv Zheng, Bob Moore. 5367 5368 Table unload and ACPICA termination: Delete all attached data objects 5369 during namespace node deletion. This fix updates namespace node deletion 5370 to delete the entire list of attached objects (attached via 5371 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 5372 1024. Tomasz Nowicki (tomasz.nowicki (a] linaro.org). 5373 5374 ACPICA termination: Added support to delete all objects attached to the 5375 root namespace node. This fix deletes any and all objects that have been 5376 attached to the root node via AcpiAttachData. Previously, none of these 5377 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 5378 5379 Debug output: Do not emit the function nesting level for the in-kernel 5380 build. The nesting level is really only useful during a single-thread 5381 execution. Therefore, only enable this output for the AcpiExec utility. 5382 Also, only emit the thread ID when executing under AcpiExec (Context 5383 switches are still always detected and a message is emitted). ACPICA BZ 5384 972. 5385 5386 Example Code and Data Size: These are the sizes for the OS-independent 5387 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5388 debug version of the code includes the debug output trace mechanism and 5389 has a much larger code and data size. 5390 5391 Current Release: 5392 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 5393 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 5394 Previous Release: 5395 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5396 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5397 5398 5399 2) iASL Compiler/Disassembler and Tools: 5400 5401 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 5402 correct portable POSIX header for terminal control functions. 5403 5404 Disassembler: Fixed control method invocation issues related to the use 5405 of the CondRefOf() operator. The problem is seen in the disassembly where 5406 control method invocations may not be disassembled properly if the 5407 control method name has been used previously as an argument to CondRefOf. 5408 The solution is to not attempt to emit an external declaration for the 5409 CondRefOf target (it is not necessary in the first place). This prevents 5410 disassembler object type confusion. ACPICA BZ 988. 5411 5412 Unix Makefiles: Added an option to disable compiler optimizations and the 5413 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 5414 with optimizations (reportedly, gcc 4.4 for example). This change adds a 5415 command line option for make (NOOPT) that disables all compiler 5416 optimizations and the _FORTIFY_SOURCE compiler flag. The default 5417 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 5418 1034. Lv Zheng, Bob Moore. 5419 5420 Tests/ASLTS: Added options to specify individual test cases and modes. 5421 This allows testers running aslts.sh to optionally specify individual 5422 test modes and test cases. Also added an option to disable the forced 5423 generation of the ACPICA tools from source if desired. Lv Zheng. 5424 5425 ---------------------------------------- 5426 27 September 2013. Summary of changes for version 20130927: 5427 5428 This release is available at https://acpica.org/downloads 5429 5430 5431 1) ACPICA kernel-resident subsystem: 5432 5433 Fixed a problem with store operations to reference objects. This change 5434 fixes a problem where a Store operation to an ArgX object that contained 5435 a 5436 reference to a field object did not complete the automatic dereference 5437 and 5438 then write to the actual field object. Instead, the object type of the 5439 field object was inadvertently changed to match the type of the source 5440 operand. The new behavior will actually write to the field object (buffer 5441 field or field unit), thus matching the correct ACPI-defined behavior. 5442 5443 Implemented support to allow the host to redefine individual OSL 5444 prototypes. This change enables the host to redefine OSL prototypes found 5445 in the acpiosxf.h file. This allows the host to implement OSL interfaces 5446 with a macro or inlined function. Further, it allows the host to add any 5447 additional required modifiers such as __iomem, __init, __exit, etc., as 5448 necessary on a per-interface basis. Enables maximum flexibility for the 5449 OSL interfaces. Lv Zheng. 5450 5451 Hardcoded the access width for the FADT-defined reset register. The ACPI 5452 specification requires the reset register width to be 8 bits. ACPICA now 5453 hardcodes the width to 8 and ignores the FADT width value. This provides 5454 compatibility with other ACPI implementations that have allowed BIOS code 5455 with bad register width values to go unnoticed. Matthew Garett, Bob 5456 Moore, 5457 Lv Zheng. 5458 5459 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 5460 used 5461 in the OSL header (acpiosxf). The change modifies the position of this 5462 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 5463 build issues if the OSL defines the implementation of the interface to be 5464 an inline stub function. Lv Zheng. 5465 5466 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 5467 initialization interfaces. This change adds a new macro for the main init 5468 and terminate external interfaces in order to support hosts that require 5469 additional or different processing for these functions. Changed from 5470 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 5471 Zheng, Bob Moore. 5472 5473 Cleaned up the memory allocation macros for configurability. In the 5474 common 5475 case, the ACPI_ALLOCATE and related macros now resolve directly to their 5476 respective AcpiOs* OSL interfaces. Two options: 5477 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 5478 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 5479 2) For AcpiExec (and for debugging), the macros can optionally be 5480 resolved 5481 to the local ACPICA interfaces that track each allocation (local tracking 5482 is used to immediately detect memory leaks). 5483 Lv Zheng. 5484 5485 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 5486 to predefine this macro to either TRUE or FALSE during the system build. 5487 5488 Replaced __FUNCTION_ with __func__ in the gcc-specific header. 5489 5490 Example Code and Data Size: These are the sizes for the OS-independent 5491 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5492 debug version of the code includes the debug output trace mechanism and 5493 has a much larger code and data size. 5494 5495 Current Release: 5496 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 5497 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 5498 Previous Release: 5499 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5500 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5501 5502 5503 2) iASL Compiler/Disassembler and Tools: 5504 5505 iASL: Implemented wildcard support for the -e option. This simplifies use 5506 when there are many SSDTs that must be included to resolve external 5507 method 5508 declarations. ACPICA BZ 1041. Example: 5509 iasl -e ssdt*.dat -d dsdt.dat 5510 5511 AcpiExec: Add history/line-editing for Unix/Linux systems. This change 5512 adds a portable module that implements full history and limited line 5513 editing for Unix and Linux systems. It does not use readline() due to 5514 portability issues. Instead it uses the POSIX termio interface to put the 5515 terminal in raw input mode so that the various special keys can be 5516 trapped 5517 (such as up/down-arrow for history support and left/right-arrow for line 5518 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 5519 5520 AcpiXtract: Add support to handle (ignore) "empty" lines containing only 5521 one or more spaces. This provides compatible with early or different 5522 versions of the AcpiDump utility. ACPICA BZ 1044. 5523 5524 AcpiDump: Do not ignore tables that contain only an ACPI table header. 5525 Apparently, some BIOSs create SSDTs that contain an ACPI table header but 5526 no other data. This change adds support to dump these tables. Any tables 5527 shorter than the length of an ACPI table header remain in error (an error 5528 message is emitted). Reported by Yi Li. 5529 5530 Debugger: Echo actual command along with the "unknown command" message. 5531 5532 ---------------------------------------- 5533 23 August 2013. Summary of changes for version 20130823: 5534 5535 1) ACPICA kernel-resident subsystem: 5536 5537 Implemented support for host-installed System Control Interrupt (SCI) 5538 handlers. Certain ACPI functionality requires the host to handle raw 5539 SCIs. For example, the "SCI Doorbell" that is defined for memory power 5540 state support requires the host device driver to handle SCIs to examine 5541 if the doorbell has been activated. Multiple SCI handlers can be 5542 installed to allow for future expansion. New external interfaces are 5543 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 5544 details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 5545 5546 Operation region support: Never locally free the handler "context" 5547 pointer. This change removes some dangerous code that attempts to free 5548 the handler context pointer in some (rare) circumstances. The owner of 5549 the handler owns this pointer and the ACPICA code should never touch it. 5550 Although not seen to be an issue in any kernel, it did show up as a 5551 problem (fault) under AcpiExec. Also, set the internal storage field for 5552 the context pointer to zero when the region is deactivated, simply for 5553 sanity. David Box. ACPICA BZ 1039. 5554 5555 AcpiRead: On error, do not modify the return value target location. If an 5556 error happens in the middle of a split 32/32 64-bit I/O operation, do not 5557 modify the target of the return value pointer. Makes the code consistent 5558 with the rest of ACPICA. Bjorn Helgaas. 5559 5560 Example Code and Data Size: These are the sizes for the OS-independent 5561 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5562 debug version of the code includes the debug output trace mechanism and 5563 has a much larger code and data size. 5564 5565 Current Release: 5566 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 5567 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5568 Previous Release: 5569 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5570 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 5571 5572 5573 2) iASL Compiler/Disassembler and Tools: 5574 5575 AcpiDump: Implemented several new features and fixed some problems: 5576 1) Added support to dump the RSDP, RSDT, and XSDT tables. 5577 2) Added support for multiple table instances (SSDT, UEFI). 5578 3) Added option to dump "customized" (overridden) tables (-c). 5579 4) Fixed a problem where some table filenames were improperly 5580 constructed. 5581 5) Improved some error messages, removed some unnecessary messages. 5582 5583 iASL: Implemented additional support for disassembly of ACPI tables that 5584 contain invocations of external control methods. The -fe<file> option 5585 allows the import of a file that specifies the external methods along 5586 with the required number of arguments for each -- allowing for the 5587 correct disassembly of the table. This is a workaround for a limitation 5588 of AML code where the disassembler often cannot determine the number of 5589 arguments required for an external control method and generates incorrect 5590 ASL code. See the iASL reference for details. ACPICA BZ 1030. 5591 5592 Debugger: Implemented a new command (paths) that displays the full 5593 pathnames (namepaths) and object types of all objects in the namespace. 5594 This is an alternative to the namespace command. 5595 5596 Debugger: Implemented a new command (sci) that invokes the SCI dispatch 5597 mechanism and any installed handlers. 5598 5599 iASL: Fixed a possible segfault for "too many parent prefixes" condition. 5600 This can occur if there are too many parent prefixes in a namepath (for 5601 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 5602 5603 Application OSLs: Set the return value for the PCI read functions. These 5604 functions simply return AE_OK, but should set the return value to zero 5605 also. This change implements this. ACPICA BZ 1038. 5606 5607 Debugger: Prevent possible command line buffer overflow. Increase the 5608 size of a couple of the debugger line buffers, and ensure that overflow 5609 cannot happen. ACPICA BZ 1037. 5610 5611 iASL: Changed to abort immediately on serious errors during the parsing 5612 phase. Due to the nature of ASL, there is no point in attempting to 5613 compile these types of errors, and they typically end up causing a 5614 cascade of hundreds of errors which obscure the original problem. 5615 5616 ---------------------------------------- 5617 25 July 2013. Summary of changes for version 20130725: 5618 5619 1) ACPICA kernel-resident subsystem: 5620 5621 Fixed a problem with the DerefOf operator where references to FieldUnits 5622 and BufferFields incorrectly returned the parent object, not the actual 5623 value of the object. After this change, a dereference of a FieldUnit 5624 reference results in a read operation on the field to get the value, and 5625 likewise, the appropriate BufferField value is extracted from the target 5626 buffer. 5627 5628 Fixed a problem where the _WAK method could cause a fault under these 5629 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 5630 method returned no value. The problem is rarely seen because most kernels 5631 run ACPICA in slack mode. 5632 5633 For the DerefOf operator, a fatal error now results if an attempt is made 5634 to dereference a reference (created by the Index operator) to a NULL 5635 package element. Provides compatibility with other ACPI implementations, 5636 and this behavior will be added to a future version of the ACPI 5637 specification. 5638 5639 The ACPI Power Management Timer (defined in the FADT) is now optional. 5640 This provides compatibility with other ACPI implementations and will 5641 appear in the next version of the ACPI specification. If there is no PM 5642 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 5643 zero in the FADT indicates no PM timer. 5644 5645 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 5646 allows the host to globally enable/disable all vendor strings, all 5647 feature strings, or both. Intended to be primarily used for debugging 5648 purposes only. Lv Zheng. 5649 5650 Expose the collected _OSI data to the host via a global variable. This 5651 data tracks the highest level vendor ID that has been invoked by the BIOS 5652 so that the host (and potentially ACPICA itself) can change behaviors 5653 based upon the age of the BIOS. 5654 5655 Example Code and Data Size: These are the sizes for the OS-independent 5656 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5657 debug version of the code includes the debug output trace mechanism and 5658 has a much larger code and data size. 5659 5660 Current Release: 5661 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 5662 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 5663 Previous Release: 5664 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5665 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5666 5667 5668 2) iASL Compiler/Disassembler and Tools: 5669 5670 iASL: Created the following enhancements for the -so option (create 5671 offset table): 5672 1)Add offsets for the last nameseg in each namepath for every supported 5673 object type 5674 2)Add support for Processor, Device, Thermal Zone, and Scope objects 5675 3)Add the actual AML opcode for the parent object of every supported 5676 object type 5677 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 5678 5679 Disassembler: Emit all unresolved external symbols in a single block. 5680 These are external references to control methods that could not be 5681 resolved, and thus, the disassembler had to make a guess at the number of 5682 arguments to parse. 5683 5684 iASL: The argument to the -T option (create table template) is now 5685 optional. If not specified, the default table is a DSDT, typically the 5686 most common case. 5687 5688 ---------------------------------------- 5689 26 June 2013. Summary of changes for version 20130626: 5690 5691 1) ACPICA kernel-resident subsystem: 5692 5693 Fixed an issue with runtime repair of the _CST object. Null or invalid 5694 elements were not always removed properly. Lv Zheng. 5695 5696 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 5697 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 5698 the maximum number of GPEs is 1016. Use of multiple GPE block devices 5699 makes the system-wide number of GPEs essentially unlimited. 5700 5701 Example Code and Data Size: These are the sizes for the OS-independent 5702 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5703 debug version of the code includes the debug output trace mechanism and 5704 has a much larger code and data size. 5705 5706 Current Release: 5707 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 5708 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 5709 Previous Release: 5710 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5711 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5712 5713 5714 2) iASL Compiler/Disassembler and Tools: 5715 5716 Portable AcpiDump: Implemented full support for the Linux and FreeBSD 5717 hosts. Now supports Linux, FreeBSD, and Windows. 5718 5719 Disassembler: Added some missing types for the HEST and EINJ tables: "Set 5720 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 5721 5722 iASL/Preprocessor: Implemented full support for nested 5723 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 5724 5725 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 5726 max. The original purpose of this constraint was to limit the amount of 5727 debug output. However, the string function in question (UtPrintString) is 5728 now used for the disassembler also, where 256 bytes is insufficient. 5729 Reported by RehabMan@GitHub. 5730 5731 iASL/DataTables: Fixed some problems and issues with compilation of DMAR 5732 tables. ACPICA BZ 999. Lv Zheng. 5733 5734 iASL: Fixed a couple of error exit issues that could result in a "Could 5735 not delete <file>" message during ASL compilation. 5736 5737 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 5738 the actual signatures for these tables are "FACP" and "APIC", 5739 respectively. 5740 5741 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 5742 tables are allowed to have multiple instances. 5743 5744 ---------------------------------------- 5745 17 May 2013. Summary of changes for version 20130517: 5746 5747 1) ACPICA kernel-resident subsystem: 5748 5749 Fixed a regression introduced in version 20130328 for _INI methods. This 5750 change fixes a problem introduced in 20130328 where _INI methods are no 5751 longer executed properly because of a memory block that was not 5752 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 5753 <tomasz.nowicki (a] linaro.org>. 5754 5755 Fixed a possible problem with the new extended sleep registers in the 5756 ACPI 5757 5.0 FADT. Do not use these registers (even if populated) unless the HW- 5758 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 5759 1020. Lv Zheng. 5760 5761 Implemented return value repair code for _CST predefined objects: Sort 5762 the 5763 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 5764 5765 Implemented a debug-only option to disable loading of SSDTs from the 5766 RSDT/XSDT during ACPICA initialization. This can be useful for debugging 5767 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 5768 acglobal.h - ACPICA BZ 1005. Lv Zheng. 5769 5770 Fixed some issues in the ACPICA initialization and termination code: 5771 Tomasz Nowicki <tomasz.nowicki (a] linaro.org> 5772 1) Clear events initialized flag upon event component termination. ACPICA 5773 BZ 1013. 5774 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 5775 3) Delete global lock pending lock during termination. ACPICA BZ 1012. 5776 4) Clear debug buffer global on termination to prevent possible multiple 5777 delete. ACPICA BZ 1010. 5778 5779 Standardized all switch() blocks across the entire source base. After 5780 many 5781 years, different formatting for switch() had crept in. This change makes 5782 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 5783 5784 Split some files to enhance ACPICA modularity and configurability: 5785 1) Split buffer dump routines into utilities/utbuffer.c 5786 2) Split internal error message routines into utilities/uterror.c 5787 3) Split table print utilities into tables/tbprint.c 5788 4) Split iASL command-line option processing into asloptions.c 5789 5790 Makefile enhancements: 5791 1) Support for all new files above. 5792 2) Abort make on errors from any subcomponent. Chao Guan. 5793 3) Add build support for Apple Mac OS X. Liang Qi. 5794 5795 Example Code and Data Size: These are the sizes for the OS-independent 5796 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5797 debug version of the code includes the debug output trace mechanism and 5798 has a much larger code and data size. 5799 5800 Current Release: 5801 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 5802 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 5803 Previous Release: 5804 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5805 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5806 5807 5808 2) iASL Compiler/Disassembler and Tools: 5809 5810 New utility: Implemented an easily portable version of the acpidump 5811 utility to extract ACPI tables from the system (or a file) in an ASCII 5812 hex 5813 dump format. The top-level code implements the various command line 5814 options, file I/O, and table dump routines. To port to a new host, only 5815 three functions need to be implemented to get tables -- since this 5816 functionality is OS-dependent. See the tools/acpidump/apmain.c module and 5817 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 5818 1) The Windows version obtains the ACPI tables from the Registry. 5819 2) The Linux version is under development. 5820 3) Other hosts - If an OS-dependent module is submitted, it will be 5821 distributed with ACPICA. 5822 5823 iASL: Fixed a regression for -D preprocessor option (define symbol). A 5824 restructuring/change to the initialization sequence caused this option to 5825 no longer work properly. 5826 5827 iASL: Implemented a mechanism to disable specific warnings and remarks. 5828 Adds a new command line option, "-vw <messageid> as well as "#pragma 5829 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 5830 5831 iASL: Fix for too-strict package object validation. The package object 5832 validation for return values from the predefined names is a bit too 5833 strict, it does not allow names references within the package (which will 5834 be resolved at runtime.) These types of references cannot be validated at 5835 compile time. This change ignores named references within package objects 5836 for names that return or define static packages. 5837 5838 Debugger: Fixed the 80-character command line limitation for the History 5839 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 5840 5841 iASL: Added control method and package support for the -so option 5842 (generates AML offset table for BIOS support.) 5843 5844 iASL: issue a remark if a non-serialized method creates named objects. If 5845 a thread blocks within the method for any reason, and another thread 5846 enters the method, the method will fail because an attempt will be made 5847 to 5848 create the same (named) object twice. In this case, issue a remark that 5849 the method should be marked serialized. NOTE: may become a warning later. 5850 ACPICA BZ 909. 5851 5852 ---------------------------------------- 5853 18 April 2013. Summary of changes for version 20130418: 5854 5855 1) ACPICA kernel-resident subsystem: 5856 5857 Fixed a possible buffer overrun during some rare but specific field unit 5858 read operations. This overrun can only happen if the DSDT version is 1 -- 5859 meaning that all AML integers are 32 bits -- and the field length is 5860 between 33 and 55 bits long. During the read, an internal buffer object 5861 is 5862 created for the field unit because the field is larger than an integer 5863 (32 5864 bits). However, in this case, the buffer will be incorrectly written 5865 beyond the end because the buffer length is less than the internal 5866 minimum 5867 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 5868 long, but a full 8 bytes will be written. 5869 5870 Updated the Embedded Controller "orphan" _REG method support. This refers 5871 to _REG methods under the EC device that have no corresponding operation 5872 region. This is allowed by the ACPI specification. This update removes a 5873 dependency on the existence an ECDT table. It will execute an orphan _REG 5874 method as long as the operation region handler for the EC is installed at 5875 the EC device node and not the namespace root. Rui Zhang (original 5876 update), Bob Moore (update/integrate). 5877 5878 Implemented run-time argument typechecking for all predefined ACPI names 5879 (_STA, _BIF, etc.) This change performs object typechecking on all 5880 incoming arguments for all predefined names executed via 5881 AcpiEvaluateObject. This ensures that ACPI-related device drivers are 5882 passing correct object types as well as the correct number of arguments 5883 (therefore identifying any issues immediately). Also, the ASL/namespace 5884 definition of the predefined name is checked against the ACPI 5885 specification for the proper argument count. Adds one new file, 5886 nsarguments.c 5887 5888 Changed an exception code for the ASL UnLoad() operator. Changed the 5889 exception code for the case where the input DdbHandle is invalid, from 5890 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 5891 5892 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 5893 global makefile. The use of this flag causes compiler errors on earlier 5894 versions of GCC, so it has been removed for compatibility. 5895 5896 Miscellaneous cleanup: 5897 1) Removed some unused/obsolete macros 5898 2) Fixed a possible memory leak in the _OSI support 5899 3) Removed an unused variable in the predefined name support 5900 4) Windows OSL: remove obsolete reference to a memory list field 5901 5902 Example Code and Data Size: These are the sizes for the OS-independent 5903 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5904 debug version of the code includes the debug output trace mechanism and 5905 has a much larger code and data size. 5906 5907 Current Release: 5908 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5909 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5910 Previous Release: 5911 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 5912 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 5913 5914 5915 2) iASL Compiler/Disassembler and Tools: 5916 5917 AcpiExec: Added installation of a handler for the SystemCMOS address 5918 space. This prevents control method abort if a method accesses this 5919 space. 5920 5921 AcpiExec: Added support for multiple EC devices, and now install EC 5922 operation region handler(s) at the actual EC device instead of the 5923 namespace root. This reflects the typical behavior of host operating 5924 systems. 5925 5926 AcpiExec: Updated to ensure that all operation region handlers are 5927 installed before the _REG methods are executed. This prevents a _REG 5928 method from aborting if it accesses an address space has no handler. 5929 AcpiExec installs a handler for every possible address space. 5930 5931 Debugger: Enhanced the "handlers" command to display non-root handlers. 5932 This change enhances the handlers command to display handlers associated 5933 with individual devices throughout the namespace, in addition to the 5934 currently supported display of handlers associated with the root 5935 namespace 5936 node. 5937 5938 ASL Test Suite: Several test suite errors have been identified and 5939 resolved, reducing the total error count during execution. Chao Guan. 5940 5941 ---------------------------------------- 5942 28 March 2013. Summary of changes for version 20130328: 5943 5944 1) ACPICA kernel-resident subsystem: 5945 5946 Fixed several possible race conditions with the internal object reference 5947 counting mechanism. Some of the external ACPICA interfaces update object 5948 reference counts without holding the interpreter or namespace lock. This 5949 change adds a spinlock to protect reference count updates on the internal 5950 ACPICA objects. Reported by and with assistance from Andriy Gapon 5951 (avg (a] FreeBSD.org). 5952 5953 FADT support: Removed an extraneous warning for very large GPE register 5954 sets. This change removes a size mismatch warning if the legacy length 5955 field for a GPE register set is larger than the 64-bit GAS structure can 5956 accommodate. GPE register sets can be larger than the 255-bit width 5957 limitation of the GAS structure. Linn Crosetto (linn (a] hp.com). 5958 5959 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 5960 return from this interface. Handles a possible timeout case if 5961 ACPI_WAIT_FOREVER is modified by the host to be a value less than 5962 "forever". Jung-uk Kim. 5963 5964 Predefined name support: Add allowed/required argument type information 5965 to 5966 the master predefined info table. This change adds the infrastructure to 5967 enable typechecking on incoming arguments for all predefined 5968 methods/objects. It does not actually contain the code that will fully 5969 utilize this information, this is still under development. Also condenses 5970 some duplicate code for the predefined names into a new module, 5971 utilities/utpredef.c 5972 5973 Example Code and Data Size: These are the sizes for the OS-independent 5974 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5975 debug version of the code includes the debug output trace mechanism and 5976 has a much larger code and data size. 5977 5978 Previous Release: 5979 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 5980 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 5981 Current Release: 5982 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 5983 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 5984 5985 5986 2) iASL Compiler/Disassembler and Tools: 5987 5988 iASL: Implemented a new option to simplify the development of ACPI- 5989 related 5990 BIOS code. Adds support for a new "offset table" output file. The -so 5991 option will create a C table containing the AML table offsets of various 5992 named objects in the namespace so that BIOS code can modify them easily 5993 at 5994 boot time. This can simplify BIOS runtime code by eliminating expensive 5995 searches for "magic values", enhancing boot times and adding greater 5996 reliability. With assistance from Lee Hamel. 5997 5998 iASL: Allow additional predefined names to return zero-length packages. 5999 Now, all predefined names that are defined by the ACPI specification to 6000 return a "variable-length package of packages" are allowed to return a 6001 zero length top-level package. This allows the BIOS to tell the host that 6002 the requested feature is not supported, and supports existing BIOS/ASL 6003 code and practices. 6004 6005 iASL: Changed the "result not used" warning to an error. This is the case 6006 where an ASL operator is effectively a NOOP because the result of the 6007 operation is not stored anywhere. For example: 6008 Add (4, Local0) 6009 There is no target (missing 3rd argument), nor is the function return 6010 value used. This is potentially a very serious problem -- since the code 6011 was probably intended to do something, but for whatever reason, the value 6012 was not stored. Therefore, this issue has been upgraded from a warning to 6013 an error. 6014 6015 AcpiHelp: Added allowable/required argument types to the predefined names 6016 info display. This feature utilizes the recent update to the predefined 6017 names table (above). 6018 6019 ---------------------------------------- 6020 14 February 2013. Summary of changes for version 20130214: 6021 6022 1) ACPICA Kernel-resident Subsystem: 6023 6024 Fixed a possible regression on some hosts: Reinstated the safe return 6025 macros (return_ACPI_STATUS, etc.) that ensure that the argument is 6026 evaluated only once. Although these macros are not needed for the ACPICA 6027 code itself, they are often used by ACPI-related host device drivers 6028 where 6029 the safe feature may be necessary. 6030 6031 Fixed several issues related to the ACPI 5.0 reduced hardware support 6032 (SOC): Now ensure that if the platform declares itself as hardware- 6033 reduced 6034 via the FADT, the following functions become NOOPs (and always return 6035 AE_OK) because ACPI is always enabled by definition on these machines: 6036 AcpiEnable 6037 AcpiDisable 6038 AcpiHwGetMode 6039 AcpiHwSetMode 6040 6041 Dynamic Object Repair: Implemented additional runtime repairs for 6042 predefined name return values. Both of these repairs can simplify code in 6043 the related device drivers that invoke these methods: 6044 1) For the _STR and _MLS names, automatically repair/convert an ASCII 6045 string to a Unicode buffer. 6046 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 6047 a 6048 lone end tag descriptor in the following cases: A Return(0) was executed, 6049 a null buffer was returned, or no object at all was returned (non-slack 6050 mode only). Adds a new file, nsconvert.c 6051 ACPICA BZ 998. Bob Moore, Lv Zheng. 6052 6053 Resource Manager: Added additional code to prevent possible infinite 6054 loops 6055 while traversing corrupted or ill-formed resource template buffers. Check 6056 for zero-length resource descriptors in all code that loops through 6057 resource templates (the length field is used to index through the 6058 template). This change also hardens the external AcpiWalkResources and 6059 AcpiWalkResourceBuffer interfaces. 6060 6061 Local Cache Manager: Enhanced the main data structure to eliminate an 6062 unnecessary mechanism to access the next object in the list. Actually 6063 provides a small performance enhancement for hosts that use the local 6064 ACPICA cache manager. Jung-uk Kim. 6065 6066 Example Code and Data Size: These are the sizes for the OS-independent 6067 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6068 debug version of the code includes the debug output trace mechanism and 6069 has a much larger code and data size. 6070 6071 Previous Release: 6072 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6073 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6074 Current Release: 6075 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 6076 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 6077 6078 6079 2) iASL Compiler/Disassembler and Tools: 6080 6081 iASL/Disassembler: Fixed several issues with the definition of the ACPI 6082 5.0 RASF table (RAS Feature Table). This change incorporates late changes 6083 that were made to the ACPI 5.0 specification. 6084 6085 iASL/Disassembler: Added full support for the following new ACPI tables: 6086 1) The MTMR table (MID Timer Table) 6087 2) The VRTC table (Virtual Real Time Clock Table). 6088 Includes header file, disassembler, table compiler, and template support 6089 for both tables. 6090 6091 iASL: Implemented compile-time validation of package objects returned by 6092 predefined names. This new feature validates static package objects 6093 returned by the various predefined names defined to return packages. Both 6094 object types and package lengths are validated, for both parent packages 6095 and sub-packages, if any. The code is similar in structure and behavior 6096 to 6097 the runtime repair mechanism within the AML interpreter and uses the 6098 existing predefined name information table. Adds a new file, aslprepkg.c. 6099 ACPICA BZ 938. 6100 6101 iASL: Implemented auto-detection of binary ACPI tables for disassembly. 6102 This feature detects a binary file with a valid ACPI table header and 6103 invokes the disassembler automatically. Eliminates the need to 6104 specifically invoke the disassembler with the -d option. ACPICA BZ 862. 6105 6106 iASL/Disassembler: Added several warnings for the case where there are 6107 unresolved control methods during the disassembly. This can potentially 6108 cause errors when the output file is compiled, because the disassembler 6109 assumes zero method arguments in these cases (it cannot determine the 6110 actual number of arguments without resolution/definition of the method). 6111 6112 Debugger: Added support to display all resources with a single command. 6113 Invocation of the resources command with no arguments will now display 6114 all 6115 resources within the current namespace. 6116 6117 AcpiHelp: Added descriptive text for each ACPICA exception code displayed 6118 via the -e option. 6119 6120 ---------------------------------------- 6121 17 January 2013. Summary of changes for version 20130117: 6122 6123 1) ACPICA Kernel-resident Subsystem: 6124 6125 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 6126 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 6127 objects to return a package containing one integer, most BIOS code 6128 returns 6129 two integers and the previous code reflects that. However, we also need 6130 to 6131 support BIOS code that actually implements to the ACPI spec, and this 6132 change reflects this. 6133 6134 Fixed two issues with the ACPI_DEBUG_PRINT macros: 6135 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 6136 C compilers that require this support. 6137 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 6138 ACPI_DEBUG is already used by many of the various hosts. 6139 6140 Updated all ACPICA copyrights and signons to 2013. Added the 2013 6141 copyright to all module headers and signons, including the standard Linux 6142 header. This affects virtually every file in the ACPICA core subsystem, 6143 iASL compiler, all ACPICA utilities, and the test suites. 6144 6145 Example Code and Data Size: These are the sizes for the OS-independent 6146 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6147 debug version of the code includes the debug output trace mechanism and 6148 has a much larger code and data size. 6149 6150 Previous Release: 6151 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6152 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6153 Current Release: 6154 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 6155 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 6156 6157 6158 2) iASL Compiler/Disassembler and Tools: 6159 6160 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 6161 prevent a possible fault on some hosts. Some C libraries modify the arg 6162 pointer parameter to vfprintf making it difficult to call it twice in the 6163 AcpiOsVprintf function. Use a local buffer to workaround this issue. This 6164 does not affect the Windows OSL since the Win C library does not modify 6165 the arg pointer. Chao Guan, Bob Moore. 6166 6167 iASL: Fixed a possible infinite loop when the maximum error count is 6168 reached. If an output file other than the .AML file is specified (such as 6169 a listing file), and the maximum number of errors is reached, do not 6170 attempt to flush data to the output file(s) as the compiler is aborting. 6171 This can cause an infinite loop as the max error count code essentially 6172 keeps calling itself. 6173 6174 iASL/Disassembler: Added an option (-in) to ignore NOOP 6175 opcodes/operators. 6176 Implemented for both the compiler and the disassembler. Often, the NOOP 6177 opcode is used as padding for packages that are changed dynamically by 6178 the 6179 BIOS. When disassembled and recompiled, these NOOPs will cause syntax 6180 errors. This option causes the disassembler to ignore all NOOP opcodes 6181 (0xA3), and it also causes the compiler to ignore all ASL source code 6182 NOOP 6183 statements as well. 6184 6185 Debugger: Enhanced the Sleep command to execute all sleep states. This 6186 change allows Sleep to be invoked with no arguments and causes the 6187 debugger to execute all of the sleep states, 0-5, automatically. 6188 6189 ---------------------------------------- 6190 20 December 2012. Summary of changes for version 20121220: 6191 6192 1) ACPICA Kernel-resident Subsystem: 6193 6194 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 6195 alternate entry point for AcpiWalkResources and improves the usability of 6196 the resource manager by accepting as input a buffer containing the output 6197 of either a _CRS, _PRS, or _AEI method. The key functionality is that the 6198 input buffer is not deleted by this interface so that it can be used by 6199 the host later. See the ACPICA reference for details. 6200 6201 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 6202 (DSDT version < 2). The constant will be truncated and this warning 6203 reflects that behavior. 6204 6205 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 6206 ExtendedInterrupt, and GpioInt descriptors. This change adds support to 6207 both get and set the new wake bit in these descriptors, separately from 6208 the existing share bit. Reported by Aaron Lu. 6209 6210 Interpreter: Fix Store() when an implicit conversion is not possible. For 6211 example, in the cases such as a store of a string to an existing package 6212 object, implement the store as a CopyObject(). This is a small departure 6213 from the ACPI specification which states that the control method should 6214 be 6215 aborted in this case. However, the ASLTS suite depends on this behavior. 6216 6217 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 6218 macros: check if debug output is currently enabled as soon as possible to 6219 minimize performance impact if debug is in fact not enabled. 6220 6221 Source code restructuring: Cleanup to improve modularity. The following 6222 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 6223 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 6224 Associated makefiles and project files have been updated. 6225 6226 Changed an exception code for LoadTable operator. For the case where one 6227 of the input strings is too long, change the returned exception code from 6228 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 6229 6230 Fixed a possible memory leak in dispatcher error path. On error, delete 6231 the mutex object created during method mutex creation. Reported by 6232 tim.gardner (a] canonical.com. 6233 6234 Example Code and Data Size: These are the sizes for the OS-independent 6235 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6236 debug version of the code includes the debug output trace mechanism and 6237 has a much larger code and data size. 6238 6239 Previous Release: 6240 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6241 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6242 Current Release: 6243 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 6244 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 6245 6246 6247 2) iASL Compiler/Disassembler and Tools: 6248 6249 iASL: Disallow a method call as argument to the ObjectType ASL operator. 6250 This change tracks an errata to the ACPI 5.0 document. The AML grammar 6251 will not allow the interpreter to differentiate between a method and a 6252 method invocation when these are used as an argument to the ObjectType 6253 operator. The ACPI specification change is to disallow a method 6254 invocation 6255 (UserTerm) for the ObjectType operator. 6256 6257 Finish support for the TPM2 and CSRT tables in the headers, table 6258 compiler, and disassembler. 6259 6260 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 6261 always expires immediately if the semaphore is not available. The 6262 original 6263 code was using a relative-time timeout, but sem_timedwait requires the 6264 use 6265 of an absolute time. 6266 6267 iASL: Added a remark if the Timer() operator is used within a 32-bit 6268 table. This operator returns a 64-bit time value that will be truncated 6269 within a 32-bit table. 6270 6271 iASL Source code restructuring: Cleanup to improve modularity. The 6272 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 6273 aslmethod.c, and aslfileio.c. Associated makefiles and project files have 6274 been updated. 6275 6276 6277 ---------------------------------------- 6278 14 November 2012. Summary of changes for version 20121114: 6279 6280 1) ACPICA Kernel-resident Subsystem: 6281 6282 Implemented a performance enhancement for ACPI/AML Package objects. This 6283 change greatly increases the performance of Package objects within the 6284 interpreter. It changes the processing of reference counts for packages 6285 by 6286 optimizing for the most common case where the package sub-objects are 6287 either Integers, Strings, or Buffers. Increases the overall performance 6288 of 6289 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 6290 2X.) 6291 Chao Guan. ACPICA BZ 943. 6292 6293 Implemented and deployed common macros to extract flag bits from resource 6294 descriptors. Improves readability and maintainability of the code. Fixes 6295 a 6296 problem with the UART serial bus descriptor for the number of data bits 6297 flags (was incorrectly 2 bits, should be 3). 6298 6299 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 6300 of the macros and changed the SETx macros to the style of (destination, 6301 source). Also added ACPI_CASTx companion macros. Lv Zheng. 6302 6303 Example Code and Data Size: These are the sizes for the OS-independent 6304 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6305 debug version of the code includes the debug output trace mechanism and 6306 has a much larger code and data size. 6307 6308 Previous Release: 6309 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6310 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6311 Current Release: 6312 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 6313 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6314 6315 6316 2) iASL Compiler/Disassembler and Tools: 6317 6318 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 6319 adds the ShareAndWake and ExclusiveAndWake flags which were added to the 6320 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 6321 6322 Disassembler: Fixed a problem with external declaration generation. Fixes 6323 a problem where an incorrect pathname could be generated for an external 6324 declaration if the original reference to the object includes leading 6325 carats (^). ACPICA BZ 984. 6326 6327 Debugger: Completed a major update for the Disassemble<method> command. 6328 This command was out-of-date and did not properly disassemble control 6329 methods that had any reasonable complexity. This fix brings the command 6330 up 6331 to the same level as the rest of the disassembler. Adds one new file, 6332 dmdeferred.c, which is existing code that is now common with the main 6333 disassembler and the debugger disassemble command. ACPICA MZ 978. 6334 6335 iASL: Moved the parser entry prototype to avoid a duplicate declaration. 6336 Newer versions of Bison emit this prototype, so moved the prototype out 6337 of 6338 the iASL header to where it is actually used in order to avoid a 6339 duplicate 6340 declaration. 6341 6342 iASL/Tools: Standardized use of the stream I/O functions: 6343 1) Ensure check for I/O error after every fopen/fread/fwrite 6344 2) Ensure proper order of size/count arguments for fread/fwrite 6345 3) Use test of (Actual != Requested) after all fwrite, and most fread 6346 4) Standardize I/O error messages 6347 Improves reliability and maintainability of the code. Bob Moore, Lv 6348 Zheng. 6349 ACPICA BZ 981. 6350 6351 Disassembler: Prevent duplicate External() statements. During generation 6352 of external statements, detect similar pathnames that are actually 6353 duplicates such as these: 6354 External (\ABCD) 6355 External (ABCD) 6356 Remove all leading '\' characters from pathnames during the external 6357 statement generation so that duplicates will be detected and tossed. 6358 ACPICA BZ 985. 6359 6360 Tools: Replace low-level I/O with stream I/O functions. Replace 6361 open/read/write/close with the stream I/O equivalents 6362 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 6363 Moore. 6364 6365 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 6366 name header so that AcpiXtract recognizes the output file/table. 6367 6368 iASL: Remove obsolete -2 option flag. Originally intended to force the 6369 compiler/disassembler into an ACPI 2.0 mode, this was never implemented 6370 and the entire concept is now obsolete. 6371 6372 ---------------------------------------- 6373 18 October 2012. Summary of changes for version 20121018: 6374 6375 6376 1) ACPICA Kernel-resident Subsystem: 6377 6378 Updated support for the ACPI 5.0 MPST table. Fixes some problems 6379 introduced by late changes to the table as it was added to the ACPI 5.0 6380 specification. Includes header, disassembler, and data table compiler 6381 support as well as a new version of the MPST template. 6382 6383 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 6384 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 6385 methods: _HID, _CID, and _UID. 6386 6387 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 6388 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 6389 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 6390 names for their various drivers. Affects the AcpiGetObjectInfo external 6391 interface, and other internal interfaces as well. 6392 6393 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 6394 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 6395 on machines that support non-aligned transfers. Optimizes for this case 6396 rather than using a strncpy. With assistance from Zheng Lv. 6397 6398 Resource Manager: Small fix for buffer size calculation. Fixed a one byte 6399 error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 6400 6401 Added a new debug print message for AML mutex objects that are force- 6402 released. At control method termination, any currently acquired mutex 6403 objects are force-released. Adds a new debug-only message for each one 6404 that is released. 6405 6406 Audited/updated all ACPICA return macros and the function debug depth 6407 counter: 1) Ensure that all functions that use the various TRACE macros 6408 also use the appropriate ACPICA return macros. 2) Ensure that all normal 6409 return statements surround the return expression (value) with parens to 6410 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 6411 Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 6412 6413 Global source code changes/maintenance: All extra lines at the start and 6414 end of each source file have been removed for consistency. Also, within 6415 comments, all new sentences start with a single space instead of a double 6416 space, again for consistency across the code base. 6417 6418 Example Code and Data Size: These are the sizes for the OS-independent 6419 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6420 debug version of the code includes the debug output trace mechanism and 6421 has a much larger code and data size. 6422 6423 Previous Release: 6424 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6425 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6426 Current Release: 6427 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 6428 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 6429 6430 6431 2) iASL Compiler/Disassembler and Tools: 6432 6433 AcpiExec: Improved the algorithm used for memory leak/corruption 6434 detection. Added some intelligence to the code that maintains the global 6435 list of allocated memory. The list is now ordered by allocated memory 6436 address, significantly improving performance. When running AcpiExec on 6437 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 6438 on the platform and/or the environment. Note, this performance 6439 enhancement affects the AcpiExec utility only, not the kernel-resident 6440 ACPICA code. 6441 6442 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 6443 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 6444 incorrect table offset reported for invalid opcodes. Report the original 6445 32-bit value for bad ACPI_NAMEs (as well as the repaired name.) 6446 6447 Disassembler: Enhanced the -vt option to emit the binary table data in 6448 hex format to assist with debugging. 6449 6450 Fixed a potential filename buffer overflow in osunixdir.c. Increased the 6451 size of file structure. Colin Ian King. 6452 6453 ---------------------------------------- 6454 13 September 2012. Summary of changes for version 20120913: 6455 6456 6457 1) ACPICA Kernel-resident Subsystem: 6458 6459 ACPI 5.0: Added two new notify types for the Hardware Error Notification 6460 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 6461 and 6462 MCE(6). 6463 6464 Table Manager: Merged/removed duplicate code in the root table resize 6465 functions. One function is external, the other is internal. Lv Zheng, 6466 ACPICA 6467 BZ 846. 6468 6469 Makefiles: Completely removed the obsolete "Linux" makefiles under 6470 acpica/generate/linux. These makefiles are obsolete and have been 6471 replaced 6472 by 6473 the generic unix makefiles under acpica/generate/unix. 6474 6475 Makefiles: Ensure that binary files always copied properly. Minor rule 6476 change 6477 to ensure that the final binary output files are always copied up to the 6478 appropriate binary directory (bin32 or bin64.) 6479 6480 Example Code and Data Size: These are the sizes for the OS-independent 6481 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6482 debug 6483 version of the code includes the debug output trace mechanism and has a 6484 much 6485 larger code and data size. 6486 6487 Previous Release: 6488 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6489 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6490 Current Release: 6491 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 6492 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 6493 6494 6495 2) iASL Compiler/Disassembler and Tools: 6496 6497 Disassembler: Fixed a possible fault during the disassembly of resource 6498 descriptors when a second parse is required because of the invocation of 6499 external control methods within the table. With assistance from 6500 adq (a] lidskialf.net. ACPICA BZ 976. 6501 6502 iASL: Fixed a namepath optimization problem. An error can occur if the 6503 parse 6504 node that contains the namepath to be optimized does not have a parent 6505 node 6506 that is a named object. This change fixes the problem. 6507 6508 iASL: Fixed a regression where the AML file is not deleted on errors. The 6509 AML 6510 output file should be deleted if there are any errors during the 6511 compiler. 6512 The 6513 only exception is if the -f (force output) option is used. ACPICA BZ 974. 6514 6515 iASL: Added a feature to automatically increase internal line buffer 6516 sizes. 6517 Via realloc(), automatically increase the internal line buffer sizes as 6518 necessary to support very long source code lines. The current version of 6519 the 6520 preprocessor requires a buffer long enough to contain full source code 6521 lines. 6522 This change increases the line buffer(s) if the input lines go beyond the 6523 current buffer size. This eliminates errors that occurred when a source 6524 code 6525 line was longer than the buffer. 6526 6527 iASL: Fixed a problem with constant folding in method declarations. The 6528 SyncLevel term is a ByteConstExpr, and incorrect code would be generated 6529 if a 6530 Type3 opcode was used. 6531 6532 Debugger: Improved command help support. For incorrect argument count, 6533 display 6534 full help for the command. For help command itself, allow an argument to 6535 specify a command. 6536 6537 Test Suites: Several bug fixes for the ASLTS suite reduces the number of 6538 errors during execution of the suite. Guan Chao. 6539 6540 ---------------------------------------- 6541 16 August 2012. Summary of changes for version 20120816: 6542 6543 6544 1) ACPICA Kernel-resident Subsystem: 6545 6546 Removed all use of the deprecated _GTS and _BFS predefined methods. The 6547 _GTS 6548 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially 6549 deprecated and will probably be removed from the ACPI specification. 6550 Windows 6551 does not invoke them, and reportedly never will. The final nail in the 6552 coffin 6553 is that the ACPI specification states that these methods must be run with 6554 interrupts off, which is not going to happen in a kernel interpreter. 6555 Note: 6556 Linux has removed all use of the methods also. It was discovered that 6557 invoking these functions caused failures on some machines, probably 6558 because 6559 they were never tested since Windows does not call them. Affects two 6560 external 6561 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 6562 ACPICA BZ 969. 6563 6564 Implemented support for complex bit-packed buffers returned from the _PLD 6565 (Physical Location of Device) predefined method. Adds a new external 6566 interface, AcpiDecodePldBuffer that parses the buffer into a more usable 6567 C 6568 structure. Note: C Bitfields cannot be used for this type of predefined 6569 structure since the memory layout of individual bitfields is not defined 6570 by 6571 the C language. In addition, there are endian concerns where a compiler 6572 will 6573 change the bitfield ordering based on the machine type. The new ACPICA 6574 interface eliminates these issues, and should be called after _PLD is 6575 executed. ACPICA BZ 954. 6576 6577 Implemented a change to allow a scope change to root (via "Scope (\)") 6578 during 6579 execution of module-level ASL code (code that is executed at table load 6580 time.) Lin Ming. 6581 6582 Added the Windows8/Server2012 string for the _OSI method. This change 6583 adds 6584 a 6585 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 6586 2012. 6587 6588 Added header support for the new ACPI tables DBG2 (Debug Port Table Type 6589 2) 6590 and CSRT (Core System Resource Table). 6591 6592 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 6593 names. This simplifies access to the buffers returned by these predefined 6594 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 6595 6596 GPE support: Removed an extraneous parameter from the various low-level 6597 internal GPE functions. Tang Feng. 6598 6599 Removed the linux makefiles from the unix packages. The generate/linux 6600 makefiles are obsolete and have been removed from the unix tarball 6601 release 6602 packages. The replacement makefiles are under generate/unix, and there is 6603 a 6604 top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 6605 6606 Updates for Unix makefiles: 6607 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 6608 2) Update linker flags (move to end of command line) for AcpiExec 6609 utility. 6610 Guan Chao. 6611 6612 Split ACPICA initialization functions to new file, utxfinit.c. Split from 6613 utxface.c to improve modularity and reduce file size. 6614 6615 Example Code and Data Size: These are the sizes for the OS-independent 6616 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6617 debug version of the code includes the debug output trace mechanism and 6618 has a 6619 much larger code and data size. 6620 6621 Previous Release: 6622 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6623 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6624 Current Release: 6625 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 6626 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 6627 6628 6629 2) iASL Compiler/Disassembler and Tools: 6630 6631 iASL: Fixed a problem with constant folding for fixed-length constant 6632 expressions. The constant-folding code was not being invoked for constant 6633 expressions that allow the use of type 3/4/5 opcodes to generate 6634 constants 6635 for expressions such as ByteConstExpr, WordConstExpr, etc. This could 6636 result 6637 in the generation of invalid AML bytecode. ACPICA BZ 970. 6638 6639 iASL: Fixed a generation issue on newer versions of Bison. Newer versions 6640 apparently automatically emit some of the necessary externals. This 6641 change 6642 handles these versions in order to eliminate generation warnings. 6643 6644 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 6645 6646 Disassembler: Add support to decode _PLD buffers. The decoded buffer 6647 appears 6648 within comments in the output file. 6649 6650 Debugger: Fixed a regression with the "Threads" command where 6651 AE_BAD_PARAMETER was always returned. 6652 6653 ---------------------------------------- 6654 11 July 2012. Summary of changes for version 20120711: 6655 6656 1) ACPICA Kernel-resident Subsystem: 6657 6658 Fixed a possible fault in the return package object repair code. Fixes a 6659 problem that can occur when a lone package object is wrapped with an 6660 outer 6661 package object in order to force conformance to the ACPI specification. 6662 Can 6663 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 6664 _DLM, 6665 _CSD, _PSD, _TSD. 6666 6667 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 6668 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 6669 ARB_DIS bit must be implemented in the host-dependent C3 processor power 6670 state 6671 support. Note, ARB_DIS is obsolete and only applies to older chipsets, 6672 both 6673 Intel and other vendors. (for Intel: ICH4-M and earlier) 6674 6675 This change removes the code to disable/enable bus master arbitration 6676 during 6677 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 6678 causes 6679 resume problems on some machines. The change has been in use for over 6680 seven 6681 years within Linux. 6682 6683 Implemented two new external interfaces to support host-directed dynamic 6684 ACPI 6685 table load and unload. They are intended to simplify the host 6686 implementation 6687 of hot-plug support: 6688 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 6689 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 6690 table. 6691 See the ACPICA reference for additional details. Adds one new file, 6692 components/tables/tbxfload.c 6693 6694 Implemented and deployed two new interfaces for errors and warnings that 6695 are 6696 known to be caused by BIOS/firmware issues: 6697 AcpiBiosError: Prints "ACPI Firmware Error" message. 6698 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 6699 Deployed these new interfaces in the ACPICA Table Manager code for ACPI 6700 table 6701 and FADT errors. Additional deployment to be completed as appropriate in 6702 the 6703 future. The associated conditional macros are ACPI_BIOS_ERROR and 6704 ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 6705 ACPICA 6706 BZ 6707 843. 6708 6709 Implicit notify support: ensure that no memory allocation occurs within a 6710 critical region. This fix moves a memory allocation outside of the time 6711 that a 6712 spinlock is held. Fixes issues on systems that do not allow this 6713 behavior. 6714 Jung-uk Kim. 6715 6716 Split exception code utilities and tables into a new file, 6717 utilities/utexcep.c 6718 6719 Example Code and Data Size: These are the sizes for the OS-independent 6720 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6721 debug 6722 version of the code includes the debug output trace mechanism and has a 6723 much 6724 larger code and data size. 6725 6726 Previous Release: 6727 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6728 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6729 Current Release: 6730 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 6731 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 6732 6733 6734 2) iASL Compiler/Disassembler and Tools: 6735 6736 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 6737 of 6738 0. Jung-uk Kim. 6739 6740 Debugger: Enhanced the "tables" command to emit additional information 6741 about 6742 the current set of ACPI tables, including the owner ID and flags decode. 6743 6744 Debugger: Reimplemented the "unload" command to use the new 6745 AcpiUnloadParentTable external interface. This command was disable 6746 previously 6747 due to need for an unload interface. 6748 6749 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 6750 option 6751 will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 6752 6753 ---------------------------------------- 6754 20 June 2012. Summary of changes for version 20120620: 6755 6756 6757 1) ACPICA Kernel-resident Subsystem: 6758 6759 Implemented support to expand the "implicit notify" feature to allow 6760 multiple 6761 devices to be notified by a single GPE. This feature automatically 6762 generates a 6763 runtime device notification in the absence of a BIOS-provided GPE control 6764 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 6765 notify is 6766 provided by ACPICA for Windows compatibility, and is a workaround for 6767 BIOS 6768 AML 6769 code errors. See the description of the AcpiSetupGpeForWake interface in 6770 the 6771 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 6772 6773 Changed some comments and internal function names to simplify and ensure 6774 correctness of the Linux code translation. No functional changes. 6775 6776 Example Code and Data Size: These are the sizes for the OS-independent 6777 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6778 debug 6779 version of the code includes the debug output trace mechanism and has a 6780 much 6781 larger code and data size. 6782 6783 Previous Release: 6784 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6785 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6786 Current Release: 6787 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 6788 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 6789 6790 6791 2) iASL Compiler/Disassembler and Tools: 6792 6793 Disassembler: Added support to emit short, commented descriptions for the 6794 ACPI 6795 predefined names in order to improve the readability of the disassembled 6796 output. ACPICA BZ 959. Changes include: 6797 1) Emit descriptions for all standard predefined names (_INI, _STA, 6798 _PRW, 6799 etc.) 6800 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 6801 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 6802 etc.) 6803 6804 AcpiSrc: Fixed several long-standing Linux code translation issues. 6805 Argument 6806 descriptions in function headers are now translated properly to lower 6807 case 6808 and 6809 underscores. ACPICA BZ 961. Also fixes translation problems such as 6810 these: 6811 (old -> new) 6812 i_aSL -> iASL 6813 00-7_f -> 00-7F 6814 16_k -> 16K 6815 local_fADT -> local_FADT 6816 execute_oSI -> execute_OSI 6817 6818 iASL: Fixed a problem where null bytes were inadvertently emitted into 6819 some 6820 listing files. 6821 6822 iASL: Added the existing debug options to the standard help screen. There 6823 are 6824 no longer two different help screens. ACPICA BZ 957. 6825 6826 AcpiHelp: Fixed some typos in the various predefined name descriptions. 6827 Also 6828 expand some of the descriptions where appropriate. 6829 6830 iASL: Fixed the -ot option (display compile times/statistics). Was not 6831 working 6832 properly for standard output; only worked for the debug file case. 6833 6834 ---------------------------------------- 6835 18 May 2012. Summary of changes for version 20120518: 6836 6837 6838 1) ACPICA Core Subsystem: 6839 6840 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 6841 defined 6842 to block until asynchronous events such as notifies and GPEs have 6843 completed. 6844 Within ACPICA, it is only called before a notify or GPE handler is 6845 removed/uninstalled. It also may be useful for the host OS within related 6846 drivers such as the Embedded Controller driver. See the ACPICA reference 6847 for 6848 additional information. ACPICA BZ 868. 6849 6850 ACPI Tables: Added a new error message for a possible overflow failure 6851 during 6852 the conversion of FADT 32-bit legacy register addresses to internal 6853 common 6854 64- 6855 bit GAS structure representation. The GAS has a one-byte "bit length" 6856 field, 6857 thus limiting the register length to 255 bits. ACPICA BZ 953. 6858 6859 Example Code and Data Size: These are the sizes for the OS-independent 6860 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6861 debug 6862 version of the code includes the debug output trace mechanism and has a 6863 much 6864 larger code and data size. 6865 6866 Previous Release: 6867 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6868 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6869 Current Release: 6870 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 6871 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 6872 6873 6874 2) iASL Compiler/Disassembler and Tools: 6875 6876 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 6877 macro. 6878 This keyword was added late in the ACPI 5.0 release cycle and was not 6879 implemented until now. 6880 6881 Disassembler: Added support for Operation Region externals. Adds missing 6882 support for operation regions that are defined in another table, and 6883 referenced locally via a Field or BankField ASL operator. Now generates 6884 the 6885 correct External statement. 6886 6887 Disassembler: Several additional fixes for the External() statement 6888 generation 6889 related to some ASL operators. Also, order the External() statements 6890 alphabetically in the disassembler output. Fixes the External() 6891 generation 6892 for 6893 the Create* field, Alias, and Scope operators: 6894 1) Create* buffer field operators - fix type mismatch warning on 6895 disassembly 6896 2) Alias - implement missing External support 6897 3) Scope - fix to make sure all necessary externals are emitted. 6898 6899 iASL: Improved pathname support. For include files, merge the prefix 6900 pathname 6901 with the file pathname and eliminate unnecessary components. Convert 6902 backslashes in all pathnames to forward slashes, for readability. Include 6903 file 6904 pathname changes affect both #include and Include() type operators. 6905 6906 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 6907 end 6908 of a valid line by inserting a newline and then returning the EOF during 6909 the 6910 next call to GetNextLine. Prevents the line from being ignored due to EOF 6911 condition. 6912 6913 iASL: Implemented some changes to enhance the IDE support (-vi option.) 6914 Error 6915 and Warning messages are now correctly recognized for both the source 6916 code 6917 browser and the global error and warning counts. 6918 6919 ---------------------------------------- 6920 20 April 2012. Summary of changes for version 20120420: 6921 6922 6923 1) ACPICA Core Subsystem: 6924 6925 Implemented support for multiple notify handlers. This change adds 6926 support 6927 to 6928 allow multiple system and device notify handlers on Device, Thermal Zone, 6929 and 6930 Processor objects. This can simplify the host OS notification 6931 implementation. 6932 Also re-worked and restructured the entire notify support code to 6933 simplify 6934 handler installation, handler removal, notify event queuing, and notify 6935 dispatch to handler(s). Note: there can still only be two global notify 6936 handlers - one for system notifies and one for device notifies. There are 6937 no 6938 changes to the existing handler install/remove interfaces. Lin Ming, Bob 6939 Moore, Rafael Wysocki. 6940 6941 Fixed a regression in the package repair code where the object reference 6942 count was calculated incorrectly. Regression was introduced in the commit 6943 "Support to add Package wrappers". 6944 6945 Fixed a couple possible memory leaks in the AML parser, in the error 6946 recovery 6947 path. Jesper Juhl, Lin Ming. 6948 6949 Example Code and Data Size: These are the sizes for the OS-independent 6950 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6951 debug version of the code includes the debug output trace mechanism and 6952 has a 6953 much larger code and data size. 6954 6955 Previous Release: 6956 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6957 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6958 Current Release: 6959 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 6960 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 6961 6962 6963 2) iASL Compiler/Disassembler and Tools: 6964 6965 iASL: Fixed a problem with the resource descriptor support where the 6966 length 6967 of the StartDependentFn and StartDependentFnNoPrio descriptors were not 6968 included in cumulative descriptor offset, resulting in incorrect values 6969 for 6970 resource tags within resource descriptors appearing after a 6971 StartDependent* 6972 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 6973 6974 iASL and Preprocessor: Implemented full support for the #line directive 6975 to 6976 correctly track original source file line numbers through the .i 6977 preprocessor 6978 output file - for error and warning messages. 6979 6980 iASL: Expand the allowable byte constants for address space IDs. 6981 Previously, 6982 the allowable range was 0x80-0xFF (user-defined spaces), now the range is 6983 0x0A-0xFF to allow for custom and new IDs without changing the compiler. 6984 6985 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 6986 6987 iASL: Add option to completely disable the preprocessor (-Pn). 6988 6989 iASL: Now emit all error/warning messages to standard error (stderr) by 6990 default (instead of the previous stdout). 6991 6992 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 6993 Update 6994 for resource descriptor offset fix above. Update/cleanup error output 6995 routines. Enable and send iASL errors/warnings to an error logfile 6996 (error.txt). Send all other iASL output to a logfile (compiler.txt). 6997 Fixed 6998 several extraneous "unrecognized operator" messages. 6999 7000 ---------------------------------------- 7001 20 March 2012. Summary of changes for version 20120320: 7002 7003 7004 1) ACPICA Core Subsystem: 7005 7006 Enhanced the sleep/wake interfaces to optionally execute the _GTS method 7007 (Going To Sleep) and the _BFS method (Back From Sleep). Windows 7008 apparently 7009 does not execute these methods, and therefore these methods are often 7010 untested. It has been seen on some systems where the execution of these 7011 methods causes errors and also prevents the machine from entering S5. It 7012 is 7013 therefore suggested that host operating systems do not execute these 7014 methods 7015 by default. In the future, perhaps these methods can be optionally 7016 executed 7017 based on the age of the system and/or what is the newest version of 7018 Windows 7019 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 7020 and 7021 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 7022 Ming. 7023 7024 Fixed a problem where the length of the local/common FADT was set too 7025 early. 7026 The local FADT table length cannot be set to the common length until the 7027 original length has been examined. There is code that checks the table 7028 length 7029 and sets various fields appropriately. This can affect older machines 7030 with 7031 early FADT versions. For example, this can cause inadvertent writes to 7032 the 7033 CST_CNT register. Julian Anastasov. 7034 7035 Fixed a mapping issue related to a physical table override. Use the 7036 deferred 7037 mapping mechanism for tables loaded via the physical override OSL 7038 interface. 7039 This allows for early mapping before the virtual memory manager is 7040 available. 7041 Thomas Renninger, Bob Moore. 7042 7043 Enhanced the automatic return-object repair code: Repair a common problem 7044 with 7045 predefined methods that are defined to return a variable-length Package 7046 of 7047 sub-objects. If there is only one sub-object, some BIOS ASL code 7048 mistakenly 7049 simply returns the single object instead of a Package with one sub- 7050 object. 7051 This new support will repair this error by wrapping a Package object 7052 around 7053 the original object, creating the correct and expected Package with one 7054 sub- 7055 object. Names that can be repaired in this manner include: _ALR, _CSD, 7056 _HPX, 7057 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 7058 939. 7059 7060 Changed the exception code returned for invalid ACPI paths passed as 7061 parameters to external interfaces such as AcpiEvaluateObject. Was 7062 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 7063 7064 Example Code and Data Size: These are the sizes for the OS-independent 7065 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7066 debug 7067 version of the code includes the debug output trace mechanism and has a 7068 much 7069 larger code and data size. 7070 7071 Previous Release: 7072 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7073 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7074 Current Release: 7075 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 7076 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7077 7078 7079 2) iASL Compiler/Disassembler and Tools: 7080 7081 iASL: Added the infrastructure and initial implementation of a integrated 7082 C- 7083 like preprocessor. This will simplify BIOS development process by 7084 eliminating 7085 the need for a separate preprocessing step during builds. On Windows, it 7086 also 7087 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 7088 features including full #define() macro support are still under 7089 development. 7090 These preprocessor directives are supported: 7091 #define 7092 #elif 7093 #else 7094 #endif 7095 #error 7096 #if 7097 #ifdef 7098 #ifndef 7099 #include 7100 #pragma message 7101 #undef 7102 #warning 7103 In addition, these new command line options are supported: 7104 -D <symbol> Define symbol for preprocessor use 7105 -li Create preprocessed output file (*.i) 7106 -P Preprocess only and create preprocessor output file (*.i) 7107 7108 Table Compiler: Fixed a problem where the equals operator within an 7109 expression 7110 did not work properly. 7111 7112 Updated iASL to use the current versions of Bison/Flex. Updated the 7113 Windows 7114 project file to invoke these tools from the standard location. ACPICA BZ 7115 904. 7116 Versions supported: 7117 Flex for Windows: V2.5.4 7118 Bison for Windows: V2.4.1 7119 7120 ---------------------------------------- 7121 15 February 2012. Summary of changes for version 20120215: 7122 7123 7124 1) ACPICA Core Subsystem: 7125 7126 There have been some major changes to the sleep/wake support code, as 7127 described below (a - e). 7128 7129 a) The AcpiLeaveSleepState has been split into two interfaces, similar to 7130 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 7131 AcpiLeaveSleepStatePrep. This allows the host to perform actions between 7132 the 7133 time the _BFS method is called and the _WAK method is called. NOTE: all 7134 hosts 7135 must update their wake/resume code or else sleep/wake will not work 7136 properly. 7137 Rafael Wysocki. 7138 7139 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 7140 _WAK 7141 method. Some machines require that the GPEs are enabled before the _WAK 7142 method 7143 is executed. Thomas Renninger. 7144 7145 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 7146 bit. 7147 Some BIOS code assumes that WAK_STS will be cleared on resume and use it 7148 to 7149 determine whether the system is rebooting or resuming. Matthew Garrett. 7150 7151 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 7152 Sleep) to 7153 match the ACPI specification requirement. Rafael Wysocki. 7154 7155 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 7156 registers within the V5 FADT. This support adds two new files: 7157 hardware/hwesleep.c implements the support for the new registers. Moved 7158 all 7159 sleep/wake external interfaces to hardware/hwxfsleep.c. 7160 7161 7162 Added a new OSL interface for ACPI table overrides, 7163 AcpiOsPhysicalTableOverride. This interface allows the host to override a 7164 table via a physical address, instead of the logical address required by 7165 AcpiOsTableOverride. This simplifies the host implementation. Initial 7166 implementation by Thomas Renninger. The ACPICA implementation creates a 7167 single 7168 shared function for table overrides that attempts both a logical and a 7169 physical override. 7170 7171 Expanded the OSL memory read/write interfaces to 64-bit data 7172 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 7173 transfer support for GAS register structures passed to AcpiRead and 7174 AcpiWrite. 7175 7176 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 7177 custom 7178 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 7179 model. 7180 See the ACPICA reference for details. ACPICA BZ 942. This option removes 7181 about 7182 10% of the code and 5% of the static data, and the following hardware 7183 ACPI 7184 features become unavailable: 7185 PM Event and Control registers 7186 SCI interrupt (and handler) 7187 Fixed Events 7188 General Purpose Events (GPEs) 7189 Global Lock 7190 ACPI PM timer 7191 7192 Updated the unix tarball directory structure to match the ACPICA git 7193 source 7194 tree. This ensures that the generic unix makefiles work properly (in 7195 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 7196 867. 7197 7198 Updated the return value of the _REV predefined method to integer value 5 7199 to 7200 reflect ACPI 5.0 support. 7201 7202 Moved the external ACPI PM timer interface prototypes to the public 7203 acpixf.h 7204 file where they belong. 7205 7206 Example Code and Data Size: These are the sizes for the OS-independent 7207 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7208 debug 7209 version of the code includes the debug output trace mechanism and has a 7210 much 7211 larger code and data size. 7212 7213 Previous Release: 7214 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7215 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7216 Current Release: 7217 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 7218 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 7219 7220 7221 2) iASL Compiler/Disassembler and Tools: 7222 7223 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 7224 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 7225 incorrectly displayed. 7226 7227 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 7228 specification. 7229 7230 ---------------------------------------- 7231 11 January 2012. Summary of changes for version 20120111: 7232 7233 7234 1) ACPICA Core Subsystem: 7235 7236 Implemented a new mechanism to allow host device drivers to check for 7237 address 7238 range conflicts with ACPI Operation Regions. Both SystemMemory and 7239 SystemIO 7240 address spaces are supported. A new external interface, 7241 AcpiCheckAddressRange, 7242 allows drivers to check an address range against the ACPI namespace. See 7243 the 7244 ACPICA reference for additional details. Adds one new file, 7245 utilities/utaddress.c. Lin Ming, Bob Moore. 7246 7247 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 7248 Control 7249 and 7250 Status registers, update the ACPI 5.0 flags, and update internal data 7251 structures to handle an FADT larger than 256 bytes. The size of the ACPI 7252 5.0 7253 FADT is 268 bytes. 7254 7255 Updated all ACPICA copyrights and signons to 2012. Added the 2012 7256 copyright to 7257 all module headers and signons, including the standard Linux header. This 7258 affects virtually every file in the ACPICA core subsystem, iASL compiler, 7259 and 7260 all ACPICA utilities. 7261 7262 Example Code and Data Size: These are the sizes for the OS-independent 7263 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7264 debug 7265 version of the code includes the debug output trace mechanism and has a 7266 much 7267 larger code and data size. 7268 7269 Previous Release: 7270 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7271 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7272 Current Release: 7273 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 7274 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 7275 7276 7277 2) iASL Compiler/Disassembler and Tools: 7278 7279 Disassembler: fixed a problem with the automatic resource tag generation 7280 support. Fixes a problem where the resource tags are inadvertently not 7281 constructed if the table being disassembled contains external references 7282 to 7283 control methods. Moved the actual construction of the tags to after the 7284 final 7285 namespace is constructed (after 2nd parse is invoked due to external 7286 control 7287 method references.) ACPICA BZ 941. 7288 7289 Table Compiler: Make all "generic" operators caseless. These are the 7290 operators 7291 like UINT8, String, etc. Making these caseless improves ease-of-use. 7292 ACPICA BZ 7293 934. 7294 7295 ---------------------------------------- 7296 23 November 2011. Summary of changes for version 20111123: 7297 7298 0) ACPI 5.0 Support: 7299 7300 This release contains full support for the ACPI 5.0 specification, as 7301 summarized below. 7302 7303 Reduced Hardware Support: 7304 ------------------------- 7305 7306 This support allows for ACPI systems without the usual ACPI hardware. 7307 This 7308 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 7309 will 7310 not attempt to initialize or use any of the usual ACPI hardware. Note, 7311 when 7312 this flag is set, all of the following ACPI hardware is assumed to be not 7313 present and is not initialized or accessed: 7314 7315 General Purpose Events (GPEs) 7316 Fixed Events (PM1a/PM1b and PM Control) 7317 Power Management Timer and Console Buttons (power/sleep) 7318 Real-time Clock Alarm 7319 Global Lock 7320 System Control Interrupt (SCI) 7321 The FACS is assumed to be non-existent 7322 7323 ACPI Tables: 7324 ------------ 7325 7326 All new tables and updates to existing tables are fully supported in the 7327 ACPICA headers (for use by device drivers), the disassembler, and the 7328 iASL 7329 Data Table Compiler. ACPI 5.0 defines these new tables: 7330 7331 BGRT /* Boot Graphics Resource Table */ 7332 DRTM /* Dynamic Root of Trust for Measurement table */ 7333 FPDT /* Firmware Performance Data Table */ 7334 GTDT /* Generic Timer Description Table */ 7335 MPST /* Memory Power State Table */ 7336 PCCT /* Platform Communications Channel Table */ 7337 PMTT /* Platform Memory Topology Table */ 7338 RASF /* RAS Feature table */ 7339 7340 Operation Regions/SpaceIDs: 7341 --------------------------- 7342 7343 All new operation regions are fully supported by the iASL compiler, the 7344 disassembler, and the ACPICA runtime code (for dispatch to region 7345 handlers.) 7346 The new operation region Space IDs are: 7347 7348 GeneralPurposeIo 7349 GenericSerialBus 7350 7351 Resource Descriptors: 7352 --------------------- 7353 7354 All new ASL resource descriptors are fully supported by the iASL 7355 compiler, 7356 the 7357 ASL/AML disassembler, and the ACPICA runtime Resource Manager code 7358 (including 7359 all new predefined resource tags). New descriptors are: 7360 7361 FixedDma 7362 GpioIo 7363 GpioInt 7364 I2cSerialBus 7365 SpiSerialBus 7366 UartSerialBus 7367 7368 ASL/AML Operators, New and Modified: 7369 ------------------------------------ 7370 7371 One new operator is added, the Connection operator, which is used to 7372 associate 7373 a GeneralPurposeIo or GenericSerialBus resource descriptor with 7374 individual 7375 field objects within an operation region. Several new protocols are 7376 associated 7377 with the AccessAs operator. All are fully supported by the iASL compiler, 7378 disassembler, and runtime ACPICA AML interpreter: 7379 7380 Connection // Declare Field Connection 7381 attributes 7382 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 7383 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 7384 Protocol 7385 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 7386 RawDataBuffer // Data type for Vendor Data 7387 fields 7388 7389 Predefined ASL/AML Objects: 7390 --------------------------- 7391 7392 All new predefined objects/control-methods are supported by the iASL 7393 compiler 7394 and the ACPICA runtime validation/repair (arguments and return values.) 7395 New 7396 predefined names include the following: 7397 7398 Standard Predefined Names (Objects or Control Methods): 7399 _AEI, _CLS, _CPC, _CWS, _DEP, 7400 _DLM, _EVT, _GCP, _CRT, _GWS, 7401 _HRV, _PRE, _PSE, _SRT, _SUB. 7402 7403 Resource Tags (Names used to access individual fields within resource 7404 descriptors): 7405 _DBT, _DPL, _DRS, _END, _FLC, 7406 _IOR, _LIN, _MOD, _PAR, _PHA, 7407 _PIN, _PPI, _POL, _RXL, _SLV, 7408 _SPE, _STB, _TXL, _VEN. 7409 7410 ACPICA External Interfaces: 7411 --------------------------- 7412 7413 Several new interfaces have been defined for use by ACPI-related device 7414 drivers and other host OS services: 7415 7416 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 7417 to 7418 acquire and release AML mutexes that are defined in the DSDT/SSDT tables 7419 provided by the BIOS. They are intended to be used in conjunction with 7420 the 7421 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 7422 mutual exclusion with the AML code/interpreter. 7423 7424 AcpiGetEventResources: Returns the (formatted) resource descriptors as 7425 defined 7426 by the ACPI 5.0 _AEI object (ACPI Event Information). This object 7427 provides 7428 resource descriptors associated with hardware-reduced platform events, 7429 similar 7430 to the AcpiGetCurrentResources interface. 7431 7432 Operation Region Handlers: For General Purpose IO and Generic Serial Bus 7433 operation regions, information about the Connection() object and any 7434 optional 7435 length information is passed to the region handler within the Context 7436 parameter. 7437 7438 AcpiBufferToResource: This interface converts a raw AML buffer containing 7439 a 7440 resource template or resource descriptor to the ACPI_RESOURCE internal 7441 format 7442 suitable for use by device drivers. Can be used by an operation region 7443 handler 7444 to convert the Connection() buffer object into a ACPI_RESOURCE. 7445 7446 Miscellaneous/Tools/TestSuites: 7447 ------------------------------- 7448 7449 Support for extended _HID names (Four alpha characters instead of three). 7450 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 7451 Support for ACPI 5.0 features in the ASLTS test suite. 7452 Fully updated documentation (ACPICA and iASL reference documents.) 7453 7454 ACPI Table Definition Language: 7455 ------------------------------- 7456 7457 Support for this language was implemented and released as a subsystem of 7458 the 7459 iASL compiler in 2010. (See the iASL compiler User Guide.) 7460 7461 7462 Non-ACPI 5.0 changes for this release: 7463 -------------------------------------- 7464 7465 1) ACPICA Core Subsystem: 7466 7467 Fix a problem with operation region declarations where a failure can 7468 occur 7469 if 7470 the region name and an argument that evaluates to an object (such as the 7471 region address) are in different namespace scopes. Lin Ming, ACPICA BZ 7472 937. 7473 7474 Do not abort an ACPI table load if an invalid space ID is found within. 7475 This 7476 will be caught later if the offending method is executed. ACPICA BZ 925. 7477 7478 Fixed an issue with the FFixedHW space ID where the ID was not always 7479 recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 7480 7481 Fixed a problem with the 32-bit generation of the unix-specific OSL 7482 (osunixxf.c). Lin Ming, ACPICA BZ 936. 7483 7484 Several changes made to enable generation with the GCC 4.6 compiler. 7485 ACPICA BZ 7486 935. 7487 7488 New error messages: Unsupported I/O requests (not 8/16/32 bit), and 7489 Index/Bank 7490 field registers out-of-range. 7491 7492 2) iASL Compiler/Disassembler and Tools: 7493 7494 iASL: Implemented the __PATH__ operator, which returns the full pathname 7495 of 7496 the current source file. 7497 7498 AcpiHelp: Automatically display expanded keyword information for all ASL 7499 operators. 7500 7501 Debugger: Add "Template" command to disassemble/dump resource template 7502 buffers. 7503 7504 Added a new master script to generate and execute the ASLTS test suite. 7505 Automatically handles 32- and 64-bit generation. See tests/aslts.sh 7506 7507 iASL: Fix problem with listing generation during processing of the 7508 Switch() 7509 operator where AML listing was disabled until the entire Switch block was 7510 completed. 7511 7512 iASL: Improve support for semicolon statement terminators. Fix "invalid 7513 character" message for some cases when the semicolon is used. Semicolons 7514 are 7515 now allowed after every <Term> grammar element. ACPICA BZ 927. 7516 7517 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 7518 923. 7519 7520 Disassembler: Fix problem with disassembly of the DataTableRegion 7521 operator 7522 where an inadvertent "Unhandled deferred opcode" message could be 7523 generated. 7524 7525 3) Example Code and Data Size 7526 7527 These are the sizes for the OS-independent acpica.lib produced by the 7528 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7529 includes the debug output trace mechanism and has a much larger code and 7530 data 7531 size. 7532 7533 Previous Release: 7534 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7535 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7536 Current Release: 7537 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 7538 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 7539 7540 ---------------------------------------- 7541 22 September 2011. Summary of changes for version 20110922: 7542 7543 0) ACPI 5.0 News: 7544 7545 Support for ACPI 5.0 in ACPICA has been underway for several months and 7546 will 7547 be released at the same time that ACPI 5.0 is officially released. 7548 7549 The ACPI 5.0 specification is on track for release in the next few 7550 months. 7551 7552 1) ACPICA Core Subsystem: 7553 7554 Fixed a problem where the maximum sleep time for the Sleep() operator was 7555 intended to be limited to two seconds, but was inadvertently limited to 7556 20 7557 seconds instead. 7558 7559 Linux and Unix makefiles: Added header file dependencies to ensure 7560 correct 7561 generation of ACPICA core code and utilities. Also simplified the 7562 makefiles 7563 considerably through the use of the vpath variable to specify search 7564 paths. 7565 ACPICA BZ 924. 7566 7567 2) iASL Compiler/Disassembler and Tools: 7568 7569 iASL: Implemented support to check the access length for all fields 7570 created to 7571 access named Resource Descriptor fields. For example, if a resource field 7572 is 7573 defined to be two bits, a warning is issued if a CreateXxxxField() is 7574 used 7575 with an incorrect bit length. This is implemented for all current 7576 resource 7577 descriptor names. ACPICA BZ 930. 7578 7579 Disassembler: Fixed a byte ordering problem with the output of 24-bit and 7580 56- 7581 bit integers. 7582 7583 iASL: Fixed a couple of issues associated with variable-length package 7584 objects. 1) properly handle constants like One, Ones, Zero -- do not make 7585 a 7586 VAR_PACKAGE when these are used as a package length. 2) Allow the 7587 VAR_PACKAGE 7588 opcode (in addition to PACKAGE) when validating object types for 7589 predefined 7590 names. 7591 7592 iASL: Emit statistics for all output files (instead of just the ASL input 7593 and 7594 AML output). Includes listings, hex files, etc. 7595 7596 iASL: Added -G option to the table compiler to allow the compilation of 7597 custom 7598 ACPI tables. The only part of a table that is required is the standard 7599 36- 7600 byte 7601 ACPI header. 7602 7603 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 7604 headers), 7605 which also adds correct 64-bit support. Also, now all output filenames 7606 are 7607 completely lower case. 7608 7609 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 7610 loading table files. A warning is issued for any such tables. The only 7611 exception is an FADT. This also fixes a possible fault when attempting to 7612 load 7613 non-AML tables. ACPICA BZ 932. 7614 7615 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 7616 a 7617 missing table terminator could cause a fault when using the -p option. 7618 7619 AcpiSrc: Fixed a possible divide-by-zero fault when generating file 7620 statistics. 7621 7622 3) Example Code and Data Size 7623 7624 These are the sizes for the OS-independent acpica.lib produced by the 7625 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 7626 includes the debug output trace mechanism and has a much larger code and 7627 data 7628 size. 7629 7630 Previous Release (VC 9.0): 7631 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7632 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7633 Current Release (VC 9.0): 7634 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7635 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7636 7637 7638 ---------------------------------------- 7639 23 June 2011. Summary of changes for version 20110623: 7640 7641 1) ACPI CA Core Subsystem: 7642 7643 Updated the predefined name repair mechanism to not attempt repair of a 7644 _TSS 7645 return object if a _PSS object is present. We can only sort the _TSS 7646 return 7647 package if there is no _PSS within the same scope. This is because if 7648 _PSS 7649 is 7650 present, the ACPI specification dictates that the _TSS Power Dissipation 7651 field 7652 is to be ignored, and therefore some BIOSs leave garbage values in the 7653 _TSS 7654 Power field(s). In this case, it is best to just return the _TSS package 7655 as- 7656 is. Reported by, and fixed with assistance from Fenghua Yu. 7657 7658 Added an option to globally disable the control method return value 7659 validation 7660 and repair. This runtime option can be used to disable return value 7661 repair 7662 if 7663 this is causing a problem on a particular machine. Also added an option 7664 to 7665 AcpiExec (-dr) to set this disable flag. 7666 7667 All makefiles and project files: Major changes to improve generation of 7668 ACPICA 7669 tools. ACPICA BZ 912: 7670 Reduce default optimization levels to improve compatibility 7671 For Linux, add strict-aliasing=0 for gcc 4 7672 Cleanup and simplify use of command line defines 7673 Cleanup multithread library support 7674 Improve usage messages 7675 7676 Linux-specific header: update handling of THREAD_ID and pthread. For the 7677 32- 7678 bit case, improve casting to eliminate possible warnings, especially with 7679 the 7680 acpica tools. 7681 7682 Example Code and Data Size: These are the sizes for the OS-independent 7683 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7684 debug 7685 version of the code includes the debug output trace mechanism and has a 7686 much 7687 larger code and data size. 7688 7689 Previous Release (VC 9.0): 7690 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7691 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7692 Current Release (VC 9.0): 7693 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 7694 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7695 7696 2) iASL Compiler/Disassembler and Tools: 7697 7698 With this release, a new utility named "acpihelp" has been added to the 7699 ACPICA 7700 package. This utility summarizes the ACPI specification chapters for the 7701 ASL 7702 and AML languages. It generates under Linux/Unix as well as Windows, and 7703 provides the following functionality: 7704 Find/display ASL operator(s) -- with description and syntax. 7705 Find/display ASL keyword(s) -- with exact spelling and descriptions. 7706 Find/display ACPI predefined name(s) -- with description, number 7707 of arguments, and the return value data type. 7708 Find/display AML opcode name(s) -- with opcode, arguments, and 7709 grammar. 7710 Decode/display AML opcode -- with opcode name, arguments, and 7711 grammar. 7712 7713 Service Layers: Make multi-thread support configurable. Conditionally 7714 compile 7715 the multi-thread support so that threading libraries will not be linked 7716 if 7717 not 7718 necessary. The only tool that requires multi-thread support is AcpiExec. 7719 7720 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 7721 of 7722 Bison appear to want the interface to yyerror to be a const char * (or at 7723 least this is a problem when generating iASL on some systems.) ACPICA BZ 7724 923 7725 Pierre Lejeune. 7726 7727 Tools: Fix for systems where O_BINARY is not defined. Only used for 7728 Windows 7729 versions of the tools. 7730 7731 ---------------------------------------- 7732 27 May 2011. Summary of changes for version 20110527: 7733 7734 1) ACPI CA Core Subsystem: 7735 7736 ASL Load() operator: Reinstate most restrictions on the incoming ACPI 7737 table 7738 signature. Now, only allow SSDT, OEMx, and a null signature. History: 7739 1) Originally, we checked the table signature for "SSDT" or "PSDT". 7740 (PSDT is now obsolete.) 7741 2) We added support for OEMx tables, signature "OEM" plus a fourth 7742 "don't care" character. 7743 3) Valid tables were encountered with a null signature, so we just 7744 gave up on validating the signature, (05/2008). 7745 4) We encountered non-AML tables such as the MADT, which caused 7746 interpreter errors and kernel faults. So now, we once again allow 7747 only SSDT, OEMx, and now, also a null signature. (05/2011). 7748 7749 Added the missing _TDL predefined name to the global name list in order 7750 to 7751 enable validation. Affects both the core ACPICA code and the iASL 7752 compiler. 7753 7754 Example Code and Data Size: These are the sizes for the OS-independent 7755 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7756 debug 7757 version of the code includes the debug output trace mechanism and has a 7758 much 7759 larger code and data size. 7760 7761 Previous Release (VC 9.0): 7762 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7763 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7764 Current Release (VC 9.0): 7765 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 7766 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 7767 7768 2) iASL Compiler/Disassembler and Tools: 7769 7770 Debugger/AcpiExec: Implemented support for "complex" method arguments on 7771 the 7772 debugger command line. This adds support beyond simple integers -- 7773 including 7774 Strings, Buffers, and Packages. Includes support for nested packages. 7775 Increased the default command line buffer size to accommodate these 7776 arguments. 7777 See the ACPICA reference for details and syntax. ACPICA BZ 917. 7778 7779 Debugger/AcpiExec: Implemented support for "default" method arguments for 7780 the 7781 Execute/Debug command. Now, the debugger will always invoke a control 7782 method 7783 with the required number of arguments -- even if the command line 7784 specifies 7785 none or insufficient arguments. It uses default integer values for any 7786 missing 7787 arguments. Also fixes a bug where only six method arguments maximum were 7788 supported instead of the required seven. 7789 7790 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 7791 and 7792 also return status in order to prevent buffer overruns. See the ACPICA 7793 reference for details and syntax. ACPICA BZ 921 7794 7795 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 7796 makefiles to simplify support for the two different but similar parser 7797 generators, bison and yacc. 7798 7799 Updated the generic unix makefile for gcc 4. The default gcc version is 7800 now 7801 expected to be 4 or greater, since options specific to gcc 4 are used. 7802 7803 ---------------------------------------- 7804 13 April 2011. Summary of changes for version 20110413: 7805 7806 1) ACPI CA Core Subsystem: 7807 7808 Implemented support to execute a so-called "orphan" _REG method under the 7809 EC 7810 device. This change will force the execution of a _REG method underneath 7811 the 7812 EC 7813 device even if there is no corresponding operation region of type 7814 EmbeddedControl. Fixes a problem seen on some machines and apparently is 7815 compatible with Windows behavior. ACPICA BZ 875. 7816 7817 Added more predefined methods that are eligible for automatic NULL 7818 package 7819 element removal. This change adds another group of predefined names to 7820 the 7821 list 7822 of names that can be repaired by having NULL package elements dynamically 7823 removed. This group are those methods that return a single variable- 7824 length 7825 package containing simple data types such as integers, buffers, strings. 7826 This 7827 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 7828 _PSL, 7829 _Sx, 7830 and _TZD. ACPICA BZ 914. 7831 7832 Split and segregated all internal global lock functions to a new file, 7833 evglock.c. 7834 7835 Updated internal address SpaceID for DataTable regions. Moved this 7836 internal 7837 space 7838 id in preparation for ACPI 5.0 changes that will include some new space 7839 IDs. 7840 This 7841 change should not affect user/host code. 7842 7843 Example Code and Data Size: These are the sizes for the OS-independent 7844 acpica.lib 7845 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7846 version of 7847 the code includes the debug output trace mechanism and has a much larger 7848 code 7849 and 7850 data size. 7851 7852 Previous Release (VC 9.0): 7853 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7854 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7855 Current Release (VC 9.0): 7856 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 7857 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 7858 7859 2) iASL Compiler/Disassembler and Tools: 7860 7861 iASL/DTC: Major update for new grammar features. Allow generic data types 7862 in 7863 custom ACPI tables. Field names are now optional. Any line can be split 7864 to 7865 multiple lines using the continuation char (\). Large buffers now use 7866 line- 7867 continuation character(s) and no colon on the continuation lines. See the 7868 grammar 7869 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 7870 Moore. 7871 7872 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 7873 statements. 7874 Since the parser stuffs a "zero" as the return value for these statements 7875 (due 7876 to 7877 the underlying AML grammar), they were seen as "return with value" by the 7878 iASL 7879 semantic checking. They are now seen correctly as "null" return 7880 statements. 7881 7882 iASL: Check if a_REG declaration has a corresponding Operation Region. 7883 Adds a 7884 check for each _REG to ensure that there is in fact a corresponding 7885 operation 7886 region declaration in the same scope. If not, the _REG method is not very 7887 useful 7888 since it probably won't be executed. ACPICA BZ 915. 7889 7890 iASL/DTC: Finish support for expression evaluation. Added a new 7891 expression 7892 parser 7893 that implements c-style operator precedence and parenthesization. ACPICA 7894 bugzilla 7895 908. 7896 7897 Disassembler/DTC: Remove support for () and <> style comments in data 7898 tables. 7899 Now 7900 that DTC has full expression support, we don't want to have comment 7901 strings 7902 that 7903 start with a parentheses or a less-than symbol. Now, only the standard /* 7904 and 7905 // 7906 comments are supported, as well as the bracket [] comments. 7907 7908 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 7909 "unusual" 7910 headers in the acpidump file. Update the header validation to support 7911 these 7912 tables. Problem introduced in previous AcpiXtract version in the change 7913 to 7914 support "wrong checksum" error messages emitted by acpidump utility. 7915 7916 iASL: Add a * option to generate all template files (as a synonym for 7917 ALL) 7918 as 7919 in 7920 "iasl -T *" or "iasl -T ALL". 7921 7922 iASL/DTC: Do not abort compiler on fatal errors. We do not want to 7923 completely 7924 abort the compiler on "fatal" errors, simply should abort the current 7925 compile. 7926 This allows multiple compiles with a single (possibly wildcard) compiler 7927 invocation. 7928 7929 ---------------------------------------- 7930 16 March 2011. Summary of changes for version 20110316: 7931 7932 1) ACPI CA Core Subsystem: 7933 7934 Fixed a problem caused by a _PRW method appearing at the namespace root 7935 scope 7936 during the setup of wake GPEs. A fault could occur if a _PRW directly 7937 under 7938 the 7939 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 7940 7941 Implemented support for "spurious" Global Lock interrupts. On some 7942 systems, a 7943 global lock interrupt can occur without the pending flag being set. Upon 7944 a 7945 GL 7946 interrupt, we now ensure that a thread is actually waiting for the lock 7947 before 7948 signaling GL availability. Rafael Wysocki, Bob Moore. 7949 7950 Example Code and Data Size: These are the sizes for the OS-independent 7951 acpica.lib 7952 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 7953 version of 7954 the code includes the debug output trace mechanism and has a much larger 7955 code 7956 and 7957 data size. 7958 7959 Previous Release (VC 9.0): 7960 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7961 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7962 Current Release (VC 9.0): 7963 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 7964 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 7965 7966 2) iASL Compiler/Disassembler and Tools: 7967 7968 Implemented full support for the "SLIC" ACPI table. Includes support in 7969 the 7970 header files, disassembler, table compiler, and template generator. Bob 7971 Moore, 7972 Lin Ming. 7973 7974 AcpiXtract: Correctly handle embedded comments and messages from 7975 AcpiDump. 7976 Apparently some or all versions of acpidump will occasionally emit a 7977 comment 7978 like 7979 "Wrong checksum", etc., into the dump file. This was causing problems for 7980 AcpiXtract. ACPICA BZ 905. 7981 7982 iASL: Fix the Linux makefile by removing an inadvertent double file 7983 inclusion. 7984 ACPICA BZ 913. 7985 7986 AcpiExec: Update installation of operation region handlers. Install one 7987 handler 7988 for a user-defined address space. This is used by the ASL test suite 7989 (ASLTS). 7990 7991 ---------------------------------------- 7992 11 February 2011. Summary of changes for version 20110211: 7993 7994 1) ACPI CA Core Subsystem: 7995 7996 Added a mechanism to defer _REG methods for some early-installed 7997 handlers. 7998 Most user handlers should be installed before call to 7999 AcpiEnableSubsystem. 8000 However, Event handlers and region handlers should be installed after 8001 AcpiInitializeObjects. Override handlers for the "default" regions should 8002 be 8003 installed early, however. This change executes all _REG methods for the 8004 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 8005 chicken/egg issues between them. ACPICA BZ 848. 8006 8007 Implemented an optimization for GPE detection. This optimization will 8008 simply 8009 ignore GPE registers that contain no enabled GPEs -- there is no need to 8010 read the register since this information is available internally. This 8011 becomes more important on machines with a large GPE space. ACPICA 8012 bugzilla 8013 884. Lin Ming. Suggestion from Joe Liu. 8014 8015 Removed all use of the highly unreliable FADT revision field. The 8016 revision 8017 number in the FADT has been found to be completely unreliable and cannot 8018 be 8019 trusted. Only the actual table length can be used to infer the version. 8020 This 8021 change updates the ACPICA core and the disassembler so that both no 8022 longer 8023 even look at the FADT version and instead depend solely upon the FADT 8024 length. 8025 8026 Fix an unresolved name issue for the no-debug and no-error-message source 8027 generation cases. The _AcpiModuleName was left undefined in these cases, 8028 but 8029 it is actually needed as a parameter to some interfaces. Define 8030 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 8031 8032 Split several large files (makefiles and project files updated) 8033 utglobal.c -> utdecode.c 8034 dbcomds.c -> dbmethod.c dbnames.c 8035 dsopcode.c -> dsargs.c dscontrol.c 8036 dsload.c -> dsload2.c 8037 aslanalyze.c -> aslbtypes.c aslwalks.c 8038 8039 Example Code and Data Size: These are the sizes for the OS-independent 8040 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8041 debug version of the code includes the debug output trace mechanism and 8042 has 8043 a much larger code and data size. 8044 8045 Previous Release (VC 9.0): 8046 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8047 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8048 Current Release (VC 9.0): 8049 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8050 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8051 8052 2) iASL Compiler/Disassembler and Tools: 8053 8054 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 8055 These are useful C-style macros with the standard definitions. ACPICA 8056 bugzilla 898. 8057 8058 iASL/DTC: Added support for integer expressions and labels. Support for 8059 full 8060 expressions for all integer fields in all ACPI tables. Support for labels 8061 in 8062 "generic" portions of tables such as UEFI. See the iASL reference manual. 8063 8064 Debugger: Added a command to display the status of global handlers. The 8065 "handlers" command will display op region, fixed event, and miscellaneous 8066 global handlers. installation status -- and for op regions, whether 8067 default 8068 or user-installed handler will be used. 8069 8070 iASL: Warn if reserved method incorrectly returns a value. Many 8071 predefined 8072 names are defined such that they do not return a value. If implemented as 8073 a 8074 method, issue a warning if such a name explicitly returns a value. ACPICA 8075 Bugzilla 855. 8076 8077 iASL: Added detection of GPE method name conflicts. Detects a conflict 8078 where 8079 there are two GPE methods of the form _Lxy and _Exy in the same scope. 8080 (For 8081 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 8082 8083 iASL/DTC: Fixed a couple input scanner issues with comments and line 8084 numbers. Comment remover could get confused and miss a comment ending. 8085 Fixed 8086 a problem with line counter maintenance. 8087 8088 iASL/DTC: Reduced the severity of some errors from fatal to error. There 8089 is 8090 no need to abort on simple errors within a field definition. 8091 8092 Debugger: Simplified the output of the help command. All help output now 8093 in 8094 a single screen, instead of help subcommands. ACPICA Bugzilla 897. 8095 8096 ---------------------------------------- 8097 12 January 2011. Summary of changes for version 20110112: 8098 8099 1) ACPI CA Core Subsystem: 8100 8101 Fixed a race condition between method execution and namespace walks that 8102 can 8103 possibly cause a fault. The problem was apparently introduced in version 8104 20100528 as a result of a performance optimization that reduces the 8105 number 8106 of 8107 namespace walks upon method exit by using the delete_namespace_subtree 8108 function instead of the delete_namespace_by_owner function used 8109 previously. 8110 Bug is a missing namespace lock in the delete_namespace_subtree function. 8111 dana.myers (a] oracle.com 8112 8113 Fixed several issues and a possible fault with the automatic "serialized" 8114 method support. History: This support changes a method to "serialized" on 8115 the 8116 fly if the method generates an AE_ALREADY_EXISTS error, indicating the 8117 possibility that it cannot handle reentrancy. This fix repairs a couple 8118 of 8119 issues seen in the field, especially on machines with many cores: 8120 8121 1) Delete method children only upon the exit of the last thread, 8122 so as to not delete objects out from under other running threads 8123 (and possibly causing a fault.) 8124 2) Set the "serialized" bit for the method only upon the exit of the 8125 Last thread, so as to not cause deadlock when running threads 8126 attempt to exit. 8127 3) Cleanup the use of the AML "MethodFlags" and internal method flags 8128 so that there is no longer any confusion between the two. 8129 8130 Lin Ming, Bob Moore. Reported by dana.myers (a] oracle.com. 8131 8132 Debugger: Now lock the namespace for duration of a namespace dump. 8133 Prevents 8134 issues if the namespace is changing dynamically underneath the debugger. 8135 Especially affects temporary namespace nodes, since the debugger displays 8136 these also. 8137 8138 Updated the ordering of include files. The ACPICA headers should appear 8139 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 8140 set 8141 any necessary compiler-specific defines, etc. Affects the ACPI-related 8142 tools 8143 and utilities. 8144 8145 Updated all ACPICA copyrights and signons to 2011. Added the 2011 8146 copyright 8147 to all module headers and signons, including the Linux header. This 8148 affects 8149 virtually every file in the ACPICA core subsystem, iASL compiler, and all 8150 utilities. 8151 8152 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 8153 project files for VC++ 6.0 are now obsolete. New project files can be 8154 found 8155 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 8156 details. 8157 8158 Example Code and Data Size: These are the sizes for the OS-independent 8159 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 8160 debug version of the code includes the debug output trace mechanism and 8161 has a 8162 much larger code and data size. 8163 8164 Previous Release (VC 6.0): 8165 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8166 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8167 Current Release (VC 9.0): 8168 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 8169 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 8170 8171 2) iASL Compiler/Disassembler and Tools: 8172 8173 iASL: Added generic data types to the Data Table compiler. Add "generic" 8174 data 8175 types such as UINT32, String, Unicode, etc., to simplify the generation 8176 of 8177 platform-defined tables such as UEFI. Lin Ming. 8178 8179 iASL: Added listing support for the Data Table Compiler. Adds listing 8180 support 8181 (-l) to display actual binary output for each line of input code. 8182 8183 ---------------------------------------- 8184 09 December 2010. Summary of changes for version 20101209: 8185 8186 1) ACPI CA Core Subsystem: 8187 8188 Completed the major overhaul of the GPE support code that was begun in 8189 July 8190 2010. Major features include: removal of _PRW execution in ACPICA (host 8191 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 8192 changes to existing interfaces, simplification of GPE handler operation, 8193 and 8194 a handful of new interfaces: 8195 8196 AcpiUpdateAllGpes 8197 AcpiFinishGpe 8198 AcpiSetupGpeForWake 8199 AcpiSetGpeWakeMask 8200 One new file, evxfgpe.c to consolidate all external GPE interfaces. 8201 8202 See the ACPICA Programmer Reference for full details and programming 8203 information. See the new section 4.4 "General Purpose Event (GPE) 8204 Support" 8205 for a full overview, and section 8.7 "ACPI General Purpose Event 8206 Management" 8207 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 8208 Ming, 8209 Bob Moore, Rafael Wysocki. 8210 8211 Implemented a new GPE feature for Windows compatibility, the "Implicit 8212 Wake 8213 GPE Notify". This feature will automatically issue a Notify(2) on a 8214 device 8215 when a Wake GPE is received if there is no corresponding GPE method or 8216 handler. ACPICA BZ 870. 8217 8218 Fixed a problem with the Scope() operator during table parse and load 8219 phase. 8220 During load phase (table load or method execution), the scope operator 8221 should 8222 not enter the target into the namespace. Instead, it should open a new 8223 scope 8224 at the target location. Linux BZ 19462, ACPICA BZ 882. 8225 8226 Example Code and Data Size: These are the sizes for the OS-independent 8227 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8228 debug version of the code includes the debug output trace mechanism and 8229 has a 8230 much larger code and data size. 8231 8232 Previous Release: 8233 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 8234 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 8235 Current Release: 8236 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8237 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8238 8239 2) iASL Compiler/Disassembler and Tools: 8240 8241 iASL: Relax the alphanumeric restriction on _CID strings. These strings 8242 are 8243 "bus-specific" per the ACPI specification, and therefore any characters 8244 are 8245 acceptable. The only checks that can be performed are for a null string 8246 and 8247 perhaps for a leading asterisk. ACPICA BZ 886. 8248 8249 iASL: Fixed a problem where a syntax error that caused a premature EOF 8250 condition on the source file emitted a very confusing error message. The 8251 premature EOF is now detected correctly. ACPICA BZ 891. 8252 8253 Disassembler: Decode the AccessSize within a Generic Address Structure 8254 (byte 8255 access, word access, etc.) Note, this field does not allow arbitrary bit 8256 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 8257 8258 New: AcpiNames utility - Example namespace dump utility. Shows an example 8259 of 8260 ACPICA configuration for a minimal namespace dump utility. Uses table and 8261 namespace managers, but no AML interpreter. Does not add any 8262 functionality 8263 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 8264 partition and configure ACPICA. ACPICA BZ 883. 8265 8266 AML Debugger: Increased the debugger buffer size for method return 8267 objects. 8268 Was 4K, increased to 16K. Also enhanced error messages for debugger 8269 method 8270 execution, including the buffer overflow case. 8271 8272 ---------------------------------------- 8273 13 October 2010. Summary of changes for version 20101013: 8274 8275 1) ACPI CA Core Subsystem: 8276 8277 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 8278 now 8279 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 8280 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 8281 8282 Changed the type of the predefined namespace object _TZ from ThermalZone 8283 to 8284 Device. This was found to be confusing to the host software that 8285 processes 8286 the various thermal zones, since _TZ is not really a ThermalZone. 8287 However, 8288 a 8289 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 8290 Zhang. 8291 8292 Added Windows Vista SP2 to the list of supported _OSI strings. The actual 8293 string is "Windows 2006 SP2". 8294 8295 Eliminated duplicate code in AcpiUtExecute* functions. Now that the 8296 nsrepair 8297 code automatically repairs _HID-related strings, this type of code is no 8298 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 8299 878. 8300 8301 Example Code and Data Size: These are the sizes for the OS-independent 8302 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8303 debug version of the code includes the debug output trace mechanism and 8304 has a 8305 much larger code and data size. 8306 8307 Previous Release: 8308 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8309 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8310 Current Release: 8311 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8312 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8313 8314 2) iASL Compiler/Disassembler and Tools: 8315 8316 iASL: Implemented additional compile-time validation for _HID strings. 8317 The 8318 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 8319 length 8320 of 8321 the string must be exactly seven or eight characters. For both _HID and 8322 _CID 8323 strings, all characters must be alphanumeric. ACPICA BZ 874. 8324 8325 iASL: Allow certain "null" resource descriptors. Some BIOS code creates 8326 descriptors that are mostly or all zeros, with the expectation that they 8327 will 8328 be filled in at runtime. iASL now allows this as long as there is a 8329 "resource 8330 tag" (name) associated with the descriptor, which gives the ASL a handle 8331 needed to modify the descriptor. ACPICA BZ 873. 8332 8333 Added single-thread support to the generic Unix application OSL. 8334 Primarily 8335 for iASL support, this change removes the use of semaphores in the 8336 single- 8337 threaded ACPICA tools/applications - increasing performance. The 8338 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 8339 option. ACPICA BZ 879. 8340 8341 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 8342 support 8343 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 8344 8345 iASL: Moved all compiler messages to a new file, aslmessages.h. 8346 8347 ---------------------------------------- 8348 15 September 2010. Summary of changes for version 20100915: 8349 8350 1) ACPI CA Core Subsystem: 8351 8352 Removed the AcpiOsDerivePciId OSL interface. The various host 8353 implementations 8354 of this function were not OS-dependent and are now obsolete and can be 8355 removed from all host OSLs. This function has been replaced by 8356 AcpiHwDerivePciId, which is now part of the ACPICA core code. 8357 AcpiHwDerivePciId has been implemented without recursion. Adds one new 8358 module, hwpci.c. ACPICA BZ 857. 8359 8360 Implemented a dynamic repair for _HID and _CID strings. The following 8361 problems are now repaired at runtime: 1) Remove a leading asterisk in the 8362 string, and 2) the entire string is uppercased. Both repairs are in 8363 accordance with the ACPI specification and will simplify host driver 8364 code. 8365 ACPICA BZ 871. 8366 8367 The ACPI_THREAD_ID type is no longer configurable, internally it is now 8368 always UINT64. This simplifies the ACPICA code, especially any printf 8369 output. 8370 UINT64 is the only common data type for all thread_id types across all 8371 operating systems. It is now up to the host OSL to cast the native 8372 thread_id 8373 type to UINT64 before returning the value to ACPICA (via 8374 AcpiOsGetThreadId). 8375 Lin Ming, Bob Moore. 8376 8377 Added the ACPI_INLINE type to enhance the ACPICA configuration. The 8378 "inline" 8379 keyword is not standard across compilers, and this type allows inline to 8380 be 8381 configured on a per-compiler basis. Lin Ming. 8382 8383 Made the system global AcpiGbl_SystemAwakeAndRunning publicly 8384 available. 8385 Added an extern for this boolean in acpixf.h. Some hosts utilize this 8386 value 8387 during suspend/restore operations. ACPICA BZ 869. 8388 8389 All code that implements error/warning messages with the "ACPI:" prefix 8390 has 8391 been moved to a new module, utxferror.c. 8392 8393 The UINT64_OVERLAY was moved to utmath.c, which is the only module where 8394 it 8395 is used. ACPICA BZ 829. Lin Ming, Bob Moore. 8396 8397 Example Code and Data Size: These are the sizes for the OS-independent 8398 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8399 debug version of the code includes the debug output trace mechanism and 8400 has a 8401 much larger code and data size. 8402 8403 Previous Release: 8404 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8405 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8406 Current Release: 8407 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 8408 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 8409 8410 2) iASL Compiler/Disassembler and Tools: 8411 8412 iASL/Disassembler: Write ACPI errors to stderr instead of the output 8413 file. 8414 This keeps the output files free of random error messages that may 8415 originate 8416 from within the namespace/interpreter code. Used this opportunity to 8417 merge 8418 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 8419 866. Lin Ming, Bob Moore. 8420 8421 Tools: update some printfs for ansi warnings on size_t. Handle width 8422 change 8423 of size_t on 32-bit versus 64-bit generations. Lin Ming. 8424 8425 ---------------------------------------- 8426 06 August 2010. Summary of changes for version 20100806: 8427 8428 1) ACPI CA Core Subsystem: 8429 8430 Designed and implemented a new host interface to the _OSI support code. 8431 This 8432 will allow the host to dynamically add or remove multiple _OSI strings, 8433 as 8434 well as install an optional handler that is called for each _OSI 8435 invocation. 8436 Also added a new AML debugger command, 'osi' to display and modify the 8437 global 8438 _OSI string table, and test support in the AcpiExec utility. See the 8439 ACPICA 8440 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 8441 New Functions: 8442 AcpiInstallInterface - Add an _OSI string. 8443 AcpiRemoveInterface - Delete an _OSI string. 8444 AcpiInstallInterfaceHandler - Install optional _OSI handler. 8445 Obsolete Functions: 8446 AcpiOsValidateInterface - no longer used. 8447 New Files: 8448 source/components/utilities/utosi.c 8449 8450 Re-introduced the support to enable multi-byte transfers for Embedded 8451 Controller (EC) operation regions. A reported problem was found to be a 8452 bug 8453 in the host OS, not in the multi-byte support. Previously, the maximum 8454 data 8455 size passed to the EC operation region handler was a single byte. There 8456 are 8457 often EC Fields larger than one byte that need to be transferred, and it 8458 is 8459 useful for the EC driver to lock these as a single transaction. This 8460 change 8461 enables single transfers larger than 8 bits. This effectively changes the 8462 access to the EC space from ByteAcc to AnyAcc, and will probably require 8463 changes to the host OS Embedded Controller driver to enable 16/32/64/256- 8464 bit 8465 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 8466 8467 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 8468 prototype in acpiosxf.h had the output value pointer as a (void *). 8469 It should be a (UINT64 *). This may affect some host OSL code. 8470 8471 Fixed a couple problems with the recently modified Linux makefiles for 8472 iASL 8473 and AcpiExec. These new makefiles place the generated object files in the 8474 local directory so that there can be no collisions between the files that 8475 are 8476 shared between them that are compiled with different options. 8477 8478 Example Code and Data Size: These are the sizes for the OS-independent 8479 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8480 debug version of the code includes the debug output trace mechanism and 8481 has a 8482 much larger code and data size. 8483 8484 Previous Release: 8485 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8486 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8487 Current Release: 8488 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 8489 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 8490 8491 2) iASL Compiler/Disassembler and Tools: 8492 8493 iASL/Disassembler: Added a new option (-da, "disassemble all") to load 8494 the 8495 namespace from and disassemble an entire group of AML files. Useful for 8496 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 8497 and 8498 disassembling with one simple command. ACPICA BZ 865. Lin Ming. 8499 8500 iASL: Allow multiple invocations of -e option. This change allows 8501 multiple 8502 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 8503 834. 8504 Lin Ming. 8505 8506 ---------------------------------------- 8507 02 July 2010. Summary of changes for version 20100702: 8508 8509 1) ACPI CA Core Subsystem: 8510 8511 Implemented several updates to the recently added GPE reference count 8512 support. The model for "wake" GPEs is changing to give the host OS 8513 complete 8514 control of these GPEs. Eventually, the ACPICA core will not execute any 8515 _PRW 8516 methods, since the host already must execute them. Also, additional 8517 changes 8518 were made to help ensure that the reference counts are kept in proper 8519 synchronization with reality. Rafael J. Wysocki. 8520 8521 1) Ensure that GPEs are not enabled twice during initialization. 8522 2) Ensure that GPE enable masks stay in sync with the reference count. 8523 3) Do not inadvertently enable GPEs when writing GPE registers. 8524 4) Remove the internal wake reference counter and add new AcpiGpeWakeup 8525 interface. This interface will set or clear individual GPEs for wakeup. 8526 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These 8527 interfaces 8528 are now used for "runtime" GPEs only. 8529 8530 Changed the behavior of the GPE install/remove handler interfaces. The 8531 GPE 8532 is 8533 no longer disabled during this process, as it was found to cause problems 8534 on 8535 some machines. Rafael J. Wysocki. 8536 8537 Reverted a change introduced in version 20100528 to enable Embedded 8538 Controller multi-byte transfers. This change was found to cause problems 8539 with 8540 Index Fields and possibly Bank Fields. It will be reintroduced when these 8541 problems have been resolved. 8542 8543 Fixed a problem with references to Alias objects within Package Objects. 8544 A 8545 reference to an Alias within the definition of a Package was not always 8546 resolved properly. Aliases to objects like Processors, Thermal zones, 8547 etc. 8548 were resolved to the actual object instead of a reference to the object 8549 as 8550 it 8551 should be. Package objects are only allowed to contain integer, string, 8552 buffer, package, and reference objects. Redhat bugzilla 608648. 8553 8554 Example Code and Data Size: These are the sizes for the OS-independent 8555 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8556 debug version of the code includes the debug output trace mechanism and 8557 has a 8558 much larger code and data size. 8559 8560 Previous Release: 8561 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8562 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8563 Current Release: 8564 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8565 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 8566 8567 2) iASL Compiler/Disassembler and Tools: 8568 8569 iASL: Implemented a new compiler subsystem to allow definition and 8570 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 8571 These 8572 are called "ACPI Data Tables", and the new compiler is the "Data Table 8573 Compiler". This compiler is intended to simplify the existing error-prone 8574 process of creating these tables for the BIOS, as well as allowing the 8575 disassembly, modification, recompilation, and override of existing ACPI 8576 data 8577 tables. See the iASL User Guide for detailed information. 8578 8579 iASL: Implemented a new Template Generator option in support of the new 8580 Data 8581 Table Compiler. This option will create examples of all known ACPI tables 8582 that can be used as the basis for table development. See the iASL 8583 documentation and the -T option. 8584 8585 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 8586 Descriptor Table). 8587 8588 Updated the Linux makefiles for iASL and AcpiExec to place the generated 8589 object files in the local directory so that there can be no collisions 8590 between the shared files between them that are generated with different 8591 options. 8592 8593 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 8594 Use 8595 the #define __APPLE__ to enable this support. 8596 8597 ---------------------------------------- 8598 28 May 2010. Summary of changes for version 20100528: 8599 8600 Note: The ACPI 4.0a specification was released on April 5, 2010 and is 8601 available at www.acpi.info. This is primarily an errata release. 8602 8603 1) ACPI CA Core Subsystem: 8604 8605 Undefined ACPI tables: We are looking for the definitions for the 8606 following 8607 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 8608 8609 Implemented support to enable multi-byte transfers for Embedded 8610 Controller 8611 (EC) operation regions. Previously, the maximum data size passed to the 8612 EC 8613 operation region handler was a single byte. There are often EC Fields 8614 larger 8615 than one byte that need to be transferred, and it is useful for the EC 8616 driver 8617 to lock these as a single transaction. This change enables single 8618 transfers 8619 larger than 8 bits. This effectively changes the access to the EC space 8620 from 8621 ByteAcc to AnyAcc, and will probably require changes to the host OS 8622 Embedded 8623 Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 8624 bit 8625 transfers. Alexey Starikovskiy, Lin Ming 8626 8627 Implemented a performance enhancement for namespace search and access. 8628 This 8629 change enhances the performance of namespace searches and walks by adding 8630 a 8631 backpointer to the parent in each namespace node. On large namespaces, 8632 this 8633 change can improve overall ACPI performance by up to 9X. Adding a pointer 8634 to 8635 each namespace node increases the overall size of the internal namespace 8636 by 8637 about 5%, since each namespace entry usually consists of both a namespace 8638 node and an ACPI operand object. However, this is the first growth of the 8639 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 8640 8641 Implemented a performance optimization that reduces the number of 8642 namespace 8643 walks. On control method exit, only walk the namespace if the method is 8644 known 8645 to have created namespace objects outside of its local scope. Previously, 8646 the 8647 entire namespace was traversed on each control method exit. This change 8648 can 8649 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 8650 Moore. 8651 8652 Added support to truncate I/O addresses to 16 bits for Windows 8653 compatibility. 8654 Some ASL code has been seen in the field that inadvertently has bits set 8655 above bit 15. This feature is optional and is enabled if the BIOS 8656 requests 8657 any Windows OSI strings. It can also be enabled by the host OS. Matthew 8658 Garrett, Bob Moore. 8659 8660 Added support to limit the maximum time for the ASL Sleep() operator. To 8661 prevent accidental deep sleeps, limit the maximum time that Sleep() will 8662 actually sleep. Configurable, the default maximum is two seconds. ACPICA 8663 bugzilla 854. 8664 8665 Added run-time validation support for the _WDG and_WED Microsoft 8666 predefined 8667 methods. These objects are defined by "Windows Instrumentation", and are 8668 not 8669 part of the ACPI spec. ACPICA BZ 860. 8670 8671 Expanded all statistic counters used during namespace and device 8672 initialization from 16 to 32 bits in order to support very large 8673 namespaces. 8674 8675 Replaced all instances of %d in printf format specifiers with %u since 8676 nearly 8677 all integers in ACPICA are unsigned. 8678 8679 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 8680 returned 8681 as AE_NO_HANDLER. 8682 8683 Example Code and Data Size: These are the sizes for the OS-independent 8684 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8685 debug version of the code includes the debug output trace mechanism and 8686 has a 8687 much larger code and data size. 8688 8689 Previous Release: 8690 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8691 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8692 Current Release: 8693 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 8694 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 8695 8696 2) iASL Compiler/Disassembler and Tools: 8697 8698 iASL: Added compiler support for the _WDG and_WED Microsoft predefined 8699 methods. These objects are defined by "Windows Instrumentation", and are 8700 not 8701 part of the ACPI spec. ACPICA BZ 860. 8702 8703 AcpiExec: added option to disable the memory tracking mechanism. The -dt 8704 option will disable the tracking mechanism, which improves performance 8705 considerably. 8706 8707 AcpiExec: Restructured the command line options into -d (disable) and -e 8708 (enable) options. 8709 8710 ---------------------------------------- 8711 28 April 2010. Summary of changes for version 20100428: 8712 8713 1) ACPI CA Core Subsystem: 8714 8715 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 8716 including FADT-based and GPE Block Devices, execute any _PRW methods in 8717 the 8718 new table, and process any _Lxx/_Exx GPE methods in the new table. Any 8719 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 8720 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 8721 Devices. Provides compatibility with other ACPI implementations. Two new 8722 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 8723 Moore. 8724 8725 Fixed a regression introduced in version 20100331 within the table 8726 manager 8727 where initial table loading could fail. This was introduced in the fix 8728 for 8729 AcpiReallocateRootTable. Also, renamed some of fields in the table 8730 manager 8731 data structures to clarify their meaning and use. 8732 8733 Fixed a possible allocation overrun during internal object copy in 8734 AcpiUtCopySimpleObject. The original code did not correctly handle the 8735 case 8736 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 8737 847. 8738 8739 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 8740 possible access beyond end-of-allocation. Also, now fully validate 8741 descriptor 8742 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 8743 8744 Example Code and Data Size: These are the sizes for the OS-independent 8745 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8746 debug version of the code includes the debug output trace mechanism and 8747 has a 8748 much larger code and data size. 8749 8750 Previous Release: 8751 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8752 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8753 Current Release: 8754 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 8755 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 8756 8757 2) iASL Compiler/Disassembler and Tools: 8758 8759 iASL: Implemented Min/Max/Len/Gran validation for address resource 8760 descriptors. This change implements validation for the address fields 8761 that 8762 are common to all address-type resource descriptors. These checks are 8763 implemented: Checks for valid Min/Max, length within the Min/Max window, 8764 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 8765 per 8766 table 6-40 in the ACPI 4.0a specification. Also split the large 8767 aslrestype1.c 8768 and aslrestype2.c files into five new files. ACPICA BZ 840. 8769 8770 iASL: Added support for the _Wxx predefined names. This support was 8771 missing 8772 and these names were not recognized by the compiler as valid predefined 8773 names. ACPICA BZ 851. 8774 8775 iASL: Added an error for all predefined names that are defined to return 8776 no 8777 value and thus must be implemented as Control Methods. These include all 8778 of 8779 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 8780 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 8781 8782 iASL: Implemented the -ts option to emit hex AML data in ASL format, as 8783 an 8784 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 8785 be 8786 dynamically loaded via the Load() operator. Also cleaned up output for 8787 the 8788 - 8789 ta and -tc options. ACPICA BZ 853. 8790 8791 Tests: Added a new file with examples of extended iASL error checking. 8792 Demonstrates the advanced error checking ability of the iASL compiler. 8793 Available at tests/misc/badcode.asl. 8794 8795 ---------------------------------------- 8796 31 March 2010. Summary of changes for version 20100331: 8797 8798 1) ACPI CA Core Subsystem: 8799 8800 Completed a major update for the GPE support in order to improve support 8801 for 8802 shared GPEs and to simplify both host OS and ACPICA code. Added a 8803 reference 8804 count mechanism to support shared GPEs that require multiple device 8805 drivers. 8806 Several external interfaces have changed. One external interface has been 8807 removed. One new external interface was added. Most of the GPE external 8808 interfaces now use the GPE spinlock instead of the events mutex (and the 8809 Flags parameter for many GPE interfaces has been removed.) See the 8810 updated 8811 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 8812 Rafael 8813 Wysocki. ACPICA BZ 831. 8814 8815 Changed: 8816 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 8817 Removed: 8818 AcpiSetGpeType 8819 New: 8820 AcpiSetGpe 8821 8822 Implemented write support for DataTable operation regions. These regions 8823 are 8824 defined via the DataTableRegion() operator. Previously, only read support 8825 was 8826 implemented. The ACPI specification allows DataTableRegions to be 8827 read/write, 8828 however. 8829 8830 Implemented a new subsystem option to force a copy of the DSDT to local 8831 memory. Optionally copy the entire DSDT to local memory (instead of 8832 simply 8833 mapping it.) There are some (albeit very rare) BIOSs that corrupt or 8834 replace 8835 the original DSDT, creating the need for this option. Default is FALSE, 8836 do 8837 not copy the DSDT. 8838 8839 Implemented detection of a corrupted or replaced DSDT. This change adds 8840 support to detect a DSDT that has been corrupted and/or replaced from 8841 outside 8842 the OS (by firmware). This is typically catastrophic for the system, but 8843 has 8844 been seen on some machines. Once this problem has been detected, the DSDT 8845 copy option can be enabled via system configuration. Lin Ming, Bob Moore. 8846 8847 Fixed two problems with AcpiReallocateRootTable during the root table 8848 copy. 8849 When copying the root table to the new allocation, the length used was 8850 incorrect. The new size was used instead of the current table size, 8851 meaning 8852 too much data was copied. Also, the count of available slots for ACPI 8853 tables 8854 was not set correctly. Alexey Starikovskiy, Bob Moore. 8855 8856 Example Code and Data Size: These are the sizes for the OS-independent 8857 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8858 debug version of the code includes the debug output trace mechanism and 8859 has a 8860 much larger code and data size. 8861 8862 Previous Release: 8863 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8864 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8865 Current Release: 8866 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 8867 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 8868 8869 2) iASL Compiler/Disassembler and Tools: 8870 8871 iASL: Implement limited typechecking for values returned from predefined 8872 control methods. The type of any returned static (unnamed) object is now 8873 validated. For example, Return(1). ACPICA BZ 786. 8874 8875 iASL: Fixed a predefined name object verification regression. Fixes a 8876 problem 8877 introduced in version 20100304. An error is incorrectly generated if a 8878 predefined name is declared as a static named object with a value defined 8879 using the keywords "Zero", "One", or "Ones". Lin Ming. 8880 8881 iASL: Added Windows 7 support for the -g option (get local ACPI tables) 8882 by 8883 reducing the requested registry access rights. ACPICA BZ 842. 8884 8885 Disassembler: fixed a possible fault when generating External() 8886 statements. 8887 Introduced in commit ae7d6fd: Properly handle externals with parent- 8888 prefix 8889 (carat). Fixes a string length allocation calculation. Lin Ming. 8890 8891 ---------------------------------------- 8892 04 March 2010. Summary of changes for version 20100304: 8893 8894 1) ACPI CA Core Subsystem: 8895 8896 Fixed a possible problem with the AML Mutex handling function 8897 AcpiExReleaseMutex where the function could fault under the very rare 8898 condition when the interpreter has blocked, the interpreter lock is 8899 released, 8900 the interpreter is then reentered via the same thread, and attempts to 8901 acquire an AML mutex that was previously acquired. FreeBSD report 140979. 8902 Lin 8903 Ming. 8904 8905 Implemented additional configuration support for the AML "Debug Object". 8906 Output from the debug object can now be enabled via a global variable, 8907 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 8908 debugging. 8909 This debug output is now available in the release version of ACPICA 8910 instead 8911 of just the debug version. Also, the entire debug output module can now 8912 be 8913 configured out of the ACPICA build if desired. One new file added, 8914 executer/exdebug.c. Lin Ming, Bob Moore. 8915 8916 Added header support for the ACPI MCHI table (Management Controller Host 8917 Interface Table). This table was added in ACPI 4.0, but the defining 8918 document 8919 has only recently become available. 8920 8921 Standardized output of integer values for ACPICA warnings/errors. Always 8922 use 8923 0x prefix for hex output, always use %u for unsigned integer decimal 8924 output. 8925 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 8926 400 8927 invocations.) These invocations were converted from the original 8928 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 8929 8930 Example Code and Data Size: These are the sizes for the OS-independent 8931 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8932 debug version of the code includes the debug output trace mechanism and 8933 has a 8934 much larger code and data size. 8935 8936 Previous Release: 8937 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 8938 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 8939 Current Release: 8940 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 8941 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 8942 8943 2) iASL Compiler/Disassembler and Tools: 8944 8945 iASL: Implemented typechecking support for static (non-control method) 8946 predefined named objects that are declared with the Name() operator. For 8947 example, the type of this object is now validated to be of type Integer: 8948 Name(_BBN, 1). This change migrates the compiler to using the core 8949 predefined 8950 name table instead of maintaining a local version. Added a new file, 8951 aslpredef.c. ACPICA BZ 832. 8952 8953 Disassembler: Added support for the ACPI 4.0 MCHI table. 8954 8955 ---------------------------------------- 8956 21 January 2010. Summary of changes for version 20100121: 8957 8958 1) ACPI CA Core Subsystem: 8959 8960 Added the 2010 copyright to all module headers and signons. This affects 8961 virtually every file in the ACPICA core subsystem, the iASL compiler, the 8962 tools/utilities, and the test suites. 8963 8964 Implemented a change to the AcpiGetDevices interface to eliminate 8965 unnecessary 8966 invocations of the _STA method. In the case where a specific _HID is 8967 requested, do not run _STA until a _HID match is found. This eliminates 8968 potentially dozens of _STA calls during a search for a particular 8969 device/HID, 8970 which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 8971 8972 Implemented an additional repair for predefined method return values. 8973 Attempt 8974 to repair unexpected NULL elements within returned Package objects. 8975 Create 8976 an 8977 Integer of value zero, a NULL String, or a zero-length Buffer as 8978 appropriate. 8979 ACPICA BZ 818. Lin Ming, Bob Moore. 8980 8981 Removed the obsolete ACPI_INTEGER data type. This type was introduced as 8982 the 8983 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 8984 (with 8985 64-bit AML integers). It is now obsolete and this change removes it from 8986 the 8987 ACPICA code base, replaced by UINT64. The original typedef has been 8988 retained 8989 for now for compatibility with existing device driver code. ACPICA BZ 8990 824. 8991 8992 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 8993 in 8994 the parse tree object. 8995 8996 Added additional warning options for the gcc-4 generation. Updated the 8997 source 8998 accordingly. This includes some code restructuring to eliminate 8999 unreachable 9000 code, elimination of some gotos, elimination of unused return values, 9001 some 9002 additional casting, and removal of redundant declarations. 9003 9004 Example Code and Data Size: These are the sizes for the OS-independent 9005 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9006 debug version of the code includes the debug output trace mechanism and 9007 has a 9008 much larger code and data size. 9009 9010 Previous Release: 9011 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9012 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9013 Current Release: 9014 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 9015 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 9016 9017 2) iASL Compiler/Disassembler and Tools: 9018 9019 No functional changes for this release. 9020 9021 ---------------------------------------- 9022 14 December 2009. Summary of changes for version 20091214: 9023 9024 1) ACPI CA Core Subsystem: 9025 9026 Enhanced automatic data type conversions for predefined name repairs. 9027 This 9028 change expands the automatic repairs/conversions for predefined name 9029 return 9030 values to make Integers, Strings, and Buffers fully interchangeable. 9031 Also, 9032 a 9033 Buffer can be converted to a Package of Integers if necessary. The 9034 nsrepair.c 9035 module was completely restructured. Lin Ming, Bob Moore. 9036 9037 Implemented automatic removal of null package elements during predefined 9038 name 9039 repairs. This change will automatically remove embedded and trailing NULL 9040 package elements from returned package objects that are defined to 9041 contain 9042 a 9043 variable number of sub-packages. The driver is then presented with a 9044 package 9045 with no null elements to deal with. ACPICA BZ 819. 9046 9047 Implemented a repair for the predefined _FDE and _GTM names. The expected 9048 return value for both names is a Buffer of 5 DWORDs. This repair fixes 9049 two 9050 possible problems (both seen in the field), where a package of integers 9051 is 9052 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 9053 Kim. 9054 9055 Implemented additional module-level code support. This change will 9056 properly 9057 execute module-level code that is not at the root of the namespace (under 9058 a 9059 Device object, etc.). Now executes the code within the current scope 9060 instead 9061 of the root. ACPICA BZ 762. Lin Ming. 9062 9063 Fixed possible mutex acquisition errors when running _REG methods. Fixes 9064 a 9065 problem where mutex errors can occur when running a _REG method that is 9066 in 9067 the same scope as a method-defined operation region or an operation 9068 region 9069 under a module-level IF block. This type of code is rare, so the problem 9070 has 9071 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 9072 9073 Fixed a possible memory leak during module-level code execution. An 9074 object 9075 could be leaked for each block of executed module-level code if the 9076 interpreter slack mode is enabled This change deletes any implicitly 9077 returned 9078 object from the module-level code block. Lin Ming. 9079 9080 Removed messages for successful predefined repair(s). The repair 9081 mechanism 9082 was considered too wordy. Now, messages are only unconditionally emitted 9083 if 9084 the return object cannot be repaired. Existing messages for successful 9085 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 9086 827. 9087 9088 Example Code and Data Size: These are the sizes for the OS-independent 9089 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9090 debug version of the code includes the debug output trace mechanism and 9091 has a 9092 much larger code and data size. 9093 9094 Previous Release: 9095 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9096 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9097 Current Release: 9098 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 9099 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 9100 9101 2) iASL Compiler/Disassembler and Tools: 9102 9103 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 9104 files 9105 were no longer automatically removed at the termination of the compile. 9106 9107 acpiexec: Implemented the -f option to specify default region fill value. 9108 This option specifies the value used to initialize buffers that simulate 9109 operation regions. Default value is zero. Useful for debugging problems 9110 that 9111 depend on a specific initial value for a region or field. 9112 9113 ---------------------------------------- 9114 12 November 2009. Summary of changes for version 20091112: 9115 9116 1) ACPI CA Core Subsystem: 9117 9118 Implemented a post-order callback to AcpiWalkNamespace. The existing 9119 interface only has a pre-order callback. This change adds an additional 9120 parameter for a post-order callback which will be more useful for bus 9121 scans. 9122 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 9123 9124 Modified the behavior of the operation region memory mapping cache for 9125 SystemMemory. Ensure that the memory mappings created for operation 9126 regions 9127 do not cross 4K page boundaries. Crossing a page boundary while mapping 9128 regions can cause kernel warnings on some hosts if the pages have 9129 different 9130 attributes. Such regions are probably BIOS bugs, and this is the 9131 workaround. 9132 Linux BZ 14445. Lin Ming. 9133 9134 Implemented an automatic repair for predefined methods that must return 9135 sorted lists. This change will repair (by sorting) packages returned by 9136 _ALR, 9137 _PSS, and _TSS. Drivers can now assume that the packages are correctly 9138 sorted 9139 and do not contain NULL package elements. Adds one new file, 9140 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 9141 9142 Fixed a possible fault during predefined name validation if a return 9143 Package 9144 object contains NULL elements. Also adds a warning if a NULL element is 9145 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 9146 may 9147 include repair or removal of all such NULL elements where possible. 9148 9149 Implemented additional module-level executable AML code support. This 9150 change 9151 will execute module-level code that is not at the root of the namespace 9152 (under a Device object, etc.) at table load time. Module-level executable 9153 AML 9154 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 9155 9156 Implemented a new internal function to create Integer objects. This 9157 function 9158 simplifies miscellaneous object creation code. ACPICA BZ 823. 9159 9160 Reduced the severity of predefined repair messages, Warning to Info. 9161 Since 9162 the object was successfully repaired, a warning is too severe. Reduced to 9163 an 9164 info message for now. These messages may eventually be changed to debug- 9165 only. 9166 ACPICA BZ 812. 9167 9168 Example Code and Data Size: These are the sizes for the OS-independent 9169 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9170 debug version of the code includes the debug output trace mechanism and 9171 has a 9172 much larger code and data size. 9173 9174 Previous Release: 9175 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9176 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9177 Current Release: 9178 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 9179 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 9180 9181 2) iASL Compiler/Disassembler and Tools: 9182 9183 iASL: Implemented Switch() with While(1) so that Break works correctly. 9184 This 9185 change correctly implements the Switch operator with a surrounding 9186 While(1) 9187 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 9188 9189 iASL: Added a message if a package initializer list is shorter than 9190 package 9191 length. Adds a new remark for a Package() declaration if an initializer 9192 list 9193 exists, but is shorter than the declared length of the package. Although 9194 technically legal, this is probably a coding error and it is seen in the 9195 field. ACPICA BZ 815. Lin Ming, Bob Moore. 9196 9197 iASL: Fixed a problem where the compiler could fault after the maximum 9198 number 9199 of errors was reached (200). 9200 9201 acpixtract: Fixed a possible warning for pointer cast if the compiler 9202 warning 9203 level set very high. 9204 9205 ---------------------------------------- 9206 13 October 2009. Summary of changes for version 20091013: 9207 9208 1) ACPI CA Core Subsystem: 9209 9210 Fixed a problem where an Operation Region _REG method could be executed 9211 more 9212 than once. If a custom address space handler is installed by the host 9213 before 9214 the "initialize operation regions" phase of the ACPICA initialization, 9215 any 9216 _REG methods for that address space could be executed twice. This change 9217 fixes the problem. ACPICA BZ 427. Lin Ming. 9218 9219 Fixed a possible memory leak for the Scope() ASL operator. When the exact 9220 invocation of "Scope(\)" is executed (change scope to root), one internal 9221 operand object was leaked. Lin Ming. 9222 9223 Implemented a run-time repair for the _MAT predefined method. If the _MAT 9224 return value is defined as a Field object in the AML, and the field 9225 size is less than or equal to the default width of an integer (32 or 9226 64),_MAT 9227 can incorrectly return an Integer instead of a Buffer. ACPICA now 9228 automatically repairs this problem. ACPICA BZ 810. 9229 9230 Implemented a run-time repair for the _BIF and _BIX predefined methods. 9231 The 9232 "OEM Information" field is often incorrectly returned as an Integer with 9233 value zero if the field is not supported by the platform. This is due to 9234 an 9235 ambiguity in the ACPI specification. The field should always be a string. 9236 ACPICA now automatically repairs this problem by returning a NULL string 9237 within the returned Package. ACPICA BZ 807. 9238 9239 Example Code and Data Size: These are the sizes for the OS-independent 9240 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9241 debug version of the code includes the debug output trace mechanism and 9242 has a 9243 much larger code and data size. 9244 9245 Previous Release: 9246 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9247 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9248 Current Release: 9249 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 9250 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 9251 9252 2) iASL Compiler/Disassembler and Tools: 9253 9254 Disassembler: Fixed a problem where references to external symbols that 9255 contained one or more parent-prefixes (carats) were not handled 9256 correctly, 9257 possibly causing a fault. ACPICA BZ 806. Lin Ming. 9258 9259 Disassembler: Restructured the code so that all functions that handle 9260 external symbols are in a single module. One new file is added, 9261 common/dmextern.c. 9262 9263 AML Debugger: Added a max count argument for the Batch command (which 9264 executes multiple predefined methods within the namespace.) 9265 9266 iASL: Updated the compiler documentation (User Reference.) Available at 9267 http://www.acpica.org/documentation/. ACPICA BZ 750. 9268 9269 AcpiXtract: Updated for Lint and other formatting changes. Close all open 9270 files. 9271 9272 ---------------------------------------- 9273 03 September 2009. Summary of changes for version 20090903: 9274 9275 1) ACPI CA Core Subsystem: 9276 9277 For Windows Vista compatibility, added the automatic execution of an _INI 9278 method located at the namespace root (\_INI). This method is executed at 9279 table load time. This support is in addition to the automatic execution 9280 of 9281 \_SB._INI. Lin Ming. 9282 9283 Fixed a possible memory leak in the interpreter for AML package objects 9284 if 9285 the package initializer list is longer than the defined size of the 9286 package. 9287 This apparently can only happen if the BIOS changes the package size on 9288 the 9289 fly (seen in a _PSS object), as ASL compilers do not allow this. The 9290 interpreter will truncate the package to the defined size (and issue an 9291 error 9292 message), but previously could leave the extra objects undeleted if they 9293 were 9294 pre-created during the argument processing (such is the case if the 9295 package 9296 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 9297 9298 Fixed a problem seen when a Buffer or String is stored to itself via ASL. 9299 This has been reported in the field. Previously, ACPICA would zero out 9300 the 9301 buffer/string. Now, the operation is treated as a noop. Provides Windows 9302 compatibility. ACPICA BZ 803. Lin Ming. 9303 9304 Removed an extraneous error message for ASL constructs of the form 9305 Store(LocalX,LocalX) when LocalX is uninitialized. These curious 9306 statements 9307 are seen in many BIOSs and are once again treated as NOOPs and no error 9308 is 9309 emitted when they are encountered. ACPICA BZ 785. 9310 9311 Fixed an extraneous warning message if a _DSM reserved method returns a 9312 Package object. _DSM can return any type of object, so validation on the 9313 return type cannot be performed. ACPICA BZ 802. 9314 9315 Example Code and Data Size: These are the sizes for the OS-independent 9316 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9317 debug version of the code includes the debug output trace mechanism and 9318 has a 9319 much larger code and data size. 9320 9321 Previous Release: 9322 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9323 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9324 Current Release: 9325 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 9326 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 9327 9328 2) iASL Compiler/Disassembler and Tools: 9329 9330 iASL: Fixed a problem with the use of the Alias operator and Resource 9331 Templates. The correct alias is now constructed and no error is emitted. 9332 ACPICA BZ 738. 9333 9334 iASL: Implemented the -I option to specify additional search directories 9335 for 9336 include files. Allows multiple additional search paths for include files. 9337 Directories are searched in the order specified on the command line 9338 (after 9339 the local directory is searched.) ACPICA BZ 800. 9340 9341 iASL: Fixed a problem where the full pathname for include files was not 9342 emitted for warnings/errors. This caused the IDE support to not work 9343 properly. ACPICA BZ 765. 9344 9345 iASL: Implemented the -@ option to specify a Windows-style response file 9346 containing additional command line options. ACPICA BZ 801. 9347 9348 AcpiExec: Added support to load multiple AML files simultaneously (such 9349 as 9350 a 9351 DSDT and multiple SSDTs). Also added support for wildcards within the AML 9352 pathname. These features allow all machine tables to be easily loaded and 9353 debugged together. ACPICA BZ 804. 9354 9355 Disassembler: Added missing support for disassembly of HEST table Error 9356 Bank 9357 subtables. 9358 9359 ---------------------------------------- 9360 30 July 2009. Summary of changes for version 20090730: 9361 9362 The ACPI 4.0 implementation for ACPICA is complete with this release. 9363 9364 1) ACPI CA Core Subsystem: 9365 9366 ACPI 4.0: Added header file support for all new and changed ACPI tables. 9367 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 9368 new 9369 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 9370 BERT, 9371 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 9372 There 9373 have been some ACPI 4.0 changes to other existing tables. Split the large 9374 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 9375 9376 ACPI 4.0: Implemented predefined name validation for all new names. There 9377 are 9378 31 new names in ACPI 4.0. The predefined validation module was split into 9379 two 9380 files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 9381 9382 Implemented support for so-called "module-level executable code". This is 9383 executable AML code that exists outside of any control method and is 9384 intended 9385 to be executed at table load time. Although illegal since ACPI 2.0, this 9386 type 9387 of code still exists and is apparently still being created. Blocks of 9388 this 9389 code are now detected and executed as intended. Currently, the code 9390 blocks 9391 must exist under either an If, Else, or While construct; these are the 9392 typical cases seen in the field. ACPICA BZ 762. Lin Ming. 9393 9394 Implemented an automatic dynamic repair for predefined names that return 9395 nested Package objects. This applies to predefined names that are defined 9396 to 9397 return a variable-length Package of sub-packages. If the number of sub- 9398 packages is one, BIOS code is occasionally seen that creates a simple 9399 single 9400 package with no sub-packages. This code attempts to fix the problem by 9401 wrapping a new package object around the existing package. These methods 9402 can 9403 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 9404 BZ 9405 790. 9406 9407 Fixed a regression introduced in 20090625 for the AcpiGetDevices 9408 interface. 9409 The _HID/_CID matching was broken and no longer matched IDs correctly. 9410 ACPICA 9411 BZ 793. 9412 9413 Fixed a problem with AcpiReset where the reset would silently fail if the 9414 register was one of the protected I/O ports. AcpiReset now bypasses the 9415 port 9416 validation mechanism. This may eventually be driven into the 9417 AcpiRead/Write 9418 interfaces. 9419 9420 Fixed a regression related to the recent update of the AcpiRead/Write 9421 interfaces. A sleep/suspend could fail if the optional PM2 Control 9422 register 9423 does not exist during an attempt to write the Bus Master Arbitration bit. 9424 (However, some hosts already delete the code that writes this bit, and 9425 the 9426 code may in fact be obsolete at this date.) ACPICA BZ 799. 9427 9428 Fixed a problem where AcpiTerminate could fault if inadvertently called 9429 twice 9430 in succession. ACPICA BZ 795. 9431 9432 Example Code and Data Size: These are the sizes for the OS-independent 9433 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9434 debug version of the code includes the debug output trace mechanism and 9435 has a 9436 much larger code and data size. 9437 9438 Previous Release: 9439 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9440 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9441 Current Release: 9442 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 9443 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 9444 9445 2) iASL Compiler/Disassembler and Tools: 9446 9447 ACPI 4.0: Implemented disassembler support for all new ACPI tables and 9448 changes to existing tables. ACPICA BZ 775. 9449 9450 ---------------------------------------- 9451 25 June 2009. Summary of changes for version 20090625: 9452 9453 The ACPI 4.0 Specification was released on June 16 and is available at 9454 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 9455 continue for the next few releases. 9456 9457 1) ACPI CA Core Subsystem: 9458 9459 ACPI 4.0: Implemented interpreter support for the IPMI operation region 9460 address space. Includes support for bi-directional data buffers and an 9461 IPMI 9462 address space handler (to be installed by an IPMI device driver.) ACPICA 9463 BZ 9464 773. Lin Ming. 9465 9466 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 9467 Includes 9468 support in both the header files and the disassembler. 9469 9470 Completed a major update for the AcpiGetObjectInfo external interface. 9471 Changes include: 9472 - Support for variable, unlimited length HID, UID, and CID strings. 9473 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 9474 etc.) 9475 - Call the _SxW power methods on behalf of a device object. 9476 - Determine if a device is a PCI root bridge. 9477 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 9478 These changes will require an update to all callers of this interface. 9479 See 9480 the updated ACPICA Programmer Reference for details. One new source file 9481 has 9482 been added - utilities/utids.c. ACPICA BZ 368, 780. 9483 9484 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 9485 transfers. The Value parameter has been extended from 32 bits to 64 bits 9486 in 9487 order to support new ACPI 4.0 tables. These changes will require an 9488 update 9489 to 9490 all callers of these interfaces. See the ACPICA Programmer Reference for 9491 details. ACPICA BZ 768. 9492 9493 Fixed several problems with AcpiAttachData. The handler was not invoked 9494 when 9495 the host node was deleted. The data sub-object was not automatically 9496 deleted 9497 when the host node was deleted. The interface to the handler had an 9498 unused 9499 parameter, this was removed. ACPICA BZ 778. 9500 9501 Enhanced the function that dumps ACPI table headers. All non-printable 9502 characters in the string fields are now replaced with '?' (Signature, 9503 OemId, 9504 OemTableId, and CompilerId.) ACPI tables with non-printable characters in 9505 these fields are occasionally seen in the field. ACPICA BZ 788. 9506 9507 Fixed a problem with predefined method repair code where the code that 9508 attempts to repair/convert an object of incorrect type is only executed 9509 on 9510 the first time the predefined method is called. The mechanism that 9511 disables 9512 warnings on subsequent calls was interfering with the repair mechanism. 9513 ACPICA BZ 781. 9514 9515 Fixed a possible memory leak in the predefined validation/repair code 9516 when 9517 a 9518 buffer is automatically converted to an expected string object. 9519 9520 Removed obsolete 16-bit files from the distribution and from the current 9521 git 9522 tree head. ACPICA BZ 776. 9523 9524 Example Code and Data Size: These are the sizes for the OS-independent 9525 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9526 debug version of the code includes the debug output trace mechanism and 9527 has a 9528 much larger code and data size. 9529 9530 Previous Release: 9531 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9532 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9533 Current Release: 9534 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 9535 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 9536 9537 2) iASL Compiler/Disassembler and Tools: 9538 9539 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 9540 operation region keyword. ACPICA BZ 771, 772. Lin Ming. 9541 9542 ACPI 4.0: iASL - implemented compile-time validation support for all new 9543 predefined names and control methods (31 total). ACPICA BZ 769. 9544 9545 ---------------------------------------- 9546 21 May 2009. Summary of changes for version 20090521: 9547 9548 1) ACPI CA Core Subsystem: 9549 9550 Disabled the preservation of the SCI enable bit in the PM1 control 9551 register. 9552 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 9553 to 9554 be 9555 a "preserved" bit - "OSPM always preserves this bit position", section 9556 4.7.3.2.1. However, some machines fail if this bit is in fact preserved 9557 because the bit needs to be explicitly set by the OS as a workaround. No 9558 machines fail if the bit is not preserved. Therefore, ACPICA no longer 9559 attempts to preserve this bit. 9560 9561 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 9562 incorrectly formed _PRT package could cause a fault. Added validation to 9563 ensure that each package element is actually a sub-package. 9564 9565 Implemented a new interface to install or override a single control 9566 method, 9567 AcpiInstallMethod. This interface is useful when debugging in order to 9568 repair 9569 an existing method or to install a missing method without having to 9570 override 9571 the entire ACPI table. See the ACPICA Programmer Reference for use and 9572 examples. Lin Ming, Bob Moore. 9573 9574 Fixed several reference count issues with the DdbHandle object that is 9575 created from a Load or LoadTable operator. Prevent premature deletion of 9576 the 9577 object. Also, mark the object as invalid once the table has been 9578 unloaded. 9579 This is needed because the handle itself may not be deleted after the 9580 table 9581 unload, depending on whether it has been stored in a named object by the 9582 caller. Lin Ming. 9583 9584 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 9585 mutexes of the same sync level are acquired but then not released in 9586 strict 9587 opposite order, the internally maintained Current Sync Level becomes 9588 confused 9589 and can cause subsequent execution errors. ACPICA BZ 471. 9590 9591 Changed the allowable release order for ASL mutex objects. The ACPI 4.0 9592 specification has been changed to make the SyncLevel for mutex objects 9593 more 9594 useful. When releasing a mutex, the SyncLevel of the mutex must now be 9595 the 9596 same as the current sync level. This makes more sense than the previous 9597 rule 9598 (SyncLevel less than or equal). This change updates the code to match the 9599 specification. 9600 9601 Fixed a problem with the local version of the AcpiOsPurgeCache function. 9602 The 9603 (local) cache must be locked during all cache object deletions. Andrew 9604 Baumann. 9605 9606 Updated the Load operator to use operation region interfaces. This 9607 replaces 9608 direct memory mapping with region access calls. Now, all region accesses 9609 go 9610 through the installed region handler as they should. 9611 9612 Simplified and optimized the NsGetNextNode function. Reduced parameter 9613 count 9614 and reduced code for this frequently used function. 9615 9616 Example Code and Data Size: These are the sizes for the OS-independent 9617 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9618 debug version of the code includes the debug output trace mechanism and 9619 has a 9620 much larger code and data size. 9621 9622 Previous Release: 9623 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9624 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9625 Current Release: 9626 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 9627 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 9628 9629 2) iASL Compiler/Disassembler and Tools: 9630 9631 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 9632 problems 9633 with sub-table disassembly and handling invalid sub-tables. Attempt 9634 recovery 9635 after an invalid sub-table ID. 9636 9637 ---------------------------------------- 9638 22 April 2009. Summary of changes for version 20090422: 9639 9640 1) ACPI CA Core Subsystem: 9641 9642 Fixed a compatibility issue with the recently released I/O port 9643 protection 9644 mechanism. For windows compatibility, 1) On a port protection violation, 9645 simply ignore the request and do not return an exception (allow the 9646 control 9647 method to continue execution.) 2) If only part of the request overlaps a 9648 protected port, read/write the individual ports that are not protected. 9649 Linux 9650 BZ 13036. Lin Ming 9651 9652 Enhanced the execution of the ASL/AML BreakPoint operator so that it 9653 actually 9654 breaks into the AML debugger if the debugger is present. This matches the 9655 ACPI-defined behavior. 9656 9657 Fixed several possible warnings related to the use of the configurable 9658 ACPI_THREAD_ID. This type can now be configured as either an integer or a 9659 pointer with no warnings. Also fixes several warnings in printf-like 9660 statements for the 64-bit build when the type is configured as a pointer. 9661 ACPICA BZ 766, 767. 9662 9663 Fixed a number of possible warnings when compiling with gcc 4+ (depending 9664 on 9665 warning options.) Examples include printf formats, aliasing, unused 9666 globals, 9667 missing prototypes, missing switch default statements, use of non-ANSI 9668 library functions, use of non-ANSI constructs. See generate/unix/Makefile 9669 for 9670 a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 9671 9672 Example Code and Data Size: These are the sizes for the OS-independent 9673 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9674 debug version of the code includes the debug output trace mechanism and 9675 has a 9676 much larger code and data size. 9677 9678 Previous Release: 9679 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9680 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9681 Current Release: 9682 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 9683 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 9684 9685 2) iASL Compiler/Disassembler and Tools: 9686 9687 iASL: Fixed a generation warning from Bison 2.3 and fixed several 9688 warnings 9689 on 9690 the 64-bit build. 9691 9692 iASL: Fixed a problem where the Unix/Linux versions of the compiler could 9693 not 9694 correctly digest Windows/DOS formatted files (with CR/LF). 9695 9696 iASL: Added a new option for "quiet mode" (-va) that produces only the 9697 compilation summary, not individual errors and warnings. Useful for large 9698 batch compilations. 9699 9700 AcpiExec: Implemented a new option (-z) to enable a forced 9701 semaphore/mutex 9702 timeout that can be used to detect hang conditions during execution of 9703 AML 9704 code (includes both internal semaphores and AML-defined mutexes and 9705 events.) 9706 9707 Added new makefiles for the generation of acpica in a generic unix-like 9708 environment. These makefiles are intended to generate the acpica tools 9709 and 9710 utilities from the original acpica git source tree structure. 9711 9712 Test Suites: Updated and cleaned up the documentation files. Updated the 9713 copyrights to 2009, affecting all source files. Use the new version of 9714 iASL 9715 with quiet mode. Increased the number of available semaphores in the 9716 Windows 9717 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 9718 added 9719 an alternate implementation of the semaphore timeout to allow aslts to 9720 execute fully on Cygwin. 9721 9722 ---------------------------------------- 9723 20 March 2009. Summary of changes for version 20090320: 9724 9725 1) ACPI CA Core Subsystem: 9726 9727 Fixed a possible race condition between AcpiWalkNamespace and dynamic 9728 table 9729 unloads. Added a reader/writer locking mechanism to allow multiple 9730 concurrent 9731 namespace walks (readers), but block a dynamic table unload until it can 9732 gain 9733 exclusive write access to the namespace. This fixes a problem where a 9734 table 9735 unload could (possibly catastrophically) delete the portion of the 9736 namespace 9737 that is currently being examined by a walk. Adds a new file, utlock.c, 9738 that 9739 implements the reader/writer lock mechanism. ACPICA BZ 749. 9740 9741 Fixed a regression introduced in version 20090220 where a change to the 9742 FADT 9743 handling could cause the ACPICA subsystem to access non-existent I/O 9744 ports. 9745 9746 Modified the handling of FADT register and table (FACS/DSDT) addresses. 9747 The 9748 FADT can contain both 32-bit and 64-bit versions of these addresses. 9749 Previously, the 64-bit versions were favored, meaning that if both 32 and 9750 64 9751 versions were valid, but not equal, the 64-bit version was used. This was 9752 found to cause some machines to fail. Now, in this case, the 32-bit 9753 version 9754 is used instead. This now matches the Windows behavior. 9755 9756 Implemented a new mechanism to protect certain I/O ports. Provides 9757 Microsoft 9758 compatibility and protects the standard PC I/O ports from access via AML 9759 code. Adds a new file, hwvalid.c 9760 9761 Fixed a possible extraneous warning message from the FADT support. The 9762 message warns of a 32/64 length mismatch between the legacy and GAS 9763 definitions for a register. 9764 9765 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 9766 is 9767 made obsolete by the port protection mechanism above. It was previously 9768 used 9769 to validate the entire address range of an operation region, which could 9770 be 9771 incorrect if the range included illegal ports, but fields within the 9772 operation region did not actually access those ports. Validation is now 9773 performed on a per-field basis instead of the entire region. 9774 9775 Modified the handling of the PM1 Status Register ignored bit (bit 11.) 9776 Ignored bits must be "preserved" according to the ACPI spec. Usually, 9777 this 9778 means a read/modify/write when writing to the register. However, for 9779 status 9780 registers, writing a one means clear the event. Writing a zero means 9781 preserve 9782 the event (do not clear.) This behavior is clarified in the ACPI 4.0 9783 spec, 9784 and the ACPICA code now simply always writes a zero to the ignored bit. 9785 9786 Modified the handling of ignored bits for the PM1 A/B Control Registers. 9787 As 9788 per the ACPI specification, for the control registers, preserve 9789 (read/modify/write) all bits that are defined as either reserved or 9790 ignored. 9791 9792 Updated the handling of write-only bits in the PM1 A/B Control Registers. 9793 When reading the register, zero the write-only bits as per the ACPI spec. 9794 ACPICA BZ 443. Lin Ming. 9795 9796 Removed "Linux" from the list of supported _OSI strings. Linux no longer 9797 wants to reply true to this request. The Windows strings are the only 9798 paths 9799 through the AML that are tested and known to work properly. 9800 9801 Previous Release: 9802 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9803 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9804 Current Release: 9805 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 9806 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 9807 9808 2) iASL Compiler/Disassembler and Tools: 9809 9810 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 9811 and 9812 aetables.c 9813 9814 ---------------------------------------- 9815 20 February 2009. Summary of changes for version 20090220: 9816 9817 1) ACPI CA Core Subsystem: 9818 9819 Optimized the ACPI register locking. Removed locking for reads from the 9820 ACPI 9821 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 9822 is 9823 not required when reading the single-bit registers. The 9824 AcpiGetRegisterUnlocked function is no longer needed and has been 9825 removed. 9826 This will improve performance for reads on these registers. ACPICA BZ 9827 760. 9828 9829 Fixed the parameter validation for AcpiRead/Write. Now return 9830 AE_BAD_PARAMETER if the input register pointer is null, and 9831 AE_BAD_ADDRESS 9832 if 9833 the register has an address of zero. Previously, these cases simply 9834 returned 9835 AE_OK. For optional registers such as PM1B status/enable/control, the 9836 caller 9837 should check for a valid register address before calling. ACPICA BZ 748. 9838 9839 Renamed the external ACPI bit register access functions. Renamed 9840 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 9841 functions. The new names are AcpiReadBitRegister and 9842 AcpiWriteBitRegister. 9843 Also, restructured the code for these functions by simplifying the code 9844 path 9845 and condensing duplicate code to reduce code size. 9846 9847 Added new functions to transparently handle the possibly split PM1 A/B 9848 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 9849 functions 9850 now handle the split registers for PM1 Status, Enable, and Control. 9851 ACPICA 9852 BZ 9853 746. 9854 9855 Added a function to handle the PM1 control registers, 9856 AcpiHwWritePm1Control. 9857 This function writes both of the PM1 control registers (A/B). These 9858 registers 9859 are different than the PM1 A/B status and enable registers in that 9860 different 9861 values can be written to the A/B registers. Most notably, the SLP_TYP 9862 bits 9863 can be different, as per the values returned from the _Sx predefined 9864 methods. 9865 9866 Removed an extra register write within AcpiHwClearAcpiStatus. This 9867 function 9868 was writing an optional PM1B status register twice. The existing call to 9869 the 9870 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 9871 A/B 9872 register. ACPICA BZ 751. 9873 9874 Split out the PM1 Status registers from the FADT. Added new globals for 9875 these 9876 registers (A/B), similar to the way the PM1 Enable registers are handled. 9877 Instead of overloading the FADT Event Register blocks. This makes the 9878 code 9879 clearer and less prone to error. 9880 9881 Fixed the warning message for when the platform contains too many ACPI 9882 tables 9883 for the default size of the global root table data structure. The 9884 calculation 9885 for the truncation value was incorrect. 9886 9887 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 9888 obsolete macro, since it is now a simple reference to ->common.type. 9889 There 9890 were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 9891 9892 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 9893 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 9894 simply SLEEP_TYPE. ACPICA BZ 754. 9895 9896 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 9897 function is only needed on 64-bit host operating systems and is thus not 9898 included for 32-bit hosts. 9899 9900 Debug output: print the input and result for invocations of the _OSI 9901 reserved 9902 control method via the ACPI_LV_INFO debug level. Also, reduced some of 9903 the 9904 verbosity of this debug level. Len Brown. 9905 9906 Example Code and Data Size: These are the sizes for the OS-independent 9907 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9908 debug version of the code includes the debug output trace mechanism and 9909 has a 9910 much larger code and data size. 9911 9912 Previous Release: 9913 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9914 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9915 Current Release: 9916 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 9917 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 9918 9919 2) iASL Compiler/Disassembler and Tools: 9920 9921 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 9922 various legal performance profiles. 9923 9924 ---------------------------------------- 9925 23 January 2009. Summary of changes for version 20090123: 9926 9927 1) ACPI CA Core Subsystem: 9928 9929 Added the 2009 copyright to all module headers and signons. This affects 9930 virtually every file in the ACPICA core subsystem, the iASL compiler, and 9931 the tools/utilities. 9932 9933 Implemented a change to allow the host to override any ACPI table, 9934 including 9935 dynamically loaded tables. Previously, only the DSDT could be replaced by 9936 the 9937 host. With this change, the AcpiOsTableOverride interface is called for 9938 each 9939 table found in the RSDT/XSDT during ACPICA initialization, and also 9940 whenever 9941 a table is dynamically loaded via the AML Load operator. 9942 9943 Updated FADT flag definitions, especially the Boot Architecture flags. 9944 9945 Debugger: For the Find command, automatically pad the input ACPI name 9946 with 9947 underscores if the name is shorter than 4 characters. This enables a 9948 match 9949 with the actual namespace entry which is itself padded with underscores. 9950 9951 Example Code and Data Size: These are the sizes for the OS-independent 9952 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9953 debug version of the code includes the debug output trace mechanism and 9954 has a 9955 much larger code and data size. 9956 9957 Previous Release: 9958 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 9959 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 9960 Current Release: 9961 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 9962 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 9963 9964 2) iASL Compiler/Disassembler and Tools: 9965 9966 Fix build error under Bison-2.4. 9967 9968 Disassembler: Enhanced FADT support. Added decoding of the Boot 9969 Architecture 9970 flags. Now decode all flags, regardless of the FADT version. Flag output 9971 includes the FADT version which first defined each flag. 9972 9973 The iASL -g option now dumps the RSDT to a file (in addition to the FADT 9974 and 9975 DSDT). Windows only. 9976 9977 ---------------------------------------- 9978 04 December 2008. Summary of changes for version 20081204: 9979 9980 1) ACPI CA Core Subsystem: 9981 9982 The ACPICA Programmer Reference has been completely updated and revamped 9983 for 9984 this release. This includes updates to the external interfaces, OSL 9985 interfaces, the overview sections, and the debugger reference. 9986 9987 Several new ACPICA interfaces have been implemented and documented in the 9988 programmer reference: 9989 AcpiReset - Writes the reset value to the FADT-defined reset register. 9990 AcpiDisableAllGpes - Disable all available GPEs. 9991 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 9992 AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 9993 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 9994 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 9995 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 9996 9997 Most of the public ACPI hardware-related interfaces have been moved to a 9998 new 9999 file, components/hardware/hwxface.c 10000 10001 Enhanced the FADT parsing and low-level ACPI register access: The ACPI 10002 register lengths within the FADT are now used, and the low level ACPI 10003 register access no longer hardcodes the ACPI register lengths. Given that 10004 there may be some risk in actually trusting the FADT register lengths, a 10005 run- 10006 time option was added to fall back to the default hardcoded lengths if 10007 the 10008 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 10009 option is set to true for now, and a warning is issued if a suspicious 10010 FADT 10011 register length is overridden with the default value. 10012 10013 Fixed a reference count issue in NsRepairObject. This problem was 10014 introduced 10015 in version 20081031 as part of a fix to repair Buffer objects within 10016 Packages. Lin Ming. 10017 10018 Added semaphore support to the Linux/Unix application OS-services layer 10019 (OSL). ACPICA BZ 448. Lin Ming. 10020 10021 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 10022 will 10023 be implemented in the OSL, or will binary semaphores be used instead. 10024 10025 Example Code and Data Size: These are the sizes for the OS-independent 10026 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10027 debug version of the code includes the debug output trace mechanism and 10028 has a 10029 much larger code and data size. 10030 10031 Previous Release: 10032 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10033 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10034 Current Release: 10035 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 10036 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 10037 10038 2) iASL Compiler/Disassembler and Tools: 10039 10040 iASL: Completed the '-e' option to include additional ACPI tables in 10041 order 10042 to 10043 aid with disassembly and External statement generation. ACPICA BZ 742. 10044 Lin 10045 Ming. 10046 10047 iASL: Removed the "named object in while loop" error. The compiler cannot 10048 determine how many times a loop will execute. ACPICA BZ 730. 10049 10050 Disassembler: Implemented support for FADT revision 2 (MS extension). 10051 ACPICA 10052 BZ 743. 10053 10054 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 10055 MCFG). 10056 10057 ---------------------------------------- 10058 31 October 2008. Summary of changes for version 20081031: 10059 10060 1) ACPI CA Core Subsystem: 10061 10062 Restructured the ACPICA header files into public/private. acpi.h now 10063 includes 10064 only the "public" acpica headers. All other acpica headers are "private" 10065 and 10066 should not be included by acpica users. One new file, accommon.h is used 10067 to 10068 include the commonly used private headers for acpica code generation. 10069 Future 10070 plans include moving all private headers to a new subdirectory. 10071 10072 Implemented an automatic Buffer->String return value conversion for 10073 predefined ACPI methods. For these methods (such as _BIF), added 10074 automatic 10075 conversion for return objects that are required to be a String, but a 10076 Buffer 10077 was found instead. This can happen when reading string battery data from 10078 an 10079 operation region, because it used to be difficult to convert the data 10080 from 10081 buffer to string from within the ASL. Ensures that the host OS is 10082 provided 10083 with a valid null-terminated string. Linux BZ 11822. 10084 10085 Updated the FACS waking vector interfaces. Split 10086 AcpiSetFirmwareWakingVector 10087 into two: one for the 32-bit vector, another for the 64-bit vector. This 10088 is 10089 required because the host OS must setup the wake much differently for 10090 each 10091 vector (real vs. protected mode, etc.) and the interface itself should 10092 not 10093 be 10094 deciding which vector to use. Also, eliminated the 10095 GetFirmwareWakingVector 10096 interface, as it served no purpose (only the firmware reads the vector, 10097 OS 10098 only writes the vector.) ACPICA BZ 731. 10099 10100 Implemented a mechanism to escape infinite AML While() loops. Added a 10101 loop 10102 counter to force exit from AML While loops if the count becomes too 10103 large. 10104 This can occur in poorly written AML when the hardware does not respond 10105 within a while loop and the loop does not implement a timeout. The 10106 maximum 10107 loop count is configurable. A new exception code is returned when a loop 10108 is 10109 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 10110 10111 Optimized the execution of AML While loops. Previously, a control state 10112 object was allocated and freed for each execution of the loop. The 10113 optimization is to simply reuse the control state for each iteration. 10114 This 10115 speeds up the raw loop execution time by about 5%. 10116 10117 Enhanced the implicit return mechanism. For Windows compatibility, return 10118 an 10119 implicit integer of value zero for methods that contain no executable 10120 code. 10121 Such methods are seen in the field as stubs (presumably), and can cause 10122 drivers to fail if they expect a return value. Lin Ming. 10123 10124 Allow multiple backslashes as root prefixes in namepaths. In a fully 10125 qualified namepath, allow multiple backslash prefixes. This can happen 10126 (and 10127 is seen in the field) because of the use of a double-backslash in strings 10128 (since backslash is the escape character) causing confusion. ACPICA BZ 10129 739 10130 Lin Ming. 10131 10132 Emit a warning if two different FACS or DSDT tables are discovered in the 10133 FADT. Checks if there are two valid but different addresses for the FACS 10134 and 10135 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 10136 10137 Consolidated the method argument count validation code. Merged the code 10138 that 10139 validates control method argument counts into the predefined validation 10140 module. Eliminates possible multiple warnings for incorrect argument 10141 counts. 10142 10143 Implemented ACPICA example code. Includes code for ACPICA initialization, 10144 handler installation, and calling a control method. Available at 10145 source/tools/examples. 10146 10147 Added a global pointer for FACS table to simplify internal FACS access. 10148 Use 10149 the global pointer instead of using AcpiGetTableByIndex for each FACS 10150 access. 10151 This simplifies the code for the Global Lock and the Firmware Waking 10152 Vector(s). 10153 10154 Example Code and Data Size: These are the sizes for the OS-independent 10155 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10156 debug version of the code includes the debug output trace mechanism and 10157 has a 10158 much larger code and data size. 10159 10160 Previous Release: 10161 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10162 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10163 Current Release: 10164 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 10165 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 10166 10167 2) iASL Compiler/Disassembler and Tools: 10168 10169 iASL: Improved disassembly of external method calls. Added the -e option 10170 to 10171 allow the inclusion of additional ACPI tables to help with the 10172 disassembly 10173 of 10174 method invocations and the generation of external declarations during the 10175 disassembly. Certain external method invocations cannot be disassembled 10176 properly without the actual declaration of the method. Use the -e option 10177 to 10178 include the table where the external method(s) are actually declared. 10179 Most 10180 useful for disassembling SSDTs that make method calls back to the master 10181 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 10182 -d 10183 -e dsdt.aml ssdt1.aml 10184 10185 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 10186 problem where the use of an alias within a namepath would result in a not 10187 found error or cause the compiler to fault. Also now allows forward 10188 references from the Alias operator itself. ACPICA BZ 738. 10189 10190 ---------------------------------------- 10191 26 September 2008. Summary of changes for version 20080926: 10192 10193 1) ACPI CA Core Subsystem: 10194 10195 Designed and implemented a mechanism to validate predefined ACPI methods 10196 and 10197 objects. This code validates the predefined ACPI objects (objects whose 10198 names 10199 start with underscore) that appear in the namespace, at the time they are 10200 evaluated. The argument count and the type of the returned object are 10201 validated against the ACPI specification. The purpose of this validation 10202 is 10203 to detect problems with the BIOS-implemented predefined ACPI objects 10204 before 10205 the results are returned to the ACPI-related drivers. Future enhancements 10206 may 10207 include actual repair of incorrect return objects where possible. Two new 10208 files are nspredef.c and acpredef.h. 10209 10210 Fixed a fault in the AML parser if a memory allocation fails during the 10211 Op 10212 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 10213 10214 Fixed an issue with implicit return compatibility. This change improves 10215 the 10216 implicit return mechanism to be more compatible with the MS interpreter. 10217 Lin 10218 Ming, ACPICA BZ 349. 10219 10220 Implemented support for zero-length buffer-to-string conversions. Allow 10221 zero 10222 length strings during interpreter buffer-to-string conversions. For 10223 example, 10224 during the ToDecimalString and ToHexString operators, as well as implicit 10225 conversions. Fiodor Suietov, ACPICA BZ 585. 10226 10227 Fixed two possible memory leaks in the error exit paths of 10228 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 10229 are 10230 similar in that they use a stack of state objects in order to eliminate 10231 recursion. The stack must be fully unwound and deallocated if an error 10232 occurs. Lin Ming. ACPICA BZ 383. 10233 10234 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 10235 global 10236 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 10237 Moore ACPICA BZ 442. 10238 10239 Removed the obsolete version number in module headers. Removed the 10240 "$Revision" number that appeared in each module header. This version 10241 number 10242 was useful under SourceSafe and CVS, but has no meaning under git. It is 10243 not 10244 only incorrect, it could also be misleading. 10245 10246 Example Code and Data Size: These are the sizes for the OS-independent 10247 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10248 debug version of the code includes the debug output trace mechanism and 10249 has a 10250 much larger code and data size. 10251 10252 Previous Release: 10253 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10254 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10255 Current Release: 10256 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 10257 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 10258 10259 ---------------------------------------- 10260 29 August 2008. Summary of changes for version 20080829: 10261 10262 1) ACPI CA Core Subsystem: 10263 10264 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 10265 Reference. Changes include the elimination of cheating on the Object 10266 field 10267 for the DdbHandle subtype, addition of a reference class field to 10268 differentiate the various reference types (instead of an AML opcode), and 10269 the 10270 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 10271 10272 Reduce an error to a warning for an incorrect method argument count. 10273 Previously aborted with an error if too few arguments were passed to a 10274 control method via the external ACPICA interface. Now issue a warning 10275 instead 10276 and continue. Handles the case where the method inadvertently declares 10277 too 10278 many arguments, but does not actually use the extra ones. Applies mainly 10279 to 10280 the predefined methods. Lin Ming. Linux BZ 11032. 10281 10282 Disallow the evaluation of named object types with no intrinsic value. 10283 Return 10284 AE_TYPE for objects that have no value and therefore evaluation is 10285 undefined: 10286 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 10287 of 10288 these types were allowed, but an exception would be generated at some 10289 point 10290 during the evaluation. Now, the error is generated up front. 10291 10292 Fixed a possible memory leak in the AcpiNsGetExternalPathname function 10293 (nsnames.c). Fixes a leak in the error exit path. 10294 10295 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 10296 debug 10297 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 10298 ACPI_EXCEPTION 10299 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 10300 ACPI_LV_EVENTS. 10301 10302 Removed obsolete and/or unused exception codes from the acexcep.h header. 10303 There is the possibility that certain device drivers may be affected if 10304 they 10305 use any of these exceptions. 10306 10307 The ACPICA documentation has been added to the public git source tree, 10308 under 10309 acpica/documents. Included are the ACPICA programmer reference, the iASL 10310 compiler reference, and the changes.txt release logfile. 10311 10312 Example Code and Data Size: These are the sizes for the OS-independent 10313 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10314 debug version of the code includes the debug output trace mechanism and 10315 has a 10316 much larger code and data size. 10317 10318 Previous Release: 10319 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10320 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10321 Current Release: 10322 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10323 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 10324 10325 2) iASL Compiler/Disassembler and Tools: 10326 10327 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 10328 defines _SCP with 3 arguments. Previous versions defined it with only 1 10329 argument. iASL now allows both definitions. 10330 10331 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 10332 zero- 10333 length subtables when disassembling ACPI tables. Also fixed a couple of 10334 errors where a full 16-bit table type field was not extracted from the 10335 input 10336 properly. 10337 10338 acpisrc: Improve comment counting mechanism for generating source code 10339 statistics. Count first and last lines of multi-line comments as 10340 whitespace, 10341 not comment lines. Handle Linux legal header in addition to standard 10342 acpica 10343 header. 10344 10345 ---------------------------------------- 10346 10347 29 July 2008. Summary of changes for version 20080729: 10348 10349 1) ACPI CA Core Subsystem: 10350 10351 Fix a possible deadlock in the GPE dispatch. Remove call to 10352 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 10353 attempt 10354 to acquire the GPE lock but can deadlock since the GPE lock is already 10355 held 10356 at dispatch time. This code was introduced in version 20060831 as a 10357 response 10358 to Linux BZ 6881 and has since been removed from Linux. 10359 10360 Add a function to dereference returned reference objects. Examines the 10361 return 10362 object from a call to AcpiEvaluateObject. Any Index or RefOf references 10363 are 10364 automatically dereferenced in an attempt to return something useful 10365 (these 10366 reference types cannot be converted into an external ACPI_OBJECT.) 10367 Provides 10368 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 10369 10370 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 10371 subtables for the MADT and one new subtable for the SRAT. Includes 10372 disassembler and AcpiSrc support. Data from the Intel 64 Architecture 10373 x2APIC 10374 Specification, June 2008. 10375 10376 Additional error checking for pathname utilities. Add error check after 10377 all 10378 calls to AcpiNsGetPathnameLength. Add status return from 10379 AcpiNsBuildExternalPath and check after all calls. Add parameter 10380 validation 10381 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 10382 10383 Return status from the global init function AcpiUtGlobalInitialize. This 10384 is 10385 used by both the kernel subsystem and the utilities such as iASL 10386 compiler. 10387 The function could possibly fail when the caches are initialized. Yang 10388 Yi. 10389 10390 Add a function to decode reference object types to strings. Created for 10391 improved error messages. 10392 10393 Improve object conversion error messages. Better error messages during 10394 object 10395 conversion from internal to the external ACPI_OBJECT. Used for external 10396 calls 10397 to AcpiEvaluateObject. 10398 10399 Example Code and Data Size: These are the sizes for the OS-independent 10400 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10401 debug version of the code includes the debug output trace mechanism and 10402 has a 10403 much larger code and data size. 10404 10405 Previous Release: 10406 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10407 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10408 Current Release: 10409 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 10410 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 10411 10412 2) iASL Compiler/Disassembler and Tools: 10413 10414 Debugger: fix a possible hang when evaluating non-methods. Fixes a 10415 problem 10416 introduced in version 20080701. If the object being evaluated (via 10417 execute 10418 command) is not a method, the debugger can hang while trying to obtain 10419 non- 10420 existent parameters. 10421 10422 iASL: relax error for using reserved "_T_x" identifiers. These names can 10423 appear in a disassembled ASL file if they were emitted by the original 10424 compiler. Instead of issuing an error or warning and forcing the user to 10425 manually change these names, issue a remark instead. 10426 10427 iASL: error if named object created in while loop. Emit an error if any 10428 named 10429 object is created within a While loop. If allowed, this code will 10430 generate 10431 a 10432 run-time error on the second iteration of the loop when an attempt is 10433 made 10434 to 10435 create the same named object twice. ACPICA bugzilla 730. 10436 10437 iASL: Support absolute pathnames for include files. Add support for 10438 absolute 10439 pathnames within the Include operator. previously, only relative 10440 pathnames 10441 were supported. 10442 10443 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 10444 Descriptor. 10445 The ACPI spec requires one interrupt minimum. BZ 423 10446 10447 iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 10448 Handles the case for the Interrupt Resource Descriptor where 10449 the ResourceSource argument is omitted but ResourceSourceIndex 10450 is present. Now leave room for the Index. BZ 426 10451 10452 iASL: Prevent error message if CondRefOf target does not exist. Fixes 10453 cases 10454 where an error message is emitted if the target does not exist. BZ 516 10455 10456 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 10457 (get ACPI tables on Windows). This was apparently broken in version 10458 20070919. 10459 10460 AcpiXtract: Handle EOF while extracting data. Correctly handle the case 10461 where 10462 the EOF happens immediately after the last table in the input file. Print 10463 completion message. Previously, no message was displayed in this case. 10464 10465 ---------------------------------------- 10466 01 July 2008. Summary of changes for version 20080701: 10467 10468 0) Git source tree / acpica.org 10469 10470 Fixed a problem where a git-clone from http would not transfer the entire 10471 source tree. 10472 10473 1) ACPI CA Core Subsystem: 10474 10475 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 10476 enable bit. Now performs a read-change-write of the enable register 10477 instead 10478 of simply writing out the cached enable mask. This will prevent 10479 inadvertent 10480 enabling of GPEs if a rogue GPE is received during initialization (before 10481 GPE 10482 handlers are installed.) 10483 10484 Implemented a copy for dynamically loaded tables. Previously, dynamically 10485 loaded tables were simply mapped - but on some machines this memory is 10486 corrupted after suspend. Now copy the table to a local buffer. For the 10487 OpRegion case, added checksum verify. Use the table length from the table 10488 header, not the region length. For the Buffer case, use the table length 10489 also. Dennis Noordsij, Bob Moore. BZ 10734 10490 10491 Fixed a problem where the same ACPI table could not be dynamically loaded 10492 and 10493 unloaded more than once. Without this change, a table cannot be loaded 10494 again 10495 once it has been loaded/unloaded one time. The current mechanism does not 10496 unregister a table upon an unload. During a load, if the same table is 10497 found, 10498 this no longer returns an exception. BZ 722 10499 10500 Fixed a problem where the wrong descriptor length was calculated for the 10501 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 10502 EndTag 10503 are calculated as 12 bytes long, but the actual length in the internal 10504 descriptor is 16 because of the round-up to 8 on the 64-bit build. 10505 Reported 10506 by Linn Crosetto. BZ 728 10507 10508 Fixed a possible memory leak in the Unload operator. The DdbHandle 10509 returned 10510 by Load() did not have its reference count decremented during unload, 10511 leading 10512 to a memory leak. Lin Ming. BZ 727 10513 10514 Fixed a possible memory leak when deleting thermal/processor objects. Any 10515 associated notify handlers (and objects) were not being deleted. Fiodor 10516 Suietov. BZ 506 10517 10518 Fixed the ordering of the ASCII names in the global mutex table to match 10519 the 10520 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 10521 only. 10522 Vegard Nossum. BZ 726 10523 10524 Enhanced the AcpiGetObjectInfo interface to return the number of required 10525 arguments if the object is a control method. Added this call to the 10526 debugger 10527 so the proper number of default arguments are passed to a method. This 10528 prevents a warning when executing methods from AcpiExec. 10529 10530 Added a check for an invalid handle in AcpiGetObjectInfo. Return 10531 AE_BAD_PARAMETER if input handle is invalid. BZ 474 10532 10533 Fixed an extraneous warning from exconfig.c on the 64-bit build. 10534 10535 Example Code and Data Size: These are the sizes for the OS-independent 10536 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10537 debug version of the code includes the debug output trace mechanism and 10538 has a 10539 much larger code and data size. 10540 10541 Previous Release: 10542 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10543 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10544 Current Release: 10545 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 10546 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 10547 10548 2) iASL Compiler/Disassembler and Tools: 10549 10550 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 10551 resource descriptor names. 10552 10553 iASL: Detect invalid ASCII characters in input (windows version). Removed 10554 the 10555 "-CF" flag from the flex compile, enables correct detection of non-ASCII 10556 characters in the input. BZ 441 10557 10558 iASL: Eliminate warning when result of LoadTable is not used. Eliminate 10559 the 10560 "result of operation not used" warning when the DDB handle returned from 10561 LoadTable is not used. The warning is not needed. BZ 590 10562 10563 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 10564 method 10565 to 10566 pass address of table to the AML. Added option to disable OpRegion 10567 simulation 10568 to allow creation of an OpRegion with a real address that was passed to 10569 _CFG. 10570 All of this allows testing of the Load and Unload operators from 10571 AcpiExec. 10572 10573 Debugger: update tables command for unloaded tables. Handle unloaded 10574 tables 10575 and use the standard table header output routine. 10576 10577 ---------------------------------------- 10578 09 June 2008. Summary of changes for version 20080609: 10579 10580 1) ACPI CA Core Subsystem: 10581 10582 Implemented a workaround for reversed _PRT entries. A significant number 10583 of 10584 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 10585 change dynamically detects and repairs this problem. Provides 10586 compatibility 10587 with MS ACPI. BZ 6859 10588 10589 Simplified the internal ACPI hardware interfaces to eliminate the locking 10590 flag parameter from Register Read/Write. Added a new external interface, 10591 AcpiGetRegisterUnlocked. 10592 10593 Fixed a problem where the invocation of a GPE control method could hang. 10594 This 10595 was a regression introduced in 20080514. The new method argument count 10596 validation mechanism can enter an infinite loop when a GPE method is 10597 dispatched. Problem fixed by removing the obsolete code that passed GPE 10598 block 10599 information to the notify handler via the control method parameter 10600 pointer. 10601 10602 Fixed a problem where the _SST execution status was incorrectly returned 10603 to 10604 the caller of AcpiEnterSleepStatePrep. This was a regression introduced 10605 in 10606 20080514. _SST is optional and a NOT_FOUND exception should never be 10607 returned. BZ 716 10608 10609 Fixed a problem where a deleted object could be accessed from within the 10610 AML 10611 parser. This was a regression introduced in version 20080123 as a fix for 10612 the 10613 Unload operator. Lin Ming. BZ 10669 10614 10615 Cleaned up the debug operand dump mechanism. Eliminated unnecessary 10616 operands 10617 and eliminated the use of a negative index in a loop. Operands are now 10618 displayed in the correct order, not backwards. This also fixes a 10619 regression 10620 introduced in 20080514 on 64-bit systems where the elimination of 10621 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 10622 715 10623 10624 Fixed a possible memory leak in EvPciConfigRegionSetup where the error 10625 exit 10626 path did not delete a locally allocated structure. 10627 10628 Updated definitions for the DMAR and SRAT tables to synchronize with the 10629 current specifications. Includes disassembler support. 10630 10631 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 10632 loop termination value was used. Loop terminated on iteration early, 10633 missing 10634 one mutex. Linn Crosetto 10635 10636 Example Code and Data Size: These are the sizes for the OS-independent 10637 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10638 debug version of the code includes the debug output trace mechanism and 10639 has a 10640 much larger code and data size. 10641 10642 Previous Release: 10643 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10644 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10645 Current Release: 10646 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 10647 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 10648 10649 2) iASL Compiler/Disassembler and Tools: 10650 10651 Disassembler: Implemented support for EisaId() within _CID objects. Now 10652 disassemble integer _CID objects back to EisaId invocations, including 10653 multiple integers within _CID packages. Includes single-step support for 10654 debugger also. 10655 10656 Disassembler: Added support for DMAR and SRAT table definition changes. 10657 10658 ---------------------------------------- 10659 14 May 2008. Summary of changes for version 20080514: 10660 10661 1) ACPI CA Core Subsystem: 10662 10663 Fixed a problem where GPEs were enabled too early during the ACPICA 10664 initialization. This could lead to "handler not installed" errors on some 10665 machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 10666 This 10667 ensures that all operation regions and devices throughout the namespace 10668 have 10669 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 10670 10671 Implemented a change to the enter sleep code. Moved execution of the _GTS 10672 method to just before setting sleep enable bit. The execution was moved 10673 from 10674 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 10675 immediately before the SLP_EN bit is set, as per the ACPI specification. 10676 Luming Yu, BZ 1653. 10677 10678 Implemented a fix to disable unknown GPEs (2nd version). Now always 10679 disable 10680 the GPE, even if ACPICA thinks that that it is already disabled. It is 10681 possible that the AML or some other code has enabled the GPE unbeknownst 10682 to 10683 the ACPICA code. 10684 10685 Fixed a problem with the Field operator where zero-length fields would 10686 return 10687 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 10688 ASL 10689 field declarations in Field(), BankField(), and IndexField(). BZ 10606. 10690 10691 Implemented a fix for the Load operator, now load the table at the 10692 namespace 10693 root. This reverts a change introduced in version 20071019. The table is 10694 now 10695 loaded at the namespace root even though this goes against the ACPI 10696 specification. This provides compatibility with other ACPI 10697 implementations. 10698 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 10699 Ming. 10700 10701 Fixed a problem where ACPICA would not Load() tables with unusual 10702 signatures. 10703 Now ignore ACPI table signature for Load() operator. Only "SSDT" is 10704 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 10705 Therefore, signature validation is worthless. Apparently MS ACPI accepts 10706 such 10707 signatures, ACPICA must be compatible. BZ 10454. 10708 10709 Fixed a possible negative array index in AcpiUtValidateException. Added 10710 NULL 10711 fields to the exception string arrays to eliminate a -1 subtraction on 10712 the 10713 SubStatus field. 10714 10715 Updated the debug tracking macros to reduce overall code and data size. 10716 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 10717 instead of pointers to static strings. Jan Beulich and Bob Moore. 10718 10719 Implemented argument count checking in control method invocation via 10720 AcpiEvaluateObject. Now emit an error if too few arguments, warning if 10721 too 10722 many. This applies only to extern programmatic control method execution, 10723 not 10724 method-to-method calls within the AML. Lin Ming. 10725 10726 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 10727 no 10728 longer needed, especially with the removal of 16-bit support. It was 10729 replaced 10730 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 10731 bit 10732 on 10733 32/64-bit platforms is required. 10734 10735 Added the C const qualifier for appropriate string constants -- mostly 10736 MODULE_NAME and printf format strings. Jan Beulich. 10737 10738 Example Code and Data Size: These are the sizes for the OS-independent 10739 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10740 debug version of the code includes the debug output trace mechanism and 10741 has a 10742 much larger code and data size. 10743 10744 Previous Release: 10745 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10746 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10747 Current Release: 10748 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 10749 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 10750 10751 2) iASL Compiler/Disassembler and Tools: 10752 10753 Implemented ACPI table revision ID validation in the disassembler. Zero 10754 is 10755 always invalid. For DSDTs, the ID controls the interpreter integer width. 10756 1 10757 means 32-bit and this is unusual. 2 or greater is 64-bit. 10758 10759 ---------------------------------------- 10760 21 March 2008. Summary of changes for version 20080321: 10761 10762 1) ACPI CA Core Subsystem: 10763 10764 Implemented an additional change to the GPE support in order to suppress 10765 spurious or stray GPEs. The AcpiEvDisableGpe function will now 10766 permanently 10767 disable incoming GPEs that are neither enabled nor disabled -- meaning 10768 that 10769 the GPE is unknown to the system. This should prevent future interrupt 10770 floods 10771 from that GPE. BZ 6217 (Zhang Rui) 10772 10773 Fixed a problem where NULL package elements were not returned to the 10774 AcpiEvaluateObject interface correctly. The element was simply ignored 10775 instead of returning a NULL ACPI_OBJECT package element, potentially 10776 causing 10777 a buffer overflow and/or confusing the caller who expected a fixed number 10778 of 10779 elements. BZ 10132 (Lin Ming, Bob Moore) 10780 10781 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 10782 Dword, 10783 Qword), Field, BankField, and IndexField operators when invoked from 10784 inside 10785 an executing control method. In this case, these operators created 10786 namespace 10787 nodes that were incorrectly left marked as permanent nodes instead of 10788 temporary nodes. This could cause a problem if there is race condition 10789 between an exiting control method and a running namespace walk. (Reported 10790 by 10791 Linn Crosetto) 10792 10793 Fixed a problem where the CreateField and CreateXXXField operators would 10794 incorrectly allow duplicate names (the name of the field) with no 10795 exception 10796 generated. 10797 10798 Implemented several changes for Notify handling. Added support for new 10799 Notify 10800 values (ACPI 2.0+) and improved the Notify debug output. Notify on 10801 PowerResource objects is no longer allowed, as per the ACPI 10802 specification. 10803 (Bob Moore, Zhang Rui) 10804 10805 All Reference Objects returned via the AcpiEvaluateObject interface are 10806 now 10807 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 10808 for 10809 NULL objects - either NULL package elements or unresolved named 10810 references. 10811 10812 Fixed a problem where an extraneous debug message was produced for 10813 package 10814 objects (when debugging enabled). The message "Package List length larger 10815 than NumElements count" is now produced in the correct case, and is now 10816 an 10817 error message rather than a debug message. Added a debug message for the 10818 opposite case, where NumElements is larger than the Package List (the 10819 package 10820 will be padded out with NULL elements as per the ACPI spec.) 10821 10822 Implemented several improvements for the output of the ASL "Debug" object 10823 to 10824 clarify and keep all data for a given object on one output line. 10825 10826 Fixed two size calculation issues with the variable-length Start 10827 Dependent 10828 resource descriptor. 10829 10830 Example Code and Data Size: These are the sizes for the OS-independent 10831 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10832 debug version of the code includes the debug output trace mechanism and 10833 has 10834 a much larger code and data size. 10835 10836 Previous Release: 10837 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10838 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10839 Current Release: 10840 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 10841 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 10842 10843 2) iASL Compiler/Disassembler and Tools: 10844 10845 Fixed a problem with the use of the Switch operator where execution of 10846 the 10847 containing method by multiple concurrent threads could cause an 10848 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 10849 actual Switch opcode, it must be simulated with local named temporary 10850 variables and if/else pairs. The solution chosen was to mark any method 10851 that 10852 uses Switch as Serialized, thus preventing multiple thread entries. BZ 10853 469. 10854 10855 ---------------------------------------- 10856 13 February 2008. Summary of changes for version 20080213: 10857 10858 1) ACPI CA Core Subsystem: 10859 10860 Implemented another MS compatibility design change for GPE/Notify 10861 handling. 10862 GPEs are now cleared/enabled asynchronously to allow all pending notifies 10863 to 10864 complete first. It is expected that the OSL will queue the enable request 10865 behind all pending notify requests (may require changes to the local host 10866 OSL 10867 in AcpiOsExecute). Alexey Starikovskiy. 10868 10869 Fixed a problem where buffer and package objects passed as arguments to a 10870 control method via the external AcpiEvaluateObject interface could cause 10871 an 10872 AE_AML_INTERNAL exception depending on the order and type of operators 10873 executed by the target control method. 10874 10875 Fixed a problem where resource descriptor size optimization could cause a 10876 problem when a _CRS resource template is passed to a _SRS method. The 10877 _SRS 10878 resource template must use the same descriptors (with the same size) as 10879 returned from _CRS. This change affects the following resource 10880 descriptors: 10881 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 10882 9487) 10883 10884 Fixed a problem where a CopyObject to RegionField, BankField, and 10885 IndexField 10886 objects did not perform an implicit conversion as it should. These types 10887 must 10888 retain their initial type permanently as per the ACPI specification. 10889 However, 10890 a CopyObject to all other object types should not perform an implicit 10891 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 10892 10893 Fixed a problem with the AcpiGetDevices interface where the mechanism to 10894 match device CIDs did not examine the entire list of available CIDs, but 10895 instead aborted on the first non-matching CID. Andrew Patterson. 10896 10897 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 10898 was 10899 inadvertently changed to return a 16-bit value instead of a 32-bit value, 10900 truncating the upper dword of a 64-bit value. This macro is only used to 10901 display debug output, so no incorrect calculations were made. Also, 10902 reimplemented the macro so that a 64-bit shift is not performed by 10903 inefficient compilers. 10904 10905 Added missing va_end statements that should correspond with each va_start 10906 statement. 10907 10908 Example Code and Data Size: These are the sizes for the OS-independent 10909 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10910 debug version of the code includes the debug output trace mechanism and 10911 has 10912 a much larger code and data size. 10913 10914 Previous Release: 10915 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10916 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10917 Current Release: 10918 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 10919 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 10920 10921 2) iASL Compiler/Disassembler and Tools: 10922 10923 Implemented full disassembler support for the following new ACPI tables: 10924 BERT, EINJ, and ERST. Implemented partial disassembler support for the 10925 complicated HEST table. These tables support the Windows Hardware Error 10926 Architecture (WHEA). 10927 10928 ---------------------------------------- 10929 23 January 2008. Summary of changes for version 20080123: 10930 10931 1) ACPI CA Core Subsystem: 10932 10933 Added the 2008 copyright to all module headers and signons. This affects 10934 virtually every file in the ACPICA core subsystem, the iASL compiler, and 10935 the tools/utilities. 10936 10937 Fixed a problem with the SizeOf operator when used with Package and 10938 Buffer 10939 objects. These objects have deferred execution for some arguments, and 10940 the 10941 execution is now completed before the SizeOf is executed. This problem 10942 caused 10943 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 10944 BZ 10945 9558 10946 10947 Implemented an enhancement to the interpreter "slack mode". In the 10948 absence 10949 of 10950 an explicit return or an implicitly returned object from the last 10951 executed 10952 opcode, a control method will now implicitly return an integer of value 0 10953 for 10954 Microsoft compatibility. (Lin Ming) BZ 392 10955 10956 Fixed a problem with the Load operator where an exception was not 10957 returned 10958 in 10959 the case where the table is already loaded. (Lin Ming) BZ 463 10960 10961 Implemented support for the use of DDBHandles as an Indexed Reference, as 10962 per 10963 the ACPI spec. (Lin Ming) BZ 486 10964 10965 Implemented support for UserTerm (Method invocation) for the Unload 10966 operator 10967 as per the ACPI spec. (Lin Ming) BZ 580 10968 10969 Fixed a problem with the LoadTable operator where the OemId and 10970 OemTableId 10971 input strings could cause unexpected failures if they were shorter than 10972 the 10973 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 10974 10975 Implemented support for UserTerm (Method invocation) for the Unload 10976 operator 10977 as per the ACPI spec. (Lin Ming) BZ 580 10978 10979 Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 10980 HEST, 10981 IBFT, UEFI, WDAT. Disassembler support is forthcoming. 10982 10983 Example Code and Data Size: These are the sizes for the OS-independent 10984 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10985 debug version of the code includes the debug output trace mechanism and 10986 has 10987 a much larger code and data size. 10988 10989 Previous Release: 10990 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 10991 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 10992 Current Release: 10993 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 10994 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 10995 10996 2) iASL Compiler/Disassembler and Tools: 10997 10998 Implemented support in the disassembler for checksum validation on 10999 incoming 11000 binary DSDTs and SSDTs. If incorrect, a message is displayed within the 11001 table 11002 header dump at the start of the disassembly. 11003 11004 Implemented additional debugging information in the namespace listing 11005 file 11006 created during compilation. In addition to the namespace hierarchy, the 11007 full 11008 pathname to each namespace object is displayed. 11009 11010 Fixed a problem with the disassembler where invalid ACPI tables could 11011 cause 11012 faults or infinite loops. 11013 11014 Fixed an unexpected parse error when using the optional "parameter types" 11015 list in a control method declaration. (Lin Ming) BZ 397 11016 11017 Fixed a problem where two External declarations with the same name did 11018 not 11019 cause an error (Lin Ming) BZ 509 11020 11021 Implemented support for full TermArgs (adding Argx, Localx and method 11022 invocation) for the ParameterData parameter to the LoadTable operator. 11023 (Lin 11024 Ming) BZ 583,587 11025 11026 ---------------------------------------- 11027 19 December 2007. Summary of changes for version 20071219: 11028 11029 1) ACPI CA Core Subsystem: 11030 11031 Implemented full support for deferred execution for the TermArg string 11032 arguments for DataTableRegion. This enables forward references and full 11033 operand resolution for the three string arguments. Similar to 11034 OperationRegion 11035 deferred argument execution.) Lin Ming. BZ 430 11036 11037 Implemented full argument resolution support for the BankValue argument 11038 to 11039 BankField. Previously, only constants were supported, now any TermArg may 11040 be 11041 used. Lin Ming BZ 387, 393 11042 11043 Fixed a problem with AcpiGetDevices where the search of a branch of the 11044 device tree could be terminated prematurely. In accordance with the ACPI 11045 specification, the search down the current branch is terminated if a 11046 device 11047 is both not present and not functional (instead of just not present.) 11048 Yakui 11049 Zhao. 11050 11051 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 11052 if 11053 the underlying AML code changed the GPE enable registers. Now, any 11054 unknown 11055 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 11056 disabled 11057 instead of simply ignored. Rui Zhang. 11058 11059 Fixed a problem with Index Fields where the Index register was 11060 incorrectly 11061 limited to a maximum of 32 bits. Now any size may be used. 11062 11063 Fixed a couple memory leaks associated with "implicit return" objects 11064 when 11065 the AML Interpreter slack mode is enabled. Lin Ming BZ 349 11066 11067 Example Code and Data Size: These are the sizes for the OS-independent 11068 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11069 debug version of the code includes the debug output trace mechanism and 11070 has 11071 a much larger code and data size. 11072 11073 Previous Release: 11074 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11075 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11076 Current Release: 11077 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 11078 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 11079 11080 ---------------------------------------- 11081 14 November 2007. Summary of changes for version 20071114: 11082 11083 1) ACPI CA Core Subsystem: 11084 11085 Implemented event counters for each of the Fixed Events, the ACPI SCI 11086 (interrupt) itself, and control methods executed. Named 11087 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 11088 These 11089 should be useful for debugging and statistics. 11090 11091 Implemented a new external interface, AcpiGetStatistics, to retrieve the 11092 contents of the various event counters. Returns the current values for 11093 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 11094 AcpiMethodCount. The interface can be expanded in the future if new 11095 counters 11096 are added. Device drivers should use this interface rather than access 11097 the 11098 counters directly. 11099 11100 Fixed a problem with the FromBCD and ToBCD operators. With some 11101 compilers, 11102 the ShortDivide function worked incorrectly, causing problems with the 11103 BCD 11104 functions with large input values. A truncation from 64-bit to 32-bit 11105 inadvertently occurred. Internal BZ 435. Lin Ming 11106 11107 Fixed a problem with Index references passed as method arguments. 11108 References 11109 passed as arguments to control methods were dereferenced immediately 11110 (before 11111 control was passed to the called method). The references are now 11112 correctly 11113 passed directly to the called method. BZ 5389. Lin Ming 11114 11115 Fixed a problem with CopyObject used in conjunction with the Index 11116 operator. 11117 The reference was incorrectly dereferenced before the copy. The reference 11118 is 11119 now correctly copied. BZ 5391. Lin Ming 11120 11121 Fixed a problem with Control Method references within Package objects. 11122 These 11123 references are now correctly generated. This completes the package 11124 construction overhaul that began in version 20071019. 11125 11126 Example Code and Data Size: These are the sizes for the OS-independent 11127 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11128 debug version of the code includes the debug output trace mechanism and 11129 has 11130 a much larger code and data size. 11131 11132 Previous Release: 11133 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11134 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11135 Current Release: 11136 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 11137 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 11138 11139 11140 2) iASL Compiler/Disassembler and Tools: 11141 11142 The AcpiExec utility now installs handlers for all of the predefined 11143 Operation Region types. New types supported are: PCI_Config, CMOS, and 11144 PCIBARTarget. 11145 11146 Fixed a problem with the 64-bit version of AcpiExec where the extended 11147 (64- 11148 bit) address fields for the DSDT and FACS within the FADT were not being 11149 used, causing truncation of the upper 32-bits of these addresses. Lin 11150 Ming 11151 and Bob Moore 11152 11153 ---------------------------------------- 11154 19 October 2007. Summary of changes for version 20071019: 11155 11156 1) ACPI CA Core Subsystem: 11157 11158 Fixed a problem with the Alias operator when the target of the alias is a 11159 named ASL operator that opens a new scope -- Scope, Device, 11160 PowerResource, 11161 Processor, and ThermalZone. In these cases, any children of the original 11162 operator could not be accessed via the alias, potentially causing 11163 unexpected 11164 AE_NOT_FOUND exceptions. (BZ 9067) 11165 11166 Fixed a problem with the Package operator where all named references were 11167 created as object references and left otherwise unresolved. According to 11168 the 11169 ACPI specification, a Package can only contain Data Objects or references 11170 to 11171 control methods. The implication is that named references to Data Objects 11172 (Integer, Buffer, String, Package, BufferField, Field) should be resolved 11173 immediately upon package creation. This is the approach taken with this 11174 change. References to all other named objects (Methods, Devices, Scopes, 11175 etc.) are all now properly created as reference objects. (BZ 5328) 11176 11177 Reverted a change to Notify handling that was introduced in version 11178 20070508. This version changed the Notify handling from asynchronous to 11179 fully synchronous (Device driver Notify handling with respect to the 11180 Notify 11181 ASL operator). It was found that this change caused more problems than it 11182 solved and was removed by most users. 11183 11184 Fixed a problem with the Increment and Decrement operators where the type 11185 of 11186 the target object could be unexpectedly and incorrectly changed. (BZ 353) 11187 Lin Ming. 11188 11189 Fixed a problem with the Load and LoadTable operators where the table 11190 location within the namespace was ignored. Instead, the table was always 11191 loaded into the root or current scope. Lin Ming. 11192 11193 Fixed a problem with the Load operator when loading a table from a buffer 11194 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 11195 11196 Fixed a problem with the Debug object where a store of a DdbHandle 11197 reference 11198 object to the Debug object could cause a fault. 11199 11200 Added a table checksum verification for the Load operator, in the case 11201 where 11202 the load is from a buffer. (BZ 578). 11203 11204 Implemented additional parameter validation for the LoadTable operator. 11205 The 11206 length of the input strings SignatureString, OemIdString, and OemTableId 11207 are 11208 now checked for maximum lengths. (BZ 582) Lin Ming. 11209 11210 Example Code and Data Size: These are the sizes for the OS-independent 11211 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11212 debug version of the code includes the debug output trace mechanism and 11213 has 11214 a much larger code and data size. 11215 11216 Previous Release: 11217 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11218 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11219 Current Release: 11220 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 11221 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 11222 11223 11224 2) iASL Compiler/Disassembler: 11225 11226 Fixed a problem where if a single file was specified and the file did not 11227 exist, no error message was emitted. (Introduced with wildcard support in 11228 version 20070917.) 11229 11230 ---------------------------------------- 11231 19 September 2007. Summary of changes for version 20070919: 11232 11233 1) ACPI CA Core Subsystem: 11234 11235 Designed and implemented new external interfaces to install and remove 11236 handlers for ACPI table-related events. Current events that are defined 11237 are 11238 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 11239 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 11240 AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 11241 11242 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 11243 (acpi_serialized option on Linux) could cause some systems to hang during 11244 initialization. (Bob Moore) BZ 8171 11245 11246 Fixed a problem where objects of certain types (Device, ThermalZone, 11247 Processor, PowerResource) can be not found if they are declared and 11248 referenced from within the same control method (Lin Ming) BZ 341 11249 11250 Example Code and Data Size: These are the sizes for the OS-independent 11251 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11252 debug version of the code includes the debug output trace mechanism and 11253 has 11254 a much larger code and data size. 11255 11256 Previous Release: 11257 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11258 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11259 Current Release: 11260 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 11261 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 11262 11263 11264 2) iASL Compiler/Disassembler: 11265 11266 Implemented support to allow multiple files to be compiled/disassembled 11267 in 11268 a 11269 single invocation. This includes command line wildcard support for both 11270 the 11271 Windows and Unix versions of the compiler. This feature simplifies the 11272 disassembly and compilation of multiple ACPI tables in a single 11273 directory. 11274 11275 ---------------------------------------- 11276 08 May 2007. Summary of changes for version 20070508: 11277 11278 1) ACPI CA Core Subsystem: 11279 11280 Implemented a Microsoft compatibility design change for the handling of 11281 the 11282 Notify AML operator. Previously, notify handlers were dispatched and 11283 executed completely asynchronously in a deferred thread. The new design 11284 still executes the notify handlers in a different thread, but the 11285 original 11286 thread that executed the Notify() now waits at a synchronization point 11287 for 11288 the notify handler to complete. Some machines depend on a synchronous 11289 Notify 11290 operator in order to operate correctly. 11291 11292 Implemented support to allow Package objects to be passed as method 11293 arguments to the external AcpiEvaluateObject interface. Previously, this 11294 would return the AE_NOT_IMPLEMENTED exception. This feature had not been 11295 implemented since there were no reserved control methods that required it 11296 until recently. 11297 11298 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 11299 that 11300 contained invalid non-zero values in reserved fields could cause later 11301 failures because these fields have meaning in later revisions of the 11302 FADT. 11303 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 11304 fields 11305 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 11306 11307 Fixed a problem where the Global Lock handle was not properly updated if 11308 a 11309 thread that acquired the Global Lock via executing AML code then 11310 attempted 11311 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 11312 Joe 11313 Liu. 11314 11315 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 11316 could be corrupted if the interrupt being removed was at the head of the 11317 list. Reported by Linn Crosetto. 11318 11319 Example Code and Data Size: These are the sizes for the OS-independent 11320 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11321 debug version of the code includes the debug output trace mechanism and 11322 has 11323 a much larger code and data size. 11324 11325 Previous Release: 11326 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11327 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11328 Current Release: 11329 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 11330 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 11331 11332 ---------------------------------------- 11333 20 March 2007. Summary of changes for version 20070320: 11334 11335 1) ACPI CA Core Subsystem: 11336 11337 Implemented a change to the order of interpretation and evaluation of AML 11338 operand objects within the AML interpreter. The interpreter now evaluates 11339 operands in the order that they appear in the AML stream (and the 11340 corresponding ASL code), instead of in the reverse order (after the 11341 entire 11342 operand list has been parsed). The previous behavior caused several 11343 subtle 11344 incompatibilities with the Microsoft AML interpreter as well as being 11345 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 11346 11347 Implemented a change to the ACPI Global Lock support. All interfaces to 11348 the 11349 global lock now allow the same thread to acquire the lock multiple times. 11350 This affects the AcpiAcquireGlobalLock external interface to the global 11351 lock 11352 as well as the internal use of the global lock to support AML fields -- a 11353 control method that is holding the global lock can now simultaneously 11354 access 11355 AML fields that require global lock protection. Previously, in both 11356 cases, 11357 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 11358 to 11359 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 11360 Controller. There is no change to the behavior of the AML Acquire 11361 operator, 11362 as this can already be used to acquire a mutex multiple times by the same 11363 thread. BZ 8066. With assistance from Alexey Starikovskiy. 11364 11365 Fixed a problem where invalid objects could be referenced in the AML 11366 Interpreter after error conditions. During operand evaluation, ensure 11367 that 11368 the internal "Return Object" field is cleared on error and only valid 11369 pointers are stored there. Caused occasional access to deleted objects 11370 that 11371 resulted in "large reference count" warning messages. Valery Podrezov. 11372 11373 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 11374 on 11375 deeply nested control method invocations. BZ 7873, local BZ 487. Valery 11376 Podrezov. 11377 11378 Fixed an internal problem with the handling of result objects on the 11379 interpreter result stack. BZ 7872. Valery Podrezov. 11380 11381 Removed obsolete code that handled the case where AML_NAME_OP is the 11382 target 11383 of a reference (Reference.Opcode). This code was no longer necessary. BZ 11384 7874. Valery Podrezov. 11385 11386 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 11387 was 11388 a 11389 remnant from the previously discontinued 16-bit support. 11390 11391 Example Code and Data Size: These are the sizes for the OS-independent 11392 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11393 debug version of the code includes the debug output trace mechanism and 11394 has 11395 a much larger code and data size. 11396 11397 Previous Release: 11398 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11399 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11400 Current Release: 11401 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11402 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 11403 11404 ---------------------------------------- 11405 26 January 2007. Summary of changes for version 20070126: 11406 11407 1) ACPI CA Core Subsystem: 11408 11409 Added the 2007 copyright to all module headers and signons. This affects 11410 virtually every file in the ACPICA core subsystem, the iASL compiler, and 11411 the utilities. 11412 11413 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 11414 during a table load. A bad pointer was passed in the case where the DSDT 11415 is 11416 overridden, causing a fault in this case. 11417 11418 Example Code and Data Size: These are the sizes for the OS-independent 11419 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11420 debug version of the code includes the debug output trace mechanism and 11421 has 11422 a much larger code and data size. 11423 11424 Previous Release: 11425 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11426 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11427 Current Release: 11428 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11429 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11430 11431 ---------------------------------------- 11432 15 December 2006. Summary of changes for version 20061215: 11433 11434 1) ACPI CA Core Subsystem: 11435 11436 Support for 16-bit ACPICA has been completely removed since it is no 11437 longer 11438 necessary and it clutters the code. All 16-bit macros, types, and 11439 conditional compiles have been removed, cleaning up and simplifying the 11440 code 11441 across the entire subsystem. DOS support is no longer needed since the 11442 bootable Linux firmware kit is now available. 11443 11444 The handler for the Global Lock is now removed during AcpiTerminate to 11445 enable a clean subsystem restart, via the implementation of the 11446 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 11447 HP) 11448 11449 Implemented enhancements to the multithreading support within the 11450 debugger 11451 to enable improved multithreading debugging and evaluation of the 11452 subsystem. 11453 (Valery Podrezov) 11454 11455 Debugger: Enhanced the Statistics/Memory command to emit the total 11456 (maximum) 11457 memory used during the execution, as well as the maximum memory consumed 11458 by 11459 each of the various object types. (Valery Podrezov) 11460 11461 Example Code and Data Size: These are the sizes for the OS-independent 11462 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11463 debug version of the code includes the debug output trace mechanism and 11464 has 11465 a much larger code and data size. 11466 11467 Previous Release: 11468 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11469 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11470 Current Release: 11471 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 11472 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 11473 11474 11475 2) iASL Compiler/Disassembler and Tools: 11476 11477 AcpiExec: Implemented a new option (-m) to display full memory use 11478 statistics upon subsystem/program termination. (Valery Podrezov) 11479 11480 ---------------------------------------- 11481 09 November 2006. Summary of changes for version 20061109: 11482 11483 1) ACPI CA Core Subsystem: 11484 11485 Optimized the Load ASL operator in the case where the source operand is 11486 an 11487 operation region. Simply map the operation region memory, instead of 11488 performing a bytewise read. (Region must be of type SystemMemory, see 11489 below.) 11490 11491 Fixed the Load ASL operator for the case where the source operand is a 11492 region field. A buffer object is also allowed as the source operand. BZ 11493 480 11494 11495 Fixed a problem where the Load ASL operator allowed the source operand to 11496 be 11497 an operation region of any type. It is now restricted to regions of type 11498 SystemMemory, as per the ACPI specification. BZ 481 11499 11500 Additional cleanup and optimizations for the new Table Manager code. 11501 11502 AcpiEnable will now fail if all of the required ACPI tables are not 11503 loaded 11504 (FADT, FACS, DSDT). BZ 477 11505 11506 Added #pragma pack(8/4) to acobject.h to ensure that the structures in 11507 this 11508 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 11509 manually optimized to be aligned and will not work if it is byte-packed. 11510 11511 Example Code and Data Size: These are the sizes for the OS-independent 11512 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11513 debug version of the code includes the debug output trace mechanism and 11514 has 11515 a much larger code and data size. 11516 11517 Previous Release: 11518 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11519 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11520 Current Release: 11521 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 11522 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 11523 11524 11525 2) iASL Compiler/Disassembler and Tools: 11526 11527 Fixed a problem where the presence of the _OSI predefined control method 11528 within complex expressions could cause an internal compiler error. 11529 11530 AcpiExec: Implemented full region support for multiple address spaces. 11531 SpaceId is now part of the REGION object. BZ 429 11532 11533 ---------------------------------------- 11534 11 October 2006. Summary of changes for version 20061011: 11535 11536 1) ACPI CA Core Subsystem: 11537 11538 Completed an AML interpreter performance enhancement for control method 11539 execution. Previously a 2-pass parse/execution, control methods are now 11540 completely parsed and executed in a single pass. This improves overall 11541 interpreter performance by ~25%, reduces code size, and reduces CPU stack 11542 use. (Valery Podrezov + interpreter changes in version 20051202 that 11543 eliminated namespace loading during the pass one parse.) 11544 11545 Implemented _CID support for PCI Root Bridge detection. If the _HID does 11546 not 11547 match the predefined PCI Root Bridge IDs, the _CID list (if present) is 11548 now 11549 obtained and also checked for an ID match. 11550 11551 Implemented additional support for the PCI _ADR execution: upsearch until 11552 a 11553 device scope is found before executing _ADR. This allows PCI_Config 11554 operation regions to be declared locally within control methods 11555 underneath 11556 PCI device objects. 11557 11558 Fixed a problem with a possible race condition between threads executing 11559 AcpiWalkNamespace and the AML interpreter. This condition was removed by 11560 modifying AcpiWalkNamespace to (by default) ignore all temporary 11561 namespace 11562 entries created during any concurrent control method execution. An 11563 additional namespace race condition is known to exist between 11564 AcpiWalkNamespace and the Load/Unload ASL operators and is still under 11565 investigation. 11566 11567 Restructured the AML ParseLoop function, breaking it into several 11568 subfunctions in order to reduce CPU stack use and improve 11569 maintainability. 11570 (Mikhail Kouzmich) 11571 11572 AcpiGetHandle: Fix for parameter validation to detect invalid 11573 combinations 11574 of prefix handle and pathname. BZ 478 11575 11576 Example Code and Data Size: These are the sizes for the OS-independent 11577 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11578 debug version of the code includes the debug output trace mechanism and 11579 has 11580 a much larger code and data size. 11581 11582 Previous Release: 11583 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11584 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11585 Current Release: 11586 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 11587 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 11588 11589 2) iASL Compiler/Disassembler and Tools: 11590 11591 Ported the -g option (get local ACPI tables) to the new ACPICA Table 11592 Manager 11593 to restore original behavior. 11594 11595 ---------------------------------------- 11596 27 September 2006. Summary of changes for version 20060927: 11597 11598 1) ACPI CA Core Subsystem: 11599 11600 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 11601 These functions now use a spinlock for mutual exclusion and the interrupt 11602 level indication flag is not needed. 11603 11604 Fixed a problem with the Global Lock where the lock could appear to be 11605 obtained before it is actually obtained. The global lock semaphore was 11606 inadvertently created with one unit instead of zero units. (BZ 464) 11607 Fiodor 11608 Suietov. 11609 11610 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 11611 during 11612 a read from a buffer or region field. (BZ 458) Fiodor Suietov. 11613 11614 Example Code and Data Size: These are the sizes for the OS-independent 11615 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11616 debug version of the code includes the debug output trace mechanism and 11617 has 11618 a much larger code and data size. 11619 11620 Previous Release: 11621 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11622 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11623 Current Release: 11624 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11625 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 11626 11627 11628 2) iASL Compiler/Disassembler and Tools: 11629 11630 Fixed a compilation problem with the pre-defined Resource Descriptor 11631 field 11632 names where an "object does not exist" error could be incorrectly 11633 generated 11634 if the parent ResourceTemplate pathname places the template within a 11635 different namespace scope than the current scope. (BZ 7212) 11636 11637 Fixed a problem where the compiler could hang after syntax errors 11638 detected 11639 in an ElseIf construct. (BZ 453) 11640 11641 Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 11642 operator. An incorrect output filename was produced when this parameter 11643 was 11644 a null string (""). Now, the original input filename is used as the AML 11645 output filename, with an ".aml" extension. 11646 11647 Implemented a generic batch command mode for the AcpiExec utility 11648 (execute 11649 any AML debugger command) (Valery Podrezov). 11650 11651 ---------------------------------------- 11652 12 September 2006. Summary of changes for version 20060912: 11653 11654 1) ACPI CA Core Subsystem: 11655 11656 Enhanced the implementation of the "serialized mode" of the interpreter 11657 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 11658 specified, instead of creating a serialization semaphore per control 11659 method, 11660 the interpreter lock is simply no longer released before a blocking 11661 operation during control method execution. This effectively makes the AML 11662 Interpreter single-threaded. The overhead of a semaphore per-method is 11663 eliminated. 11664 11665 Fixed a regression where an error was no longer emitted if a control 11666 method 11667 attempts to create 2 objects of the same name. This once again returns 11668 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 11669 that 11670 will dynamically serialize the control method to possible prevent future 11671 errors. (BZ 440) 11672 11673 Integrated a fix for a problem with PCI Express HID detection in the PCI 11674 Config Space setup procedure. (BZ 7145) 11675 11676 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 11677 AcpiHwInitialize function - the FADT registers are now validated when the 11678 table is loaded. 11679 11680 Added two new warnings during FADT verification - 1) if the FADT is 11681 larger 11682 than the largest known FADT version, and 2) if there is a mismatch 11683 between 11684 a 11685 32-bit block address and the 64-bit X counterpart (when both are non- 11686 zero.) 11687 11688 Example Code and Data Size: These are the sizes for the OS-independent 11689 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11690 debug version of the code includes the debug output trace mechanism and 11691 has 11692 a much larger code and data size. 11693 11694 Previous Release: 11695 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11696 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11697 Current Release: 11698 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 11699 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 11700 11701 11702 2) iASL Compiler/Disassembler and Tools: 11703 11704 Fixed a problem with the implementation of the Switch() operator where 11705 the 11706 temporary variable was declared too close to the actual Switch, instead 11707 of 11708 at method level. This could cause a problem if the Switch() operator is 11709 within a while loop, causing an error on the second iteration. (BZ 460) 11710 11711 Disassembler - fix for error emitted for unknown type for target of scope 11712 operator. Now, ignore it and continue. 11713 11714 Disassembly of an FADT now verifies the input FADT and reports any errors 11715 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 11716 11717 Disassembly of raw data buffers with byte initialization data now 11718 prefixes 11719 each output line with the current buffer offset. 11720 11721 Disassembly of ASF! table now includes all variable-length data fields at 11722 the end of some of the subtables. 11723 11724 The disassembler now emits a comment if a buffer appears to be a 11725 ResourceTemplate, but cannot be disassembled as such because the EndTag 11726 does 11727 not appear at the very end of the buffer. 11728 11729 AcpiExec - Added the "-t" command line option to enable the serialized 11730 mode 11731 of the AML interpreter. 11732 11733 ---------------------------------------- 11734 31 August 2006. Summary of changes for version 20060831: 11735 11736 1) ACPI CA Core Subsystem: 11737 11738 Miscellaneous fixes for the Table Manager: 11739 - Correctly initialize internal common FADT for all 64-bit "X" fields 11740 - Fixed a couple table mapping issues during table load 11741 - Fixed a couple alignment issues for IA64 11742 - Initialize input array to zero in AcpiInitializeTables 11743 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 11744 AcpiGetTableByIndex 11745 11746 Change for GPE support: when a "wake" GPE is received, all wake GPEs are 11747 now 11748 immediately disabled to prevent the waking GPE from firing again and to 11749 prevent other wake GPEs from interrupting the wake process. 11750 11751 Added the AcpiGpeCount global that tracks the number of processed GPEs, 11752 to 11753 be used for debugging systems with a large number of ACPI interrupts. 11754 11755 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 11756 both the ACPICA headers and the disassembler. 11757 11758 Example Code and Data Size: These are the sizes for the OS-independent 11759 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11760 debug version of the code includes the debug output trace mechanism and 11761 has 11762 a much larger code and data size. 11763 11764 Previous Release: 11765 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11766 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11767 Current Release: 11768 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 11769 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 11770 11771 11772 2) iASL Compiler/Disassembler and Tools: 11773 11774 Disassembler support for the DMAR ACPI table. 11775 11776 ---------------------------------------- 11777 23 August 2006. Summary of changes for version 20060823: 11778 11779 1) ACPI CA Core Subsystem: 11780 11781 The Table Manager component has been completely redesigned and 11782 reimplemented. The new design is much simpler, and reduces the overall 11783 code 11784 and data size of the kernel-resident ACPICA by approximately 5%. Also, it 11785 is 11786 now possible to obtain the ACPI tables very early during kernel 11787 initialization, even before dynamic memory management is initialized. 11788 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 11789 11790 Obsolete ACPICA interfaces: 11791 11792 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 11793 init 11794 time). 11795 - AcpiLoadTable: Not needed. 11796 - AcpiUnloadTable: Not needed. 11797 11798 New ACPICA interfaces: 11799 11800 - AcpiInitializeTables: Must be called before the table manager can be 11801 used. 11802 - AcpiReallocateRootTable: Used to transfer the root table to dynamically 11803 allocated memory after it becomes available. 11804 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 11805 tables 11806 in the RSDT/XSDT. 11807 11808 Other ACPICA changes: 11809 11810 - AcpiGetTableHeader returns the actual mapped table header, not a copy. 11811 Use 11812 AcpiOsUnmapMemory to free this mapping. 11813 - AcpiGetTable returns the actual mapped table. The mapping is managed 11814 internally and must not be deleted by the caller. Use of this interface 11815 causes no additional dynamic memory allocation. 11816 - AcpiFindRootPointer: Support for physical addressing has been 11817 eliminated, 11818 it appeared to be unused. 11819 - The interface to AcpiOsMapMemory has changed to be consistent with the 11820 other allocation interfaces. 11821 - The interface to AcpiOsGetRootPointer has changed to eliminate 11822 unnecessary 11823 parameters. 11824 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 11825 64- 11826 bit platforms. Was previously 64 bits on all platforms. 11827 - The interface to the ACPI Global Lock acquire/release macros have 11828 changed 11829 slightly since ACPICA no longer keeps a local copy of the FACS with a 11830 constructed pointer to the actual global lock. 11831 11832 Porting to the new table manager: 11833 11834 - AcpiInitializeTables: Must be called once, and can be called anytime 11835 during the OS initialization process. It allows the host to specify an 11836 area 11837 of memory to be used to store the internal version of the RSDT/XSDT (root 11838 table). This allows the host to access ACPI tables before memory 11839 management 11840 is initialized and running. 11841 - AcpiReallocateRootTable: Can be called after memory management is 11842 running 11843 to copy the root table to a dynamically allocated array, freeing up the 11844 scratch memory specified in the call to AcpiInitializeTables. 11845 - AcpiSubsystemInitialize: This existing interface is independent of the 11846 Table Manager, and does not have to be called before the Table Manager 11847 can 11848 be used, it only must be called before the rest of ACPICA can be used. 11849 - ACPI Tables: Some changes have been made to the names and structure of 11850 the 11851 actbl.h and actbl1.h header files and may require changes to existing 11852 code. 11853 For example, bitfields have been completely removed because of their lack 11854 of 11855 portability across C compilers. 11856 - Update interfaces to the Global Lock acquire/release macros if local 11857 versions are used. (see acwin.h) 11858 11859 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 11860 11861 New files: tbfind.c 11862 11863 Example Code and Data Size: These are the sizes for the OS-independent 11864 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11865 debug version of the code includes the debug output trace mechanism and 11866 has 11867 a much larger code and data size. 11868 11869 Previous Release: 11870 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11871 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11872 Current Release: 11873 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 11874 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 11875 11876 11877 2) iASL Compiler/Disassembler and Tools: 11878 11879 No changes for this release. 11880 11881 ---------------------------------------- 11882 21 July 2006. Summary of changes for version 20060721: 11883 11884 1) ACPI CA Core Subsystem: 11885 11886 The full source code for the ASL test suite used to validate the iASL 11887 compiler and the ACPICA core subsystem is being released with the ACPICA 11888 source for the first time. The source is contained in a separate package 11889 and 11890 consists of over 1100 files that exercise all ASL/AML operators. The 11891 package 11892 should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 11893 Fiodor 11894 Suietov) 11895 11896 Completed a new design and implementation for support of the ACPI Global 11897 Lock. On the OS side, the global lock is now treated as a standard AML 11898 mutex. Previously, multiple OS threads could "acquire" the global lock 11899 simultaneously. However, this could cause the BIOS to be starved out of 11900 the 11901 lock - especially in cases such as the Embedded Controller driver where 11902 there is a tight coupling between the OS and the BIOS. 11903 11904 Implemented an optimization for the ACPI Global Lock interrupt mechanism. 11905 The Global Lock interrupt handler no longer queues the execution of a 11906 separate thread to signal the global lock semaphore. Instead, the 11907 semaphore 11908 is signaled directly from the interrupt handler. 11909 11910 Implemented support within the AML interpreter for package objects that 11911 contain a larger AML length (package list length) than the package 11912 element 11913 count. In this case, the length of the package is truncated to match the 11914 package element count. Some BIOS code apparently modifies the package 11915 length 11916 on the fly, and this change supports this behavior. Provides 11917 compatibility 11918 with the MS AML interpreter. (With assistance from Fiodor Suietov) 11919 11920 Implemented a temporary fix for the BankValue parameter of a Bank Field 11921 to 11922 support all constant values, now including the Zero and One opcodes. 11923 Evaluation of this parameter must eventually be converted to a full 11924 TermArg 11925 evaluation. A not-implemented error is now returned (temporarily) for 11926 non- 11927 constant values for this parameter. 11928 11929 Fixed problem reports (Fiodor Suietov) integrated: 11930 - Fix for premature object deletion after CopyObject on Operation Region 11931 (BZ 11932 350) 11933 11934 Example Code and Data Size: These are the sizes for the OS-independent 11935 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11936 debug version of the code includes the debug output trace mechanism and 11937 has 11938 a much larger code and data size. 11939 11940 Previous Release: 11941 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 11942 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 11943 Current Release: 11944 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 11945 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 11946 11947 11948 2) iASL Compiler/Disassembler and Tools: 11949 11950 No changes for this release. 11951 11952 ---------------------------------------- 11953 07 July 2006. Summary of changes for version 20060707: 11954 11955 1) ACPI CA Core Subsystem: 11956 11957 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 11958 that do not allow the initialization of address pointers within packed 11959 structures - even though the hardware itself may support misaligned 11960 transfers. Some of the debug data structures are packed by default to 11961 minimize size. 11962 11963 Added an error message for the case where AcpiOsGetThreadId() returns 11964 zero. 11965 A non-zero value is required by the core ACPICA code to ensure the proper 11966 operation of AML mutexes and recursive control methods. 11967 11968 The DSDT is now the only ACPI table that determines whether the AML 11969 interpreter is in 32-bit or 64-bit mode. Not really a functional change, 11970 but 11971 the hooks for per-table 32/64 switching have been removed from the code. 11972 A 11973 clarification to the ACPI specification is forthcoming in ACPI 3.0B. 11974 11975 Fixed a possible leak of an OwnerID in the error path of 11976 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 11977 deletion to a single place in AcpiTbUninstallTable to correct possible 11978 leaks 11979 when using the AcpiTbDeleteTablesByType interface (with assistance from 11980 Lance Ortiz.) 11981 11982 Fixed a problem with Serialized control methods where the semaphore 11983 associated with the method could be over-signaled after multiple method 11984 invocations. 11985 11986 Fixed two issues with the locking of the internal namespace data 11987 structure. 11988 Both the Unload() operator and AcpiUnloadTable interface now lock the 11989 namespace during the namespace deletion associated with the table unload 11990 (with assistance from Linn Crosetto.) 11991 11992 Fixed problem reports (Valery Podrezov) integrated: 11993 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 11994 11995 Fixed problem reports (Fiodor Suietov) integrated: 11996 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 11997 - On Address Space handler deletion, needless deactivation call (BZ 374) 11998 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 11999 375) 12000 - Possible memory leak, Notify sub-objects of Processor, Power, 12001 ThermalZone 12002 (BZ 376) 12003 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 12004 - Minimum Length of RSDT should be validated (BZ 379) 12005 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 12006 Handler (BZ (380) 12007 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 12008 loaded 12009 (BZ 381) 12010 12011 Example Code and Data Size: These are the sizes for the OS-independent 12012 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12013 debug version of the code includes the debug output trace mechanism and 12014 has 12015 a much larger code and data size. 12016 12017 Previous Release: 12018 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12019 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12020 Current Release: 12021 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 12022 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 12023 12024 12025 2) iASL Compiler/Disassembler and Tools: 12026 12027 Fixed problem reports: 12028 Compiler segfault when ASL contains a long (>1024) String declaration (BZ 12029 436) 12030 12031 ---------------------------------------- 12032 23 June 2006. Summary of changes for version 20060623: 12033 12034 1) ACPI CA Core Subsystem: 12035 12036 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 12037 allows the type to be customized to the host OS for improved efficiency 12038 (since a spinlock is usually a very small object.) 12039 12040 Implemented support for "ignored" bits in the ACPI registers. According 12041 to 12042 the ACPI specification, these bits should be preserved when writing the 12043 registers via a read/modify/write cycle. There are 3 bits preserved in 12044 this 12045 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 12046 12047 Implemented the initial deployment of new OSL mutex interfaces. Since 12048 some 12049 host operating systems have separate mutex and semaphore objects, this 12050 feature was requested. The base code now uses mutexes (and the new mutex 12051 interfaces) wherever a binary semaphore was used previously. However, for 12052 the current release, the mutex interfaces are defined as macros to map 12053 them 12054 to the existing semaphore interfaces. Therefore, no OSL changes are 12055 required 12056 at this time. (See acpiosxf.h) 12057 12058 Fixed several problems with the support for the control method SyncLevel 12059 parameter. The SyncLevel now works according to the ACPI specification 12060 and 12061 in concert with the Mutex SyncLevel parameter, since the current 12062 SyncLevel 12063 is a property of the executing thread. Mutual exclusion for control 12064 methods 12065 is now implemented with a mutex instead of a semaphore. 12066 12067 Fixed three instances of the use of the C shift operator in the bitfield 12068 support code (exfldio.c) to avoid the use of a shift value larger than 12069 the 12070 target data width. The behavior of C compilers is undefined in this case 12071 and 12072 can cause unpredictable results, and therefore the case must be detected 12073 and 12074 avoided. (Fiodor Suietov) 12075 12076 Added an info message whenever an SSDT or OEM table is loaded dynamically 12077 via the Load() or LoadTable() ASL operators. This should improve 12078 debugging 12079 capability since it will show exactly what tables have been loaded 12080 (beyond 12081 the tables present in the RSDT/XSDT.) 12082 12083 Example Code and Data Size: These are the sizes for the OS-independent 12084 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12085 debug version of the code includes the debug output trace mechanism and 12086 has 12087 a much larger code and data size. 12088 12089 Previous Release: 12090 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12091 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12092 Current Release: 12093 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 12094 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 12095 12096 12097 2) iASL Compiler/Disassembler and Tools: 12098 12099 No changes for this release. 12100 12101 ---------------------------------------- 12102 08 June 2006. Summary of changes for version 20060608: 12103 12104 1) ACPI CA Core Subsystem: 12105 12106 Converted the locking mutex used for the ACPI hardware to a spinlock. 12107 This 12108 change should eliminate all problems caused by attempting to acquire a 12109 semaphore at interrupt level, and it means that all ACPICA external 12110 interfaces that directly access the ACPI hardware can be safely called 12111 from 12112 interrupt level. OSL code that implements the semaphore interfaces should 12113 be 12114 able to eliminate any workarounds for being called at interrupt level. 12115 12116 Fixed a regression introduced in 20060526 where the ACPI device 12117 initialization could be prematurely aborted with an AE_NOT_FOUND if a 12118 device 12119 did not have an optional _INI method. 12120 12121 Fixed an IndexField issue where a write to the Data Register should be 12122 limited in size to the AccessSize (width) of the IndexField itself. (BZ 12123 433, 12124 Fiodor Suietov) 12125 12126 Fixed problem reports (Valery Podrezov) integrated: 12127 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 12128 12129 Fixed problem reports (Fiodor Suietov) integrated: 12130 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 12131 12132 Removed four global mutexes that were obsolete and were no longer being 12133 used. 12134 12135 Example Code and Data Size: These are the sizes for the OS-independent 12136 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12137 debug version of the code includes the debug output trace mechanism and 12138 has 12139 a much larger code and data size. 12140 12141 Previous Release: 12142 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12143 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12144 Current Release: 12145 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 12146 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 12147 12148 12149 2) iASL Compiler/Disassembler and Tools: 12150 12151 Fixed a fault when using -g option (get tables from registry) on Windows 12152 machines. 12153 12154 Fixed problem reports integrated: 12155 - Generate error if CreateField NumBits parameter is zero. (BZ 405) 12156 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 12157 Suietov) 12158 - Global table revision override (-r) is ignored (BZ 413) 12159 12160 ---------------------------------------- 12161 26 May 2006. Summary of changes for version 20060526: 12162 12163 1) ACPI CA Core Subsystem: 12164 12165 Restructured, flattened, and simplified the internal interfaces for 12166 namespace object evaluation - resulting in smaller code, less CPU stack 12167 use, 12168 and fewer interfaces. (With assistance from Mikhail Kouzmich) 12169 12170 Fixed a problem with the CopyObject operator where the first parameter 12171 was 12172 not typed correctly for the parser, interpreter, compiler, and 12173 disassembler. 12174 Caused various errors and unexpected behavior. 12175 12176 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 12177 produced incorrect results with some C compilers. Since the behavior of C 12178 compilers when the shift value is larger than the datatype width is 12179 apparently not well defined, the interpreter now detects this condition 12180 and 12181 simply returns zero as expected in all such cases. (BZ 395) 12182 12183 Fixed problem reports (Valery Podrezov) integrated: 12184 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 12185 - Allow interpreter to handle nested method declarations (BZ 5361) 12186 12187 Fixed problem reports (Fiodor Suietov) integrated: 12188 - AcpiTerminate doesn't free debug memory allocation list objects (BZ 12189 355) 12190 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 12191 356) 12192 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 12193 - Resource Manager should return AE_TYPE for non-device objects (BZ 358) 12194 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 12195 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 12196 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 12197 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 12198 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 12199 365) 12200 - Status of the Global Initialization Handler call not used (BZ 366) 12201 - Incorrect object parameter to Global Initialization Handler (BZ 367) 12202 12203 Example Code and Data Size: These are the sizes for the OS-independent 12204 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12205 debug version of the code includes the debug output trace mechanism and 12206 has 12207 a much larger code and data size. 12208 12209 Previous Release: 12210 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12211 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12212 Current Release: 12213 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 12214 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 12215 12216 12217 2) iASL Compiler/Disassembler and Tools: 12218 12219 Modified the parser to allow the names IO, DMA, and IRQ to be used as 12220 namespace identifiers with no collision with existing resource descriptor 12221 macro names. This provides compatibility with other ASL compilers and is 12222 most useful for disassembly/recompilation of existing tables without 12223 parse 12224 errors. (With assistance from Thomas Renninger) 12225 12226 Disassembler: fixed an incorrect disassembly problem with the 12227 DataTableRegion and CopyObject operators. Fixed a possible fault during 12228 disassembly of some Alias operators. 12229 12230 ---------------------------------------- 12231 12 May 2006. Summary of changes for version 20060512: 12232 12233 1) ACPI CA Core Subsystem: 12234 12235 Replaced the AcpiOsQueueForExecution interface with a new interface named 12236 AcpiOsExecute. The major difference is that the new interface does not 12237 have 12238 a Priority parameter, this appeared to be useless and has been replaced 12239 by 12240 a 12241 Type parameter. The Type tells the host what type of execution is being 12242 requested, such as global lock handler, notify handler, GPE handler, etc. 12243 This allows the host to queue and execute the request as appropriate for 12244 the 12245 request type, possibly using different work queues and different 12246 priorities 12247 for the various request types. This enables fixes for multithreading 12248 deadlock problems such as BZ #5534, and will require changes to all 12249 existing 12250 OS interface layers. (Alexey Starikovskiy and Bob Moore) 12251 12252 Fixed a possible memory leak associated with the support for the so- 12253 called 12254 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 12255 Suietov) 12256 12257 Fixed a problem with the Load() operator where a table load from an 12258 operation region could overwrite an internal table buffer by up to 7 12259 bytes 12260 and cause alignment faults on IPF systems. (With assistance from Luming 12261 Yu) 12262 12263 Example Code and Data Size: These are the sizes for the OS-independent 12264 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12265 debug version of the code includes the debug output trace mechanism and 12266 has 12267 a much larger code and data size. 12268 12269 Previous Release: 12270 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12271 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12272 Current Release: 12273 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 12274 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 12275 12276 12277 12278 2) iASL Compiler/Disassembler and Tools: 12279 12280 Disassembler: Implemented support to cross reference the internal 12281 namespace 12282 and automatically generate ASL External() statements for symbols not 12283 defined 12284 within the current table being disassembled. This will simplify the 12285 disassembly and recompilation of interdependent tables such as SSDTs 12286 since 12287 these statements will no longer have to be added manually. 12288 12289 Disassembler: Implemented experimental support to automatically detect 12290 invocations of external control methods and generate appropriate 12291 External() 12292 statements. This is problematic because the AML cannot be correctly 12293 parsed 12294 until the number of arguments for each control method is known. 12295 Currently, 12296 standalone method invocations and invocations as the source operand of a 12297 Store() statement are supported. 12298 12299 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 12300 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 12301 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 12302 more readable and likely closer to the original ASL source. 12303 12304 ---------------------------------------- 12305 21 April 2006. Summary of changes for version 20060421: 12306 12307 1) ACPI CA Core Subsystem: 12308 12309 Removed a device initialization optimization introduced in 20051216 where 12310 the _STA method was not run unless an _INI was also present for the same 12311 device. This optimization could cause problems because it could allow 12312 _INI 12313 methods to be run within a not-present device subtree. (If a not-present 12314 device had no _INI, _STA would not be run, the not-present status would 12315 not 12316 be discovered, and the children of the device would be incorrectly 12317 traversed.) 12318 12319 Implemented a new _STA optimization where namespace subtrees that do not 12320 contain _INI are identified and ignored during device initialization. 12321 Selectively running _STA can significantly improve boot time on large 12322 machines (with assistance from Len Brown.) 12323 12324 Implemented support for the device initialization case where the returned 12325 _STA flags indicate a device not-present but functioning. In this case, 12326 _INI 12327 is not run, but the device children are examined for presence, as per the 12328 ACPI specification. 12329 12330 Implemented an additional change to the IndexField support in order to 12331 conform to MS behavior. The value written to the Index Register is not 12332 simply a byte offset, it is a byte offset in units of the access width of 12333 the parent Index Field. (Fiodor Suietov) 12334 12335 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 12336 interface is called during the creation of all AML operation regions, and 12337 allows the host OS to exert control over what addresses it will allow the 12338 AML code to access. Operation Regions whose addresses are disallowed will 12339 cause a runtime exception when they are actually accessed (will not 12340 affect 12341 or abort table loading.) See oswinxf or osunixxf for an example 12342 implementation. 12343 12344 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 12345 interface allows the host OS to match the various "optional" 12346 interface/behavior strings for the _OSI predefined control method as 12347 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 12348 for an example implementation. 12349 12350 Restructured and corrected various problems in the exception handling 12351 code 12352 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 12353 (with assistance from Takayoshi Kochi.) 12354 12355 Modified the Linux source converter to ignore quoted string literals 12356 while 12357 converting identifiers from mixed to lower case. This will correct 12358 problems 12359 with the disassembler and other areas where such strings must not be 12360 modified. 12361 12362 The ACPI_FUNCTION_* macros no longer require quotes around the function 12363 name. This allows the Linux source converter to convert the names, now 12364 that 12365 the converter ignores quoted strings. 12366 12367 Example Code and Data Size: These are the sizes for the OS-independent 12368 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12369 debug version of the code includes the debug output trace mechanism and 12370 has 12371 a much larger code and data size. 12372 12373 Previous Release: 12374 12375 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12376 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12377 Current Release: 12378 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 12379 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 12380 12381 12382 2) iASL Compiler/Disassembler and Tools: 12383 12384 Implemented 3 new warnings for iASL, and implemented multiple warning 12385 levels 12386 (w2 flag). 12387 12388 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 12389 not 12390 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 12391 check for the possible timeout, a warning is issued. 12392 12393 2) Useless operators: If an ASL operator does not specify an optional 12394 target 12395 operand and it also does not use the function return value from the 12396 operator, a warning is issued since the operator effectively does 12397 nothing. 12398 12399 3) Unreferenced objects: If a namespace object is created, but never 12400 referenced, a warning is issued. This is a warning level 2 since there 12401 are 12402 cases where this is ok, such as when a secondary table is loaded that 12403 uses 12404 the unreferenced objects. Even so, care is taken to only flag objects 12405 that 12406 don't look like they will ever be used. For example, the reserved methods 12407 (starting with an underscore) are usually not referenced because it is 12408 expected that the OS will invoke them. 12409 12410 ---------------------------------------- 12411 31 March 2006. Summary of changes for version 20060331: 12412 12413 1) ACPI CA Core Subsystem: 12414 12415 Implemented header file support for the following additional ACPI tables: 12416 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 12417 support, 12418 all current and known ACPI tables are now defined in the ACPICA headers 12419 and 12420 are available for use by device drivers and other software. 12421 12422 Implemented support to allow tables that contain ACPI names with invalid 12423 characters to be loaded. Previously, this would cause the table load to 12424 fail, but since there are several known cases of such tables on existing 12425 machines, this change was made to enable ACPI support for them. Also, 12426 this 12427 matches the behavior of the Microsoft ACPI implementation. 12428 12429 Fixed a couple regressions introduced during the memory optimization in 12430 the 12431 20060317 release. The namespace node definition required additional 12432 reorganization and an internal datatype that had been changed to 8-bit 12433 was 12434 restored to 32-bit. (Valery Podrezov) 12435 12436 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 12437 could be passed through to AcpiOsReleaseObject which is unexpected. Such 12438 null pointers are now trapped and ignored, matching the behavior of the 12439 previous implementation before the deployment of AcpiOsReleaseObject. 12440 (Valery Podrezov, Fiodor Suietov) 12441 12442 Fixed a memory mapping leak during the deletion of a SystemMemory 12443 operation 12444 region where a cached memory mapping was not deleted. This became a 12445 noticeable problem for operation regions that are defined within 12446 frequently 12447 used control methods. (Dana Meyers) 12448 12449 Reorganized the ACPI table header files into two main files: one for the 12450 ACPI tables consumed by the ACPICA core, and another for the 12451 miscellaneous 12452 ACPI tables that are consumed by the drivers and other software. The 12453 various 12454 FADT definitions were merged into one common section and three different 12455 tables (ACPI 1.0, 1.0+, and 2.0) 12456 12457 Example Code and Data Size: These are the sizes for the OS-independent 12458 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 12459 debug version of the code includes the debug output trace mechanism and 12460 has 12461 a much larger code and data size. 12462 12463 Previous Release: 12464 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12465 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12466 Current Release: 12467 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 12468 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 12469 12470 12471 2) iASL Compiler/Disassembler and Tools: 12472 12473 Disassembler: Implemented support to decode and format all non-AML ACPI 12474 tables (tables other than DSDTs and SSDTs.) This includes the new tables 12475 added to the ACPICA headers, therefore all current and known ACPI tables 12476 are 12477 supported. 12478 12479 Disassembler: The change to allow ACPI names with invalid characters also 12480 enables the disassembly of such tables. Invalid characters within names 12481 are 12482 changed to '*' to make the name printable; the iASL compiler will still 12483 generate an error for such names, however, since this is an invalid ACPI 12484 character. 12485 12486 Implemented an option for AcpiXtract (-a) to extract all tables found in 12487 the 12488 input file. The default invocation extracts only the DSDTs and SSDTs. 12489 12490 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 12491 makefile for the AcpiXtract utility. 12492 12493 ---------------------------------------- 12494 17 March 2006. Summary of changes for version 20060317: 12495 12496 1) ACPI CA Core Subsystem: 12497 12498 Implemented the use of a cache object for all internal namespace nodes. 12499 Since there are about 1000 static nodes in a typical system, this will 12500 decrease memory use for cache implementations that minimize per- 12501 allocation 12502 overhead (such as a slab allocator.) 12503 12504 Removed the reference count mechanism for internal namespace nodes, since 12505 it 12506 was deemed unnecessary. This reduces the size of each namespace node by 12507 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 12508 case, 12509 and 32 bytes for the 64-bit case. 12510 12511 Optimized several internal data structures to reduce object size on 64- 12512 bit 12513 platforms by packing data within the 64-bit alignment. This includes the 12514 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 12515 instances corresponding to the namespace objects. 12516 12517 Added two new strings for the predefined _OSI method: "Windows 2001.1 12518 SP1" 12519 and "Windows 2006". 12520 12521 Split the allocation tracking mechanism out to a separate file, from 12522 utalloc.c to uttrack.c. This mechanism appears to be only useful for 12523 application-level code. Kernels may wish to not include uttrack.c in 12524 distributions. 12525 12526 Removed all remnants of the obsolete ACPI_REPORT_* macros and the 12527 associated 12528 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 12529 macros.) 12530 12531 Code and Data Size: These are the sizes for the acpica.lib produced by 12532 the 12533 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12534 ACPI 12535 driver or OSPM code. The debug version of the code includes the debug 12536 output 12537 trace mechanism and has a much larger code and data size. Note that these 12538 values will vary depending on the efficiency of the compiler and the 12539 compiler options used during generation. 12540 12541 Previous Release: 12542 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12543 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12544 Current Release: 12545 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 12546 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 12547 12548 12549 2) iASL Compiler/Disassembler and Tools: 12550 12551 Implemented an ANSI C version of the acpixtract utility. This version 12552 will 12553 automatically extract the DSDT and all SSDTs from the input acpidump text 12554 file and dump the binary output to separate files. It can also display a 12555 summary of the input file including the headers for each table found and 12556 will extract any single ACPI table, with any signature. (See 12557 source/tools/acpixtract) 12558 12559 ---------------------------------------- 12560 10 March 2006. Summary of changes for version 20060310: 12561 12562 1) ACPI CA Core Subsystem: 12563 12564 Tagged all external interfaces to the subsystem with the new 12565 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 12566 assist 12567 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 12568 macro. The default definition is NULL. 12569 12570 Added the ACPI_THREAD_ID type for the return value from 12571 AcpiOsGetThreadId. 12572 This allows the host to define this as necessary to simplify kernel 12573 integration. The default definition is ACPI_NATIVE_UINT. 12574 12575 Fixed two interpreter problems related to error processing, the deletion 12576 of 12577 objects, and placing invalid pointers onto the internal operator result 12578 stack. BZ 6028, 6151 (Valery Podrezov) 12579 12580 Increased the reference count threshold where a warning is emitted for 12581 large 12582 reference counts in order to eliminate unnecessary warnings on systems 12583 with 12584 large namespaces (especially 64-bit.) Increased the value from 0x400 to 12585 0x800. 12586 12587 Due to universal disagreement as to the meaning of the 'c' in the 12588 calloc() 12589 function, the ACPI_MEM_CALLOCATE macro has been renamed to 12590 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 12591 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 12592 ACPI_FREE. 12593 12594 Code and Data Size: These are the sizes for the acpica.lib produced by 12595 the 12596 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12597 ACPI 12598 driver or OSPM code. The debug version of the code includes the debug 12599 output 12600 trace mechanism and has a much larger code and data size. Note that these 12601 values will vary depending on the efficiency of the compiler and the 12602 compiler options used during generation. 12603 12604 Previous Release: 12605 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12606 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12607 Current Release: 12608 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12609 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 12610 12611 12612 2) iASL Compiler/Disassembler: 12613 12614 Disassembler: implemented support for symbolic resource descriptor 12615 references. If a CreateXxxxField operator references a fixed offset 12616 within 12617 a 12618 resource descriptor, a name is assigned to the descriptor and the offset 12619 is 12620 translated to the appropriate resource tag and pathname. The addition of 12621 this support brings the disassembled code very close to the original ASL 12622 source code and helps eliminate run-time errors when the disassembled 12623 code 12624 is modified (and recompiled) in such a way as to invalidate the original 12625 fixed offsets. 12626 12627 Implemented support for a Descriptor Name as the last parameter to the 12628 ASL 12629 Register() macro. This parameter was inadvertently left out of the ACPI 12630 specification, and will be added for ACPI 3.0b. 12631 12632 Fixed a problem where the use of the "_OSI" string (versus the full path 12633 "\_OSI") caused an internal compiler error. ("No back ptr to op") 12634 12635 Fixed a problem with the error message that occurs when an invalid string 12636 is 12637 used for a _HID object (such as one with an embedded asterisk: 12638 "*PNP010A".) 12639 The correct message is now displayed. 12640 12641 ---------------------------------------- 12642 17 February 2006. Summary of changes for version 20060217: 12643 12644 1) ACPI CA Core Subsystem: 12645 12646 Implemented a change to the IndexField support to match the behavior of 12647 the 12648 Microsoft AML interpreter. The value written to the Index register is now 12649 a 12650 byte offset, no longer an index based upon the width of the Data 12651 register. 12652 This should fix IndexField problems seen on some machines where the Data 12653 register is not exactly one byte wide. The ACPI specification will be 12654 clarified on this point. 12655 12656 Fixed a problem where several resource descriptor types could overrun the 12657 internal descriptor buffer due to size miscalculation: VendorShort, 12658 VendorLong, and Interrupt. This was noticed on IA64 machines, but could 12659 affect all platforms. 12660 12661 Fixed a problem where individual resource descriptors were misaligned 12662 within 12663 the internal buffer, causing alignment faults on IA64 platforms. 12664 12665 Code and Data Size: These are the sizes for the acpica.lib produced by 12666 the 12667 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 12668 ACPI 12669 driver or OSPM code. The debug version of the code includes the debug 12670 output 12671 trace mechanism and has a much larger code and data size. Note that these 12672 values will vary depending on the efficiency of the compiler and the 12673 compiler options used during generation. 12674 12675 Previous Release: 12676 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12677 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12678 Current Release: 12679 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 12680 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 12681 12682 12683 2) iASL Compiler/Disassembler: 12684 12685 Implemented support for new reserved names: _WDG and _WED are Microsoft 12686 extensions for Windows Instrumentation Management, _TDL is a new ACPI- 12687 defined method (Throttling Depth Limit.) 12688 12689 Fixed a problem where a zero-length VendorShort or VendorLong resource 12690 descriptor was incorrectly emitted as a descriptor of length one. 12691 12692 ---------------------------------------- 12693 10 February 2006. Summary of changes for version 20060210: 12694 12695 1) ACPI CA Core Subsystem: 12696 12697 Removed a couple of extraneous ACPI_ERROR messages that appeared during 12698 normal execution. These became apparent after the conversion from 12699 ACPI_DEBUG_PRINT. 12700 12701 Fixed a problem where the CreateField operator could hang if the BitIndex 12702 or 12703 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 12704 12705 Fixed a problem where a DeRefOf operation on a buffer object incorrectly 12706 failed with an exception. This also fixes a couple of related RefOf and 12707 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 12708 12709 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 12710 of 12711 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 12712 BZ 12713 5480) 12714 12715 Implemented a memory cleanup at the end of the execution of each 12716 iteration 12717 of an AML While() loop, preventing the accumulation of outstanding 12718 objects. 12719 (Valery Podrezov, BZ 5427) 12720 12721 Eliminated a chunk of duplicate code in the object resolution code. 12722 (Valery 12723 Podrezov, BZ 5336) 12724 12725 Fixed several warnings during the 64-bit code generation. 12726 12727 The AcpiSrc source code conversion tool now inserts one line of 12728 whitespace 12729 after an if() statement that is followed immediately by a comment, 12730 improving 12731 readability of the Linux code. 12732 12733 Code and Data Size: The current and previous library sizes for the core 12734 subsystem are shown below. These are the code and data sizes for the 12735 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12736 These 12737 values do not include any ACPI driver or OSPM code. The debug version of 12738 the 12739 code includes the debug output trace mechanism and has a much larger code 12740 and data size. Note that these values will vary depending on the 12741 efficiency 12742 of the compiler and the compiler options used during generation. 12743 12744 Previous Release: 12745 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12746 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12747 Current Release: 12748 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 12749 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 12750 12751 12752 2) iASL Compiler/Disassembler: 12753 12754 Fixed a problem with the disassembly of a BankField operator with a 12755 complex 12756 expression for the BankValue parameter. 12757 12758 ---------------------------------------- 12759 27 January 2006. Summary of changes for version 20060127: 12760 12761 1) ACPI CA Core Subsystem: 12762 12763 Implemented support in the Resource Manager to allow unresolved 12764 namestring 12765 references within resource package objects for the _PRT method. This 12766 support 12767 is in addition to the previously implemented unresolved reference support 12768 within the AML parser. If the interpreter slack mode is enabled, these 12769 unresolved references will be passed through to the caller as a NULL 12770 package 12771 entry. 12772 12773 Implemented and deployed new macros and functions for error and warning 12774 messages across the subsystem. These macros are simpler and generate less 12775 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 12776 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 12777 macros remain defined to allow ACPI drivers time to migrate to the new 12778 macros. 12779 12780 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 12781 the 12782 Acquire/Release Lock OSL interfaces. 12783 12784 Fixed a problem where Alias ASL operators are sometimes not correctly 12785 resolved, in both the interpreter and the iASL compiler. 12786 12787 Fixed several problems with the implementation of the 12788 ConcatenateResTemplate 12789 ASL operator. As per the ACPI specification, zero length buffers are now 12790 treated as a single EndTag. One-length buffers always cause a fatal 12791 exception. Non-zero length buffers that do not end with a full 2-byte 12792 EndTag 12793 cause a fatal exception. 12794 12795 Fixed a possible structure overwrite in the AcpiGetObjectInfo external 12796 interface. (With assistance from Thomas Renninger) 12797 12798 Code and Data Size: The current and previous library sizes for the core 12799 subsystem are shown below. These are the code and data sizes for the 12800 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12801 These 12802 values do not include any ACPI driver or OSPM code. The debug version of 12803 the 12804 code includes the debug output trace mechanism and has a much larger code 12805 and data size. Note that these values will vary depending on the 12806 efficiency 12807 of the compiler and the compiler options used during generation. 12808 12809 Previous Release: 12810 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12811 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12812 Current Release: 12813 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 12814 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 12815 12816 12817 2) iASL Compiler/Disassembler: 12818 12819 Fixed an internal error that was generated for any forward references to 12820 ASL 12821 Alias objects. 12822 12823 ---------------------------------------- 12824 13 January 2006. Summary of changes for version 20060113: 12825 12826 1) ACPI CA Core Subsystem: 12827 12828 Added 2006 copyright to all module headers and signons. This affects 12829 virtually every file in the ACPICA core subsystem, iASL compiler, and the 12830 utilities. 12831 12832 Enhanced the ACPICA error reporting in order to simplify user migration 12833 to 12834 the non-debug version of ACPICA. Replaced all instances of the 12835 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 12836 debug 12837 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 12838 respectively. This preserves all error and warning messages in the non- 12839 debug 12840 version of the ACPICA code (this has been referred to as the "debug lite" 12841 option.) Over 200 cases were converted to create a total of over 380 12842 error/warning messages across the ACPICA code. This increases the code 12843 and 12844 data size of the default non-debug version of the code somewhat (about 12845 13K), 12846 but all error/warning reporting may be disabled if desired (and code 12847 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 12848 configuration option. The size of the debug version of ACPICA remains 12849 about 12850 the same. 12851 12852 Fixed a memory leak within the AML Debugger "Set" command. One object was 12853 not properly deleted for every successful invocation of the command. 12854 12855 Code and Data Size: The current and previous library sizes for the core 12856 subsystem are shown below. These are the code and data sizes for the 12857 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12858 These 12859 values do not include any ACPI driver or OSPM code. The debug version of 12860 the 12861 code includes the debug output trace mechanism and has a much larger code 12862 and data size. Note that these values will vary depending on the 12863 efficiency 12864 of the compiler and the compiler options used during generation. 12865 12866 Previous Release: 12867 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12868 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12869 Current Release: 12870 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 12871 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 12872 12873 12874 2) iASL Compiler/Disassembler: 12875 12876 The compiler now officially supports the ACPI 3.0a specification that was 12877 released on December 30, 2005. (Specification is available at 12878 www.acpi.info) 12879 12880 ---------------------------------------- 12881 16 December 2005. Summary of changes for version 20051216: 12882 12883 1) ACPI CA Core Subsystem: 12884 12885 Implemented optional support to allow unresolved names within ASL Package 12886 objects. A null object is inserted in the package when a named reference 12887 cannot be located in the current namespace. Enabled via the interpreter 12888 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 12889 machines 12890 that contain such code. 12891 12892 Implemented an optimization to the initialization sequence that can 12893 improve 12894 boot time. During ACPI device initialization, the _STA method is now run 12895 if 12896 and only if the _INI method exists. The _STA method is used to determine 12897 if 12898 the device is present; An _INI can only be run if _STA returns present, 12899 but 12900 it is a waste of time to run the _STA method if the _INI does not exist. 12901 (Prototype and assistance from Dong Wei) 12902 12903 Implemented use of the C99 uintptr_t for the pointer casting macros if it 12904 is 12905 available in the current compiler. Otherwise, the default (void *) cast 12906 is 12907 used as before. 12908 12909 Fixed some possible memory leaks found within the execution path of the 12910 Break, Continue, If, and CreateField operators. (Valery Podrezov) 12911 12912 Fixed a problem introduced in the 20051202 release where an exception is 12913 generated during method execution if a control method attempts to declare 12914 another method. 12915 12916 Moved resource descriptor string constants that are used by both the AML 12917 disassembler and AML debugger to the common utilities directory so that 12918 these components are independent. 12919 12920 Implemented support in the AcpiExec utility (-e switch) to globally 12921 ignore 12922 exceptions during control method execution (method is not aborted.) 12923 12924 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 12925 generation. 12926 12927 Code and Data Size: The current and previous library sizes for the core 12928 subsystem are shown below. These are the code and data sizes for the 12929 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12930 These 12931 values do not include any ACPI driver or OSPM code. The debug version of 12932 the 12933 code includes the debug output trace mechanism and has a much larger code 12934 and data size. Note that these values will vary depending on the 12935 efficiency 12936 of the compiler and the compiler options used during generation. 12937 12938 Previous Release: 12939 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12940 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 12941 Current Release: 12942 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 12943 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 12944 12945 12946 2) iASL Compiler/Disassembler: 12947 12948 Fixed a problem where a CPU stack overflow fault could occur if a 12949 recursive 12950 method call was made from within a Return statement. 12951 12952 ---------------------------------------- 12953 02 December 2005. Summary of changes for version 20051202: 12954 12955 1) ACPI CA Core Subsystem: 12956 12957 Modified the parsing of control methods to no longer create namespace 12958 objects during the first pass of the parse. Objects are now created only 12959 during the execute phase, at the moment the namespace creation operator 12960 is 12961 encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 12962 This 12963 should eliminate ALREADY_EXISTS exceptions seen on some machines where 12964 reentrant control methods are protected by an AML mutex. The mutex will 12965 now 12966 correctly block multiple threads from attempting to create the same 12967 object 12968 more than once. 12969 12970 Increased the number of available Owner Ids for namespace object tracking 12971 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 12972 on 12973 some machines with a large number of ACPI tables (either static or 12974 dynamic). 12975 12976 Fixed a problem with the AcpiExec utility where a fault could occur when 12977 the 12978 -b switch (batch mode) is used. 12979 12980 Enhanced the namespace dump routine to output the owner ID for each 12981 namespace object. 12982 12983 Code and Data Size: The current and previous library sizes for the core 12984 subsystem are shown below. These are the code and data sizes for the 12985 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12986 These 12987 values do not include any ACPI driver or OSPM code. The debug version of 12988 the 12989 code includes the debug output trace mechanism and has a much larger code 12990 and data size. Note that these values will vary depending on the 12991 efficiency 12992 of the compiler and the compiler options used during generation. 12993 12994 Previous Release: 12995 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12996 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 12997 Current Release: 12998 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 12999 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 13000 13001 13002 2) iASL Compiler/Disassembler: 13003 13004 Fixed a parse error during compilation of certain Switch/Case constructs. 13005 To 13006 simplify the parse, the grammar now allows for multiple Default 13007 statements 13008 and this error is now detected and flagged during the analysis phase. 13009 13010 Disassembler: The disassembly now includes the contents of the original 13011 table header within a comment at the start of the file. This includes the 13012 name and version of the original ASL compiler. 13013 13014 ---------------------------------------- 13015 17 November 2005. Summary of changes for version 20051117: 13016 13017 1) ACPI CA Core Subsystem: 13018 13019 Fixed a problem in the AML parser where the method thread count could be 13020 decremented below zero if any errors occurred during the method parse 13021 phase. 13022 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 13023 machines. 13024 This also fixed a related regression with the mechanism that detects and 13025 corrects methods that cannot properly handle reentrancy (related to the 13026 deployment of the new OwnerId mechanism.) 13027 13028 Eliminated the pre-parsing of control methods (to detect errors) during 13029 table load. Related to the problem above, this was causing unwind issues 13030 if 13031 any errors occurred during the parse, and it seemed to be overkill. A 13032 table 13033 load should not be aborted if there are problems with any single control 13034 method, thus rendering this feature rather pointless. 13035 13036 Fixed a problem with the new table-driven resource manager where an 13037 internal 13038 buffer overflow could occur for small resource templates. 13039 13040 Implemented a new external interface, AcpiGetVendorResource. This 13041 interface 13042 will find and return a vendor-defined resource descriptor within a _CRS 13043 or 13044 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 13045 Helgaas. 13046 13047 Removed the length limit (200) on string objects as per the upcoming ACPI 13048 3.0A specification. This affects the following areas of the interpreter: 13049 1) 13050 any implicit conversion of a Buffer to a String, 2) a String object 13051 result 13052 of the ASL Concatenate operator, 3) the String object result of the ASL 13053 ToString operator. 13054 13055 Fixed a problem in the Windows OS interface layer (OSL) where a 13056 WAIT_FOREVER 13057 on a semaphore object would incorrectly timeout. This allows the 13058 multithreading features of the AcpiExec utility to work properly under 13059 Windows. 13060 13061 Updated the Linux makefiles for the iASL compiler and AcpiExec to include 13062 the recently added file named "utresrc.c". 13063 13064 Code and Data Size: The current and previous library sizes for the core 13065 subsystem are shown below. These are the code and data sizes for the 13066 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13067 These 13068 values do not include any ACPI driver or OSPM code. The debug version of 13069 the 13070 code includes the debug output trace mechanism and has a much larger code 13071 and data size. Note that these values will vary depending on the 13072 efficiency 13073 of the compiler and the compiler options used during generation. 13074 13075 Previous Release: 13076 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13077 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13078 Current Release: 13079 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 13080 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13081 13082 13083 2) iASL Compiler/Disassembler: 13084 13085 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 13086 specification. For the iASL compiler, this means that string literals 13087 within 13088 the source ASL can be of any length. 13089 13090 Enhanced the listing output to dump the AML code for resource descriptors 13091 immediately after the ASL code for each descriptor, instead of in a block 13092 at 13093 the end of the entire resource template. 13094 13095 Enhanced the compiler debug output to dump the entire original parse tree 13096 constructed during the parse phase, before any transforms are applied to 13097 the 13098 tree. The transformed tree is dumped also. 13099 13100 ---------------------------------------- 13101 02 November 2005. Summary of changes for version 20051102: 13102 13103 1) ACPI CA Core Subsystem: 13104 13105 Modified the subsystem initialization sequence to improve GPE support. 13106 The 13107 GPE initialization has been split into two parts in order to defer 13108 execution 13109 of the _PRW methods (Power Resources for Wake) until after the hardware 13110 is 13111 fully initialized and the SCI handler is installed. This allows the _PRW 13112 methods to access fields protected by the Global Lock. This will fix 13113 systems 13114 where a NO_GLOBAL_LOCK exception has been seen during initialization. 13115 13116 Converted the ACPI internal object disassemble and display code within 13117 the 13118 AML debugger to fully table-driven operation, reducing code size and 13119 increasing maintainability. 13120 13121 Fixed a regression with the ConcatenateResTemplate() ASL operator 13122 introduced 13123 in the 20051021 release. 13124 13125 Implemented support for "local" internal ACPI object types within the 13126 debugger "Object" command and the AcpiWalkNamespace external interfaces. 13127 These local types include RegionFields, BankFields, IndexFields, Alias, 13128 and 13129 reference objects. 13130 13131 Moved common AML resource handling code into a new file, "utresrc.c". 13132 This 13133 code is shared by both the Resource Manager and the AML Debugger. 13134 13135 Code and Data Size: The current and previous library sizes for the core 13136 subsystem are shown below. These are the code and data sizes for the 13137 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13138 These 13139 values do not include any ACPI driver or OSPM code. The debug version of 13140 the 13141 code includes the debug output trace mechanism and has a much larger code 13142 and data size. Note that these values will vary depending on the 13143 efficiency 13144 of the compiler and the compiler options used during generation. 13145 13146 Previous Release: 13147 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13148 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13149 Current Release: 13150 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 13151 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 13152 13153 13154 2) iASL Compiler/Disassembler: 13155 13156 Fixed a problem with very large initializer lists (more than 4000 13157 elements) 13158 for both Buffer and Package objects where the parse stack could overflow. 13159 13160 Enhanced the pre-compile source code scan for non-ASCII characters to 13161 ignore 13162 characters within comment fields. The scan is now always performed and is 13163 no 13164 longer optional, detecting invalid characters within a source file 13165 immediately rather than during the parse phase or later. 13166 13167 Enhanced the ASL grammar definition to force early reductions on all 13168 list- 13169 style grammar elements so that the overall parse stack usage is greatly 13170 reduced. This should improve performance and reduce the possibility of 13171 parse 13172 stack overflow. 13173 13174 Eliminated all reduce/reduce conflicts in the iASL parser generation. 13175 Also, 13176 with the addition of a %expected statement, the compiler generates from 13177 source with no warnings. 13178 13179 Fixed a possible segment fault in the disassembler if the input filename 13180 does not contain a "dot" extension (Thomas Renninger). 13181 13182 ---------------------------------------- 13183 21 October 2005. Summary of changes for version 20051021: 13184 13185 1) ACPI CA Core Subsystem: 13186 13187 Implemented support for the EM64T and other x86-64 processors. This 13188 essentially entails recognizing that these processors support non-aligned 13189 memory transfers. Previously, all 64-bit processors were assumed to lack 13190 hardware support for non-aligned transfers. 13191 13192 Completed conversion of the Resource Manager to nearly full table-driven 13193 operation. Specifically, the resource conversion code (convert AML to 13194 internal format and the reverse) and the debug code to dump internal 13195 resource descriptors are fully table-driven, reducing code and data size 13196 and 13197 improving maintainability. 13198 13199 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 13200 word 13201 on 64-bit processors instead of a fixed 32-bit word. (With assistance 13202 from 13203 Alexey Starikovskiy) 13204 13205 Implemented support within the resource conversion code for the Type- 13206 Specific byte within the various ACPI 3.0 *WordSpace macros. 13207 13208 Fixed some issues within the resource conversion code for the type- 13209 specific 13210 flags for both Memory and I/O address resource descriptors. For Memory, 13211 implemented support for the MTP and TTP flags. For I/O, split the TRS and 13212 TTP flags into two separate fields. 13213 13214 Code and Data Size: The current and previous library sizes for the core 13215 subsystem are shown below. These are the code and data sizes for the 13216 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13217 These 13218 values do not include any ACPI driver or OSPM code. The debug version of 13219 the 13220 code includes the debug output trace mechanism and has a much larger code 13221 and data size. Note that these values will vary depending on the 13222 efficiency 13223 of the compiler and the compiler options used during generation. 13224 13225 Previous Release: 13226 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13227 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13228 Current Release: 13229 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 13230 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 13231 13232 13233 13234 2) iASL Compiler/Disassembler: 13235 13236 Relaxed a compiler restriction that disallowed a ResourceIndex byte if 13237 the 13238 corresponding ResourceSource string was not also present in a resource 13239 descriptor declaration. This restriction caused problems with existing 13240 AML/ASL code that includes the Index byte without the string. When such 13241 AML 13242 was disassembled, it could not be compiled without modification. Further, 13243 the modified code created a resource template with a different size than 13244 the 13245 original, breaking code that used fixed offsets into the resource 13246 template 13247 buffer. 13248 13249 Removed a recent feature of the disassembler to ignore a lone 13250 ResourceIndex 13251 byte. This byte is now emitted if present so that the exact AML can be 13252 reproduced when the disassembled code is recompiled. 13253 13254 Improved comments and text alignment for the resource descriptor code 13255 emitted by the disassembler. 13256 13257 Implemented disassembler support for the ACPI 3.0 AccessSize field within 13258 a 13259 Register() resource descriptor. 13260 13261 ---------------------------------------- 13262 30 September 2005. Summary of changes for version 20050930: 13263 13264 1) ACPI CA Core Subsystem: 13265 13266 Completed a major overhaul of the Resource Manager code - specifically, 13267 optimizations in the area of the AML/internal resource conversion code. 13268 The 13269 code has been optimized to simplify and eliminate duplicated code, CPU 13270 stack 13271 use has been decreased by optimizing function parameters and local 13272 variables, and naming conventions across the manager have been 13273 standardized 13274 for clarity and ease of maintenance (this includes function, parameter, 13275 variable, and struct/typedef names.) The update may force changes in some 13276 driver code, depending on how resources are handled by the host OS. 13277 13278 All Resource Manager dispatch and information tables have been moved to a 13279 single location for clarity and ease of maintenance. One new file was 13280 created, named "rsinfo.c". 13281 13282 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 13283 guarantee that the argument is not evaluated twice, making them less 13284 prone 13285 to macro side-effects. However, since there exists the possibility of 13286 additional stack use if a particular compiler cannot optimize them (such 13287 as 13288 in the debug generation case), the original macros are optionally 13289 available. 13290 Note that some invocations of the return_VALUE macro may now cause size 13291 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 13292 to 13293 eliminate these. (From Randy Dunlap) 13294 13295 Implemented a new mechanism to enable debug tracing for individual 13296 control 13297 methods. A new external interface, AcpiDebugTrace, is provided to enable 13298 this mechanism. The intent is to allow the host OS to easily enable and 13299 disable tracing for problematic control methods. This interface can be 13300 easily exposed to a user or debugger interface if desired. See the file 13301 psxface.c for details. 13302 13303 AcpiUtCallocate will now return a valid pointer if a length of zero is 13304 specified - a length of one is used and a warning is issued. This matches 13305 the behavior of AcpiUtAllocate. 13306 13307 Code and Data Size: The current and previous library sizes for the core 13308 subsystem are shown below. These are the code and data sizes for the 13309 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13310 These 13311 values do not include any ACPI driver or OSPM code. The debug version of 13312 the 13313 code includes the debug output trace mechanism and has a much larger code 13314 and data size. Note that these values will vary depending on the 13315 efficiency 13316 of the compiler and the compiler options used during generation. 13317 13318 Previous Release: 13319 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13320 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13321 Current Release: 13322 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 13323 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 13324 13325 13326 2) iASL Compiler/Disassembler: 13327 13328 A remark is issued if the effective compile-time length of a package or 13329 buffer is zero. Previously, this was a warning. 13330 13331 ---------------------------------------- 13332 16 September 2005. Summary of changes for version 20050916: 13333 13334 1) ACPI CA Core Subsystem: 13335 13336 Fixed a problem within the Resource Manager where support for the Generic 13337 Register descriptor was not fully implemented. This descriptor is now 13338 fully 13339 recognized, parsed, disassembled, and displayed. 13340 13341 Completely restructured the Resource Manager code to utilize table-driven 13342 dispatch and lookup, eliminating many of the large switch() statements. 13343 This 13344 reduces overall subsystem code size and code complexity. Affects the 13345 resource parsing and construction, disassembly, and debug dump output. 13346 13347 Cleaned up and restructured the debug dump output for all resource 13348 descriptors. Improved readability of the output and reduced code size. 13349 13350 Fixed a problem where changes to internal data structures caused the 13351 optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 13352 13353 Code and Data Size: The current and previous library sizes for the core 13354 subsystem are shown below. These are the code and data sizes for the 13355 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 13356 These 13357 values do not include any ACPI driver or OSPM code. The debug version of 13358 the 13359 code includes the debug output trace mechanism and has a much larger code 13360 and data size. Note that these values will vary depending on the 13361 efficiency 13362 of the compiler and the compiler options used during generation. 13363 13364 Previous Release: 13365 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13366 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13367 Current Release: 13368 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 13369 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 13370 13371 13372 2) iASL Compiler/Disassembler: 13373 13374 Updated the disassembler to automatically insert an EndDependentFn() 13375 macro 13376 into the ASL stream if this macro is missing in the original AML code, 13377 simplifying compilation of the resulting ASL module. 13378 13379 Fixed a problem in the disassembler where a disassembled ResourceSource 13380 string (within a large resource descriptor) was not surrounded by quotes 13381 and 13382 not followed by a comma, causing errors when the resulting ASL module was 13383 compiled. Also, escape sequences within a ResourceSource string are now 13384 handled correctly (especially "\\") 13385 13386 ---------------------------------------- 13387 02 September 2005. Summary of changes for version 20050902: 13388 13389 1) ACPI CA Core Subsystem: 13390 13391 Fixed a problem with the internal Owner ID allocation and deallocation 13392 mechanisms for control method execution and recursive method invocation. 13393 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 13394 messages seen on some systems. Recursive method invocation depth is 13395 currently limited to 255. (Alexey Starikovskiy) 13396 13397 Completely eliminated all vestiges of support for the "module-level 13398 executable code" until this support is fully implemented and debugged. 13399 This 13400 should eliminate the NO_RETURN_VALUE exceptions seen during table load on 13401 some systems that invoke this support. 13402 13403 Fixed a problem within the resource manager code where the transaction 13404 flags 13405 for a 64-bit address descriptor were handled incorrectly in the type- 13406 specific flag byte. 13407 13408 Consolidated duplicate code within the address descriptor resource 13409 manager 13410 code, reducing overall subsystem code size. 13411 13412 Fixed a fault when using the AML debugger "disassemble" command to 13413 disassemble individual control methods. 13414 13415 Removed references to the "release_current" directory within the Unix 13416 release package. 13417 13418 Code and Data Size: The current and previous core subsystem library sizes 13419 are shown below. These are the code and data sizes for the acpica.lib 13420 produced by the Microsoft Visual C++ 6.0 compiler. These values do not 13421 include any ACPI driver or OSPM code. The debug version of the code 13422 includes 13423 the debug output trace mechanism and has a much larger code and data 13424 size. 13425 Note that these values will vary depending on the efficiency of the 13426 compiler 13427 and the compiler options used during generation. 13428 13429 Previous Release: 13430 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13431 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13432 Current Release: 13433 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 13434 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 13435 13436 13437 2) iASL Compiler/Disassembler: 13438 13439 Implemented an error check for illegal duplicate values in the interrupt 13440 and 13441 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 13442 Interrupt(). 13443 13444 Implemented error checking for the Irq() and IrqNoFlags() macros to 13445 detect 13446 too many values in the interrupt list (16 max) and invalid values in the 13447 list (range 0 - 15) 13448 13449 The maximum length string literal within an ASL file is now restricted to 13450 200 characters as per the ACPI specification. 13451 13452 Fixed a fault when using the -ln option (generate namespace listing). 13453 13454 Implemented an error check to determine if a DescriptorName within a 13455 resource descriptor has already been used within the current scope. 13456 13457 ---------------------------------------- 13458 15 August 2005. Summary of changes for version 20050815: 13459 13460 1) ACPI CA Core Subsystem: 13461 13462 Implemented a full bytewise compare to determine if a table load request 13463 is 13464 attempting to load a duplicate table. The compare is performed if the 13465 table 13466 signatures and table lengths match. This will allow different tables with 13467 the same OEM Table ID and revision to be loaded - probably against the 13468 ACPI 13469 specification, but discovered in the field nonetheless. 13470 13471 Added the changes.txt logfile to each of the zipped release packages. 13472 13473 Code and Data Size: Current and previous core subsystem library sizes are 13474 shown below. These are the code and data sizes for the acpica.lib 13475 produced 13476 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13477 any ACPI driver or OSPM code. The debug version of the code includes the 13478 debug output trace mechanism and has a much larger code and data size. 13479 Note 13480 that these values will vary depending on the efficiency of the compiler 13481 and 13482 the compiler options used during generation. 13483 13484 Previous Release: 13485 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13486 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13487 Current Release: 13488 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13489 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 13490 13491 13492 2) iASL Compiler/Disassembler: 13493 13494 Fixed a problem where incorrect AML code could be generated for Package 13495 objects if optimization is disabled (via the -oa switch). 13496 13497 Fixed a problem with where incorrect AML code is generated for variable- 13498 length packages when the package length is not specified and the number 13499 of 13500 initializer values is greater than 255. 13501 13502 13503 ---------------------------------------- 13504 29 July 2005. Summary of changes for version 20050729: 13505 13506 1) ACPI CA Core Subsystem: 13507 13508 Implemented support to ignore an attempt to install/load a particular 13509 ACPI 13510 table more than once. Apparently there exists BIOS code that repeatedly 13511 attempts to load the same SSDT upon certain events. With assistance from 13512 Venkatesh Pallipadi. 13513 13514 Restructured the main interface to the AML parser in order to correctly 13515 handle all exceptional conditions. This will prevent leakage of the 13516 OwnerId 13517 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 13518 some 13519 machines. With assistance from Alexey Starikovskiy. 13520 13521 Support for "module level code" has been disabled in this version due to 13522 a 13523 number of issues that have appeared on various machines. The support can 13524 be 13525 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 13526 compilation. When the issues are fully resolved, the code will be enabled 13527 by 13528 default again. 13529 13530 Modified the internal functions for debug print support to define the 13531 FunctionName parameter as a (const char *) for compatibility with 13532 compiler 13533 built-in macros such as __FUNCTION__, etc. 13534 13535 Linted the entire ACPICA source tree for both 32-bit and 64-bit. 13536 13537 Implemented support to display an object count summary for the AML 13538 Debugger 13539 commands Object and Methods. 13540 13541 Code and Data Size: Current and previous core subsystem library sizes are 13542 shown below. These are the code and data sizes for the acpica.lib 13543 produced 13544 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13545 any ACPI driver or OSPM code. The debug version of the code includes the 13546 debug output trace mechanism and has a much larger code and data size. 13547 Note 13548 that these values will vary depending on the efficiency of the compiler 13549 and 13550 the compiler options used during generation. 13551 13552 Previous Release: 13553 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13554 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13555 Current Release: 13556 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 13557 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 13558 13559 13560 2) iASL Compiler/Disassembler: 13561 13562 Fixed a regression that appeared in the 20050708 version of the compiler 13563 where an error message was inadvertently emitted for invocations of the 13564 _OSI 13565 reserved control method. 13566 13567 ---------------------------------------- 13568 08 July 2005. Summary of changes for version 20050708: 13569 13570 1) ACPI CA Core Subsystem: 13571 13572 The use of the CPU stack in the debug version of the subsystem has been 13573 considerably reduced. Previously, a debug structure was declared in every 13574 function that used the debug macros. This structure has been removed in 13575 favor of declaring the individual elements as parameters to the debug 13576 functions. This reduces the cumulative stack use during nested execution 13577 of 13578 ACPI function calls at the cost of a small increase in the code size of 13579 the 13580 debug version of the subsystem. With assistance from Alexey Starikovskiy 13581 and 13582 Len Brown. 13583 13584 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 13585 headers to define a macro that will return the current function name at 13586 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 13587 by 13588 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 13589 compiler-dependent header, the function name is saved on the CPU stack 13590 (one 13591 pointer per function.) This mechanism is used because apparently there 13592 exists no standard ANSI-C defined macro that that returns the function 13593 name. 13594 13595 Redesigned and reimplemented the "Owner ID" mechanism used to track 13596 namespace objects created/deleted by ACPI tables and control method 13597 execution. A bitmap is now used to allocate and free the IDs, thus 13598 solving 13599 the wraparound problem present in the previous implementation. The size 13600 of 13601 the namespace node descriptor was reduced by 2 bytes as a result (Alexey 13602 Starikovskiy). 13603 13604 Removed the UINT32_BIT and UINT16_BIT types that were used for the 13605 bitfield 13606 flag definitions within the headers for the predefined ACPI tables. These 13607 have been replaced by UINT8_BIT in order to increase the code portability 13608 of 13609 the subsystem. If the use of UINT8 remains a problem, we may be forced to 13610 eliminate bitfields entirely because of a lack of portability. 13611 13612 Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 13613 This 13614 is a frequently used function and this improvement increases the 13615 performance 13616 of the entire subsystem (Alexey Starikovskiy). 13617 13618 Fixed several possible memory leaks and the inverse - premature object 13619 deletion (Alexey Starikovskiy). 13620 13621 Code and Data Size: Current and previous core subsystem library sizes are 13622 shown below. These are the code and data sizes for the acpica.lib 13623 produced 13624 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13625 any ACPI driver or OSPM code. The debug version of the code includes the 13626 debug output trace mechanism and has a much larger code and data size. 13627 Note 13628 that these values will vary depending on the efficiency of the compiler 13629 and 13630 the compiler options used during generation. 13631 13632 Previous Release: 13633 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13634 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13635 Current Release: 13636 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 13637 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 13638 13639 ---------------------------------------- 13640 24 June 2005. Summary of changes for version 20050624: 13641 13642 1) ACPI CA Core Subsystem: 13643 13644 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 13645 the host-defined cache object. This allows the OSL implementation to 13646 define 13647 and type this object in any manner desired, simplifying the OSL 13648 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 13649 Linux, and should be defined in the OS-specific header file for other 13650 operating systems as required. 13651 13652 Changed the interface to AcpiOsAcquireObject to directly return the 13653 requested object as the function return (instead of ACPI_STATUS.) This 13654 change was made for performance reasons, since this is the purpose of the 13655 interface in the first place. AcpiOsAcquireObject is now similar to the 13656 AcpiOsAllocate interface. 13657 13658 Implemented a new AML debugger command named Businfo. This command 13659 displays 13660 information about all devices that have an associate _PRT object. The 13661 _ADR, 13662 _HID, _UID, and _CID are displayed for these devices. 13663 13664 Modified the initialization sequence in AcpiInitializeSubsystem to call 13665 the 13666 OSL interface AcpiOslInitialize first, before any local initialization. 13667 This 13668 change was required because the global initialization now calls OSL 13669 interfaces. 13670 13671 Enhanced the Dump command to display the entire contents of Package 13672 objects 13673 (including all sub-objects and their values.) 13674 13675 Restructured the code base to split some files because of size and/or 13676 because the code logically belonged in a separate file. New files are 13677 listed 13678 below. All makefiles and project files included in the ACPI CA release 13679 have 13680 been updated. 13681 utilities/utcache.c /* Local cache interfaces */ 13682 utilities/utmutex.c /* Local mutex support */ 13683 utilities/utstate.c /* State object support */ 13684 interpreter/parser/psloop.c /* Main AML parse loop */ 13685 13686 Code and Data Size: Current and previous core subsystem library sizes are 13687 shown below. These are the code and data sizes for the acpica.lib 13688 produced 13689 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13690 any ACPI driver or OSPM code. The debug version of the code includes the 13691 debug output trace mechanism and has a much larger code and data size. 13692 Note 13693 that these values will vary depending on the efficiency of the compiler 13694 and 13695 the compiler options used during generation. 13696 13697 Previous Release: 13698 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13699 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13700 Current Release: 13701 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 13702 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 13703 13704 13705 2) iASL Compiler/Disassembler: 13706 13707 Fixed a regression introduced in version 20050513 where the use of a 13708 Package 13709 object within a Case() statement caused a compile time exception. The 13710 original behavior has been restored (a Match() operator is emitted.) 13711 13712 ---------------------------------------- 13713 17 June 2005. Summary of changes for version 20050617: 13714 13715 1) ACPI CA Core Subsystem: 13716 13717 Moved the object cache operations into the OS interface layer (OSL) to 13718 allow 13719 the host OS to handle these operations if desired (for example, the Linux 13720 OSL will invoke the slab allocator). This support is optional; the 13721 compile 13722 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 13723 cache 13724 code in the ACPI CA core. The new OSL interfaces are shown below. See 13725 utalloc.c for an example implementation, and acpiosxf.h for the exact 13726 interface definitions. With assistance from Alexey Starikovskiy. 13727 AcpiOsCreateCache 13728 AcpiOsDeleteCache 13729 AcpiOsPurgeCache 13730 AcpiOsAcquireObject 13731 AcpiOsReleaseObject 13732 13733 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 13734 return 13735 and restore a flags parameter. This fits better with many OS lock models. 13736 Note: the current execution state (interrupt handler or not) is no longer 13737 passed to these interfaces. If necessary, the OSL must determine this 13738 state 13739 by itself, a simple and fast operation. With assistance from Alexey 13740 Starikovskiy. 13741 13742 Fixed a problem in the ACPI table handling where a valid XSDT was assumed 13743 present if the revision of the RSDP was 2 or greater. According to the 13744 ACPI 13745 specification, the XSDT is optional in all cases, and the table manager 13746 therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 13747 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 13748 contain 13749 only the RSDT. 13750 13751 Fixed an interpreter problem with the Mid() operator in the case of an 13752 input 13753 string where the resulting output string is of zero length. It now 13754 correctly 13755 returns a valid, null terminated string object instead of a string object 13756 with a null pointer. 13757 13758 Fixed a problem with the control method argument handling to allow a 13759 store 13760 to an Arg object that already contains an object of type Device. The 13761 Device 13762 object is now correctly overwritten. Previously, an error was returned. 13763 13764 13765 Enhanced the debugger Find command to emit object values in addition to 13766 the 13767 found object pathnames. The output format is the same as the dump 13768 namespace 13769 command. 13770 13771 Enhanced the debugger Set command. It now has the ability to set the 13772 value 13773 of any Named integer object in the namespace (Previously, only method 13774 locals 13775 and args could be set.) 13776 13777 Code and Data Size: Current and previous core subsystem library sizes are 13778 shown below. These are the code and data sizes for the acpica.lib 13779 produced 13780 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13781 any ACPI driver or OSPM code. The debug version of the code includes the 13782 debug output trace mechanism and has a much larger code and data size. 13783 Note 13784 that these values will vary depending on the efficiency of the compiler 13785 and 13786 the compiler options used during generation. 13787 13788 Previous Release: 13789 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13790 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13791 Current Release: 13792 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 13793 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 13794 13795 13796 2) iASL Compiler/Disassembler: 13797 13798 Fixed a regression in the disassembler where if/else/while constructs 13799 were 13800 output incorrectly. This problem was introduced in the previous release 13801 (20050526). This problem also affected the single-step disassembly in the 13802 debugger. 13803 13804 Fixed a problem where compiling the reserved _OSI method would randomly 13805 (but 13806 rarely) produce compile errors. 13807 13808 Enhanced the disassembler to emit compilable code in the face of 13809 incorrect 13810 AML resource descriptors. If the optional ResourceSourceIndex is present, 13811 but the ResourceSource is not, do not emit the ResourceSourceIndex in the 13812 disassembly. Otherwise, the resulting code cannot be compiled without 13813 errors. 13814 13815 ---------------------------------------- 13816 26 May 2005. Summary of changes for version 20050526: 13817 13818 1) ACPI CA Core Subsystem: 13819 13820 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 13821 the module level (not within a control method.) These opcodes are 13822 executed 13823 exactly once at the time the table is loaded. This type of code was legal 13824 up 13825 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 13826 in 13827 order to provide backwards compatibility with earlier BIOS 13828 implementations. 13829 This eliminates the "Encountered executable code at module level" warning 13830 that was previously generated upon detection of such code. 13831 13832 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 13833 inadvertently be generated during the lookup of namespace objects in the 13834 second pass parse of ACPI tables and control methods. It appears that 13835 this 13836 problem could occur during the resolution of forward references to 13837 namespace 13838 objects. 13839 13840 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 13841 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 13842 allows the deadlock detection debug code to be compiled out in the normal 13843 case, improving mutex performance (and overall subsystem performance) 13844 considerably. 13845 13846 Implemented a handful of miscellaneous fixes for possible memory leaks on 13847 error conditions and error handling control paths. These fixes were 13848 suggested by FreeBSD and the Coverity Prevent source code analysis tool. 13849 13850 Added a check for a null RSDT pointer in AcpiGetFirmwareTable 13851 (tbxfroot.c) 13852 to prevent a fault in this error case. 13853 13854 Code and Data Size: Current and previous core subsystem library sizes are 13855 shown below. These are the code and data sizes for the acpica.lib 13856 produced 13857 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13858 any ACPI driver or OSPM code. The debug version of the code includes the 13859 debug output trace mechanism and has a much larger code and data size. 13860 Note 13861 that these values will vary depending on the efficiency of the compiler 13862 and 13863 the compiler options used during generation. 13864 13865 Previous Release: 13866 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13867 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13868 Current Release: 13869 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 13870 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 13871 13872 13873 2) iASL Compiler/Disassembler: 13874 13875 Implemented support to allow Type 1 and Type 2 ASL operators to appear at 13876 the module level (not within a control method.) These operators will be 13877 executed once at the time the table is loaded. This type of code was 13878 legal 13879 up until the release of ACPI 2.0B (2002) and is now supported by the iASL 13880 compiler in order to provide backwards compatibility with earlier BIOS 13881 ASL 13882 code. 13883 13884 The ACPI integer width (specified via the table revision ID or the -r 13885 override, 32 or 64 bits) is now used internally during compile-time 13886 constant 13887 folding to ensure that constants are truncated to 32 bits if necessary. 13888 Previously, the revision ID value was only emitted in the AML table 13889 header. 13890 13891 An error message is now generated for the Mutex and Method operators if 13892 the 13893 SyncLevel parameter is outside the legal range of 0 through 15. 13894 13895 Fixed a problem with the Method operator ParameterTypes list handling 13896 (ACPI 13897 3.0). Previously, more than 2 types or 2 arguments generated a syntax 13898 error. 13899 The actual underlying implementation of method argument typechecking is 13900 still under development, however. 13901 13902 ---------------------------------------- 13903 13 May 2005. Summary of changes for version 20050513: 13904 13905 1) ACPI CA Core Subsystem: 13906 13907 Implemented support for PCI Express root bridges -- added support for 13908 device 13909 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 13910 13911 The interpreter now automatically truncates incoming 64-bit constants to 13912 32 13913 bits if currently executing out of a 32-bit ACPI table (Revision < 2). 13914 This 13915 also affects the iASL compiler constant folding. (Note: as per below, the 13916 iASL compiler no longer allows 64-bit constants within 32-bit tables.) 13917 13918 Fixed a problem where string and buffer objects with "static" pointers 13919 (pointers to initialization data within an ACPI table) were not handled 13920 consistently. The internal object copy operation now always copies the 13921 data 13922 to a newly allocated buffer, regardless of whether the source object is 13923 static or not. 13924 13925 Fixed a problem with the FromBCD operator where an implicit result 13926 conversion was improperly performed while storing the result to the 13927 target 13928 operand. Since this is an "explicit conversion" operator, the implicit 13929 conversion should never be performed on the output. 13930 13931 Fixed a problem with the CopyObject operator where a copy to an existing 13932 named object did not always completely overwrite the existing object 13933 stored 13934 at name. Specifically, a buffer-to-buffer copy did not delete the 13935 existing 13936 buffer. 13937 13938 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 13939 and 13940 structs for consistency. 13941 13942 Code and Data Size: Current and previous core subsystem library sizes are 13943 shown below. These are the code and data sizes for the acpica.lib 13944 produced 13945 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13946 any ACPI driver or OSPM code. The debug version of the code includes the 13947 debug output trace mechanism and has a much larger code and data size. 13948 Note 13949 that these values will vary depending on the efficiency of the compiler 13950 and 13951 the compiler options used during generation. 13952 13953 Previous Release: 13954 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13955 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13956 Current Release: (Same sizes) 13957 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 13958 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 13959 13960 13961 2) iASL Compiler/Disassembler: 13962 13963 The compiler now emits a warning if an attempt is made to generate a 64- 13964 bit 13965 integer constant from within a 32-bit ACPI table (Revision < 2). The 13966 integer 13967 is truncated to 32 bits. 13968 13969 Fixed a problem with large package objects: if the static length of the 13970 package is greater than 255, the "variable length package" opcode is 13971 emitted. Previously, this caused an error. This requires an update to the 13972 ACPI spec, since it currently (incorrectly) states that packages larger 13973 than 13974 255 elements are not allowed. 13975 13976 The disassembler now correctly handles variable length packages and 13977 packages 13978 larger than 255 elements. 13979 13980 ---------------------------------------- 13981 08 April 2005. Summary of changes for version 20050408: 13982 13983 1) ACPI CA Core Subsystem: 13984 13985 Fixed three cases in the interpreter where an "index" argument to an ASL 13986 function was still (internally) 32 bits instead of the required 64 bits. 13987 This was the Index argument to the Index, Mid, and Match operators. 13988 13989 The "strupr" function is now permanently local (AcpiUtStrupr), since this 13990 is 13991 not a POSIX-defined function and not present in most kernel-level C 13992 libraries. All references to the C library strupr function have been 13993 removed 13994 from the headers. 13995 13996 Completed the deployment of static functions/prototypes. All prototypes 13997 with 13998 the static attribute have been moved from the headers to the owning C 13999 file. 14000 14001 Implemented an extract option (-e) for the AcpiBin utility (AML binary 14002 utility). This option allows the utility to extract individual ACPI 14003 tables 14004 from the output of AcpiDmp. It provides the same functionality of the 14005 acpixtract.pl perl script without the worry of setting the correct perl 14006 options. AcpiBin runs on Windows and has not yet been generated/validated 14007 in 14008 the Linux/Unix environment (but should be soon). 14009 14010 Updated and fixed the table dump option for AcpiBin (-d). This option 14011 converts a single ACPI table to a hex/ascii file, similar to the output 14012 of 14013 AcpiDmp. 14014 14015 Code and Data Size: Current and previous core subsystem library sizes are 14016 shown below. These are the code and data sizes for the acpica.lib 14017 produced 14018 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14019 any ACPI driver or OSPM code. The debug version of the code includes the 14020 debug output trace mechanism and has a much larger code and data size. 14021 Note 14022 that these values will vary depending on the efficiency of the compiler 14023 and 14024 the compiler options used during generation. 14025 14026 Previous Release: 14027 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14028 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14029 Current Release: 14030 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 14031 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 14032 14033 14034 2) iASL Compiler/Disassembler: 14035 14036 Disassembler fix: Added a check to ensure that the table length found in 14037 the 14038 ACPI table header within the input file is not longer than the actual 14039 input 14040 file size. This indicates some kind of file or table corruption. 14041 14042 ---------------------------------------- 14043 29 March 2005. Summary of changes for version 20050329: 14044 14045 1) ACPI CA Core Subsystem: 14046 14047 An error is now generated if an attempt is made to create a Buffer Field 14048 of 14049 length zero (A CreateField with a length operand of zero.) 14050 14051 The interpreter now issues a warning whenever executable code at the 14052 module 14053 level is detected during ACPI table load. This will give some idea of the 14054 prevalence of this type of code. 14055 14056 Implemented support for references to named objects (other than control 14057 methods) within package objects. 14058 14059 Enhanced package object output for the debug object. Package objects are 14060 now 14061 completely dumped, showing all elements. 14062 14063 Enhanced miscellaneous object output for the debug object. Any object can 14064 now be written to the debug object (for example, a device object can be 14065 written, and the type of the object will be displayed.) 14066 14067 The "static" qualifier has been added to all local functions across both 14068 the 14069 core subsystem and the iASL compiler. 14070 14071 The number of "long" lines (> 80 chars) within the source has been 14072 significantly reduced, by about 1/3. 14073 14074 Cleaned up all header files to ensure that all CA/iASL functions are 14075 prototyped (even static functions) and the formatting is consistent. 14076 14077 Two new header files have been added, acopcode.h and acnames.h. 14078 14079 Removed several obsolete functions that were no longer used. 14080 14081 Code and Data Size: Current and previous core subsystem library sizes are 14082 shown below. These are the code and data sizes for the acpica.lib 14083 produced 14084 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14085 any ACPI driver or OSPM code. The debug version of the code includes the 14086 debug output trace mechanism and has a much larger code and data size. 14087 Note 14088 that these values will vary depending on the efficiency of the compiler 14089 and 14090 the compiler options used during generation. 14091 14092 Previous Release: 14093 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14094 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14095 Current Release: 14096 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 14097 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 14098 14099 14100 14101 2) iASL Compiler/Disassembler: 14102 14103 Fixed a problem with the resource descriptor generation/support. For the 14104 ResourceSourceIndex and the ResourceSource fields, both must be present, 14105 or 14106 both must be not present - can't have one without the other. 14107 14108 The compiler now returns non-zero from the main procedure if any errors 14109 have 14110 occurred during the compilation. 14111 14112 14113 ---------------------------------------- 14114 09 March 2005. Summary of changes for version 20050309: 14115 14116 1) ACPI CA Core Subsystem: 14117 14118 The string-to-buffer implicit conversion code has been modified again 14119 after 14120 a change to the ACPI specification. In order to match the behavior of 14121 the 14122 other major ACPI implementation, the target buffer is no longer truncated 14123 if 14124 the source string is smaller than an existing target buffer. This change 14125 requires an update to the ACPI spec, and should eliminate the recent 14126 AE_AML_BUFFER_LIMIT issues. 14127 14128 The "implicit return" support was rewritten to a new algorithm that 14129 solves 14130 the general case. Rather than attempt to determine when a method is about 14131 to 14132 exit, the result of every ASL operator is saved momentarily until the 14133 very 14134 next ASL operator is executed. Therefore, no matter how the method exits, 14135 there will always be a saved implicit return value. This feature is only 14136 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 14137 eliminate 14138 AE_AML_NO_RETURN_VALUE errors when enabled. 14139 14140 Implemented implicit conversion support for the predicate (operand) of 14141 the 14142 If, Else, and While operators. String and Buffer arguments are 14143 automatically 14144 converted to Integers. 14145 14146 Changed the string-to-integer conversion behavior to match the new ACPI 14147 errata: "If no integer object exists, a new integer is created. The ASCII 14148 string is interpreted as a hexadecimal constant. Each string character is 14149 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 14150 with the first character as the most significant digit, and ending with 14151 the 14152 first non-hexadecimal character or end-of-string." This means that the 14153 first 14154 non-hex character terminates the conversion and this is the code that was 14155 changed. 14156 14157 Fixed a problem where the ObjectType operator would fail (fault) when 14158 used 14159 on an Index of a Package which pointed to a null package element. The 14160 operator now properly returns zero (Uninitialized) in this case. 14161 14162 Fixed a problem where the While operator used excessive memory by not 14163 properly popping the result stack during execution. There was no memory 14164 leak 14165 after execution, however. (Code provided by Valery Podrezov.) 14166 14167 Fixed a problem where references to control methods within Package 14168 objects 14169 caused the method to be invoked, instead of producing a reference object 14170 pointing to the method. 14171 14172 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 14173 to 14174 improve performance and reduce code size. (Code provided by Alexey 14175 Starikovskiy.) 14176 14177 Code and Data Size: Current and previous core subsystem library sizes are 14178 shown below. These are the code and data sizes for the acpica.lib 14179 produced 14180 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14181 any ACPI driver or OSPM code. The debug version of the code includes the 14182 debug output trace mechanism and has a much larger code and data size. 14183 Note 14184 that these values will vary depending on the efficiency of the compiler 14185 and 14186 the compiler options used during generation. 14187 14188 Previous Release: 14189 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14190 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14191 Current Release: 14192 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14193 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 14194 14195 14196 2) iASL Compiler/Disassembler: 14197 14198 Fixed a problem with the Return operator with no arguments. Since the AML 14199 grammar for the byte encoding requires an operand for the Return opcode, 14200 the 14201 compiler now emits a Return(Zero) for this case. An ACPI specification 14202 update has been written for this case. 14203 14204 For tables other than the DSDT, namepath optimization is automatically 14205 disabled. This is because SSDTs can be loaded anywhere in the namespace, 14206 the 14207 compiler has no knowledge of where, and thus cannot optimize namepaths. 14208 14209 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 14210 inadvertently omitted from the ACPI specification, and will require an 14211 update to the spec. 14212 14213 The source file scan for ASCII characters is now optional (-a). This 14214 change 14215 was made because some vendors place non-ascii characters within comments. 14216 However, the scan is simply a brute-force byte compare to ensure all 14217 characters in the file are in the range 0x00 to 0x7F. 14218 14219 Fixed a problem with the CondRefOf operator where the compiler was 14220 inappropriately checking for the existence of the target. Since the point 14221 of 14222 the operator is to check for the existence of the target at run-time, the 14223 compiler no longer checks for the target existence. 14224 14225 Fixed a problem where errors generated from the internal AML interpreter 14226 during constant folding were not handled properly, causing a fault. 14227 14228 Fixed a problem with overly aggressive range checking for the Stall 14229 operator. The valid range (max 255) is now only checked if the operand is 14230 of 14231 type Integer. All other operand types cannot be statically checked. 14232 14233 Fixed a problem where control method references within the RefOf, 14234 DeRefOf, 14235 and ObjectType operators were not treated properly. They are now treated 14236 as 14237 actual references, not method invocations. 14238 14239 Fixed and enhanced the "list namespace" option (-ln). This option was 14240 broken 14241 a number of releases ago. 14242 14243 Improved error handling for the Field, IndexField, and BankField 14244 operators. 14245 The compiler now cleanly reports and recovers from errors in the field 14246 component (FieldUnit) list. 14247 14248 Fixed a disassembler problem where the optional ResourceDescriptor fields 14249 TRS and TTP were not always handled correctly. 14250 14251 Disassembler - Comments in output now use "//" instead of "/*" 14252 14253 ---------------------------------------- 14254 28 February 2005. Summary of changes for version 20050228: 14255 14256 1) ACPI CA Core Subsystem: 14257 14258 Fixed a problem where the result of an Index() operator (an object 14259 reference) must increment the reference count on the target object for 14260 the 14261 life of the object reference. 14262 14263 Implemented AML Interpreter and Debugger support for the new ACPI 3.0 14264 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 14265 WordSpace 14266 resource descriptors. 14267 14268 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 14269 Space Descriptor" string, indicating interpreter support for the 14270 descriptors 14271 above. 14272 14273 Implemented header support for the new ACPI 3.0 FADT flag bits. 14274 14275 Implemented header support for the new ACPI 3.0 PCI Express bits for the 14276 PM1 14277 status/enable registers. 14278 14279 Updated header support for the MADT processor local Apic struct and MADT 14280 platform interrupt source struct for new ACPI 3.0 fields. 14281 14282 Implemented header support for the SRAT and SLIT ACPI tables. 14283 14284 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 14285 flag 14286 at runtime. 14287 14288 Code and Data Size: Current and previous core subsystem library sizes are 14289 shown below. These are the code and data sizes for the acpica.lib 14290 produced 14291 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14292 any ACPI driver or OSPM code. The debug version of the code includes the 14293 debug output trace mechanism and has a much larger code and data size. 14294 Note 14295 that these values will vary depending on the efficiency of the compiler 14296 and 14297 the compiler options used during generation. 14298 14299 Previous Release: 14300 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14301 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14302 Current Release: 14303 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14304 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 14305 14306 14307 2) iASL Compiler/Disassembler: 14308 14309 Fixed a problem with the internal 64-bit String-to-integer conversion 14310 with 14311 strings less than two characters long. 14312 14313 Fixed a problem with constant folding where the result of the Index() 14314 operator can not be considered a constant. This means that Index() cannot 14315 be 14316 a type3 opcode and this will require an update to the ACPI specification. 14317 14318 Disassembler: Implemented support for the TTP, MTP, and TRS resource 14319 descriptor fields. These fields were inadvertently ignored and not output 14320 in 14321 the disassembly of the resource descriptor. 14322 14323 14324 ---------------------------------------- 14325 11 February 2005. Summary of changes for version 20050211: 14326 14327 1) ACPI CA Core Subsystem: 14328 14329 Implemented ACPI 3.0 support for implicit conversion within the Match() 14330 operator. MatchObjects can now be of type integer, buffer, or string 14331 instead 14332 of just type integer. Package elements are implicitly converted to the 14333 type 14334 of the MatchObject. This change aligns the behavior of Match() with the 14335 behavior of the other logical operators (LLess(), etc.) It also requires 14336 an 14337 errata change to the ACPI specification as this support was intended for 14338 ACPI 3.0, but was inadvertently omitted. 14339 14340 Fixed a problem with the internal implicit "to buffer" conversion. 14341 Strings 14342 that are converted to buffers will cause buffer truncation if the string 14343 is 14344 smaller than the target buffer. Integers that are converted to buffers 14345 will 14346 not cause buffer truncation, only zero extension (both as per the ACPI 14347 spec.) The problem was introduced when code was added to truncate the 14348 buffer, but this should not be performed in all cases, only the string 14349 case. 14350 14351 Fixed a problem with the Buffer and Package operators where the 14352 interpreter 14353 would get confused if two such operators were used as operands to an ASL 14354 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 14355 stack was not being popped after the execution of these operators, 14356 resulting 14357 in an AE_NO_RETURN_VALUE exception. 14358 14359 Fixed a problem with constructs of the form Store(Index(...),...). The 14360 reference object returned from Index was inadvertently resolved to an 14361 actual 14362 value. This problem was introduced in version 20050114 when the behavior 14363 of 14364 Store() was modified to restrict the object types that can be used as the 14365 source operand (to match the ACPI specification.) 14366 14367 Reduced excessive stack use within the AcpiGetObjectInfo procedure. 14368 14369 Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 14370 14371 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 14372 14373 Code and Data Size: Current and previous core subsystem library sizes are 14374 shown below. These are the code and data sizes for the acpica.lib 14375 produced 14376 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14377 any ACPI driver or OSPM code. The debug version of the code includes the 14378 debug output trace mechanism and has a much larger code and data size. 14379 Note 14380 that these values will vary depending on the efficiency of the compiler 14381 and 14382 the compiler options used during generation. 14383 14384 Previous Release: 14385 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14386 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14387 Current Release: 14388 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 14389 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 14390 14391 14392 2) iASL Compiler/Disassembler: 14393 14394 Fixed a code generation problem in the constant folding optimization code 14395 where incorrect code was generated if a constant was reduced to a buffer 14396 object (i.e., a reduced type 5 opcode.) 14397 14398 Fixed a typechecking problem for the ToBuffer operator. Caused by an 14399 incorrect return type in the internal opcode information table. 14400 14401 ---------------------------------------- 14402 25 January 2005. Summary of changes for version 20050125: 14403 14404 1) ACPI CA Core Subsystem: 14405 14406 Fixed a recently introduced problem with the Global Lock where the 14407 underlying semaphore was not created. This problem was introduced in 14408 version 20050114, and caused an AE_AML_NO_OPERAND exception during an 14409 Acquire() operation on _GL. 14410 14411 The local object cache is now optional, and is disabled by default. Both 14412 AcpiExec and the iASL compiler enable the cache because they run in user 14413 mode and this enhances their performance. #define 14414 ACPI_ENABLE_OBJECT_CACHE 14415 to enable the local cache. 14416 14417 Fixed an issue in the internal function AcpiUtEvaluateObject concerning 14418 the 14419 optional "implicit return" support where an error was returned if no 14420 return 14421 object was expected, but one was implicitly returned. AE_OK is now 14422 returned 14423 in this case and the implicitly returned object is deleted. 14424 AcpiUtEvaluateObject is only occasionally used, and only to execute 14425 reserved 14426 methods such as _STA and _INI where the return type is known up front. 14427 14428 Fixed a few issues with the internal convert-to-integer code. It now 14429 returns 14430 an error if an attempt is made to convert a null string, a string of only 14431 blanks/tabs, or a zero-length buffer. This affects both implicit 14432 conversion 14433 and explicit conversion via the ToInteger() operator. 14434 14435 The internal debug code in AcpiUtAcquireMutex has been commented out. It 14436 is 14437 not needed for normal operation and should increase the performance of 14438 the 14439 entire subsystem. The code remains in case it is needed for debug 14440 purposes 14441 again. 14442 14443 The AcpiExec source and makefile are included in the Unix/Linux package 14444 for 14445 the first time. 14446 14447 Code and Data Size: Current and previous core subsystem library sizes are 14448 shown below. These are the code and data sizes for the acpica.lib 14449 produced 14450 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14451 any ACPI driver or OSPM code. The debug version of the code includes the 14452 debug output trace mechanism and has a much larger code and data size. 14453 Note 14454 that these values will vary depending on the efficiency of the compiler 14455 and 14456 the compiler options used during generation. 14457 14458 Previous Release: 14459 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14460 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14461 Current Release: 14462 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 14463 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 14464 14465 2) iASL Compiler/Disassembler: 14466 14467 Switch/Case support: A warning is now issued if the type of the Switch 14468 value 14469 cannot be determined at compile time. For example, Switch(Arg0) will 14470 generate the warning, and the type is assumed to be an integer. As per 14471 the 14472 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 14473 the 14474 warning. 14475 14476 Switch/Case support: Implemented support for buffer and string objects as 14477 the switch value. This is an ACPI 3.0 feature, now that LEqual supports 14478 buffers and strings. 14479 14480 Switch/Case support: The emitted code for the LEqual() comparisons now 14481 uses 14482 the switch value as the first operand, not the second. The case value is 14483 now 14484 the second operand, and this allows the case value to be implicitly 14485 converted to the type of the switch value, not the other way around. 14486 14487 Switch/Case support: Temporary variables are now emitted immediately 14488 within 14489 the control method, not at the global level. This means that there are 14490 now 14491 36 temps available per-method, not 36 temps per-module as was the case 14492 with 14493 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 14494 14495 ---------------------------------------- 14496 14 January 2005. Summary of changes for version 20050114: 14497 14498 Added 2005 copyright to all module headers. This affects every module in 14499 the core subsystem, iASL compiler, and the utilities. 14500 14501 1) ACPI CA Core Subsystem: 14502 14503 Fixed an issue with the String-to-Buffer conversion code where the string 14504 null terminator was not included in the buffer after conversion, but 14505 there 14506 is existing ASL that assumes the string null terminator is included. This 14507 is 14508 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 14509 introduced in the previous version when the code was updated to correctly 14510 set the converted buffer size as per the ACPI specification. The ACPI 14511 spec 14512 is ambiguous and will be updated to specify that the null terminator must 14513 be 14514 included in the converted buffer. This also affects the ToBuffer() ASL 14515 operator. 14516 14517 Fixed a problem with the Mid() ASL/AML operator where it did not work 14518 correctly on Buffer objects. Newly created sub-buffers were not being 14519 marked 14520 as initialized. 14521 14522 14523 Fixed a problem in AcpiTbFindTable where incorrect string compares were 14524 performed on the OemId and OemTableId table header fields. These fields 14525 are 14526 not null terminated, so strncmp is now used instead of strcmp. 14527 14528 Implemented a restriction on the Store() ASL/AML operator to align the 14529 behavior with the ACPI specification. Previously, any object could be 14530 used 14531 as the source operand. Now, the only objects that may be used are 14532 Integers, 14533 Buffers, Strings, Packages, Object References, and DDB Handles. If 14534 necessary, the original behavior can be restored by enabling the 14535 EnableInterpreterSlack flag. 14536 14537 Enhanced the optional "implicit return" support to allow an implicit 14538 return 14539 value from methods that are invoked externally via the AcpiEvaluateObject 14540 interface. This enables implicit returns from the _STA and _INI methods, 14541 for example. 14542 14543 Changed the Revision() ASL/AML operator to return the current version of 14544 the 14545 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 14546 returned 14547 the supported ACPI version (This is the function of the _REV method). 14548 14549 Updated the _REV predefined method to return the currently supported 14550 version 14551 of ACPI, now 3. 14552 14553 Implemented batch mode option for the AcpiExec utility (-b). 14554 14555 Code and Data Size: Current and previous core subsystem library sizes are 14556 shown below. These are the code and data sizes for the acpica.lib 14557 produced 14558 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14559 any ACPI driver or OSPM code. The debug version of the code includes the 14560 debug output trace mechanism and has a much larger code and data size. 14561 Note 14562 that these values will vary depending on the efficiency of the compiler 14563 and 14564 the compiler options used during generation. 14565 14566 Previous Release: 14567 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14568 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14569 Current Release: 14570 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 14571 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 14572 14573 ---------------------------------------- 14574 10 December 2004. Summary of changes for version 20041210: 14575 14576 ACPI 3.0 support is nearing completion in both the iASL compiler and the 14577 ACPI CA core subsystem. 14578 14579 1) ACPI CA Core Subsystem: 14580 14581 Fixed a problem in the ToDecimalString operator where the resulting 14582 string 14583 length was incorrectly calculated. The length is now calculated exactly, 14584 eliminating incorrect AE_STRING_LIMIT exceptions. 14585 14586 Fixed a problem in the ToHexString operator to allow a maximum 200 14587 character 14588 string to be produced. 14589 14590 Fixed a problem in the internal string-to-buffer and buffer-to-buffer 14591 copy 14592 routine where the length of the resulting buffer was not truncated to the 14593 new size (if the target buffer already existed). 14594 14595 Code and Data Size: Current and previous core subsystem library sizes are 14596 shown below. These are the code and data sizes for the acpica.lib 14597 produced 14598 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14599 any ACPI driver or OSPM code. The debug version of the code includes the 14600 debug output trace mechanism and has a much larger code and data size. 14601 Note 14602 that these values will vary depending on the efficiency of the compiler 14603 and 14604 the compiler options used during generation. 14605 14606 Previous Release: 14607 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14608 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14609 Current Release: 14610 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14611 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 14612 14613 14614 2) iASL Compiler/Disassembler: 14615 14616 Implemented the new ACPI 3.0 resource template macros - DWordSpace, 14617 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 14618 Includes support in the disassembler. 14619 14620 Implemented support for the new (ACPI 3.0) parameter to the Register 14621 macro, 14622 AccessSize. 14623 14624 Fixed a problem where the _HE resource name for the Interrupt macro was 14625 referencing bit 0 instead of bit 1. 14626 14627 Implemented check for maximum 255 interrupts in the Interrupt macro. 14628 14629 Fixed a problem with the predefined resource descriptor names where 14630 incorrect AML code was generated if the offset within the resource buffer 14631 was 0 or 1. The optimizer shortened the AML code to a single byte opcode 14632 but did not update the surrounding package lengths. 14633 14634 Changes to the Dma macro: All channels within the channel list must be 14635 in 14636 the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 14637 optional (default is BusMaster). 14638 14639 Implemented check for maximum 7 data bytes for the VendorShort macro. 14640 14641 The ReadWrite parameter is now optional for the Memory32 and similar 14642 macros. 14643 14644 ---------------------------------------- 14645 03 December 2004. Summary of changes for version 20041203: 14646 14647 1) ACPI CA Core Subsystem: 14648 14649 The low-level field insertion/extraction code (exfldio) has been 14650 completely 14651 rewritten to eliminate unnecessary complexity, bugs, and boundary 14652 conditions. 14653 14654 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 14655 ToDecimalString 14656 operators where the input operand could be inadvertently deleted if no 14657 conversion was necessary (e.g., if the input to ToInteger was an Integer 14658 object.) 14659 14660 Fixed a problem with the ToDecimalString and ToHexString where an 14661 incorrect 14662 exception code was returned if the resulting string would be > 200 chars. 14663 AE_STRING_LIMIT is now returned. 14664 14665 Fixed a problem with the Concatenate operator where AE_OK was always 14666 returned, even if the operation failed. 14667 14668 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 14669 semaphores to be allocated. 14670 14671 Code and Data Size: Current and previous core subsystem library sizes are 14672 shown below. These are the code and data sizes for the acpica.lib 14673 produced 14674 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14675 any ACPI driver or OSPM code. The debug version of the code includes the 14676 debug output trace mechanism and has a much larger code and data size. 14677 Note 14678 that these values will vary depending on the efficiency of the compiler 14679 and 14680 the compiler options used during generation. 14681 14682 Previous Release: 14683 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14684 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14685 Current Release: 14686 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 14687 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 14688 14689 14690 2) iASL Compiler/Disassembler: 14691 14692 Fixed typechecking for the ObjectType and SizeOf operators. Problem was 14693 recently introduced in 20041119. 14694 14695 Fixed a problem with the ToUUID macro where the upper nybble of each 14696 buffer 14697 byte was inadvertently set to zero. 14698 14699 ---------------------------------------- 14700 19 November 2004. Summary of changes for version 20041119: 14701 14702 1) ACPI CA Core Subsystem: 14703 14704 Fixed a problem in the internal ConvertToInteger routine where new 14705 integers 14706 were not truncated to 32 bits for 32-bit ACPI tables. This routine 14707 converts 14708 buffers and strings to integers. 14709 14710 Implemented support to store a value to an Index() on a String object. 14711 This 14712 is an ACPI 2.0 feature that had not yet been implemented. 14713 14714 Implemented new behavior for storing objects to individual package 14715 elements 14716 (via the Index() operator). The previous behavior was to invoke the 14717 implicit 14718 conversion rules if an object was already present at the index. The new 14719 behavior is to simply delete any existing object and directly store the 14720 new 14721 object. Although the ACPI specification seems unclear on this subject, 14722 other 14723 ACPI implementations behave in this manner. (This is the root of the 14724 AE_BAD_HEX_CONSTANT issue.) 14725 14726 Modified the RSDP memory scan mechanism to support the extended checksum 14727 for 14728 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 14729 RSDP signature is found with a valid checksum. 14730 14731 Code and Data Size: Current and previous core subsystem library sizes are 14732 shown below. These are the code and data sizes for the acpica.lib 14733 produced 14734 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14735 any ACPI driver or OSPM code. The debug version of the code includes the 14736 debug output trace mechanism and has a much larger code and data size. 14737 Note 14738 that these values will vary depending on the efficiency of the compiler 14739 and 14740 the compiler options used during generation. 14741 14742 Previous Release: 14743 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14744 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14745 Current Release: 14746 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14747 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14748 14749 14750 2) iASL Compiler/Disassembler: 14751 14752 Fixed a missing semicolon in the aslcompiler.y file. 14753 14754 ---------------------------------------- 14755 05 November 2004. Summary of changes for version 20041105: 14756 14757 1) ACPI CA Core Subsystem: 14758 14759 Implemented support for FADT revision 2. This was an interim table 14760 (between 14761 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 14762 14763 Implemented optional support to allow uninitialized LocalX and ArgX 14764 variables in a control method. The variables are initialized to an 14765 Integer 14766 object with a value of zero. This support is enabled by setting the 14767 AcpiGbl_EnableInterpreterSlack flag to TRUE. 14768 14769 Implemented support for Integer objects for the SizeOf operator. Either 14770 4 14771 or 8 is returned, depending on the current integer size (32-bit or 64- 14772 bit, 14773 depending on the parent table revision). 14774 14775 Fixed a problem in the implementation of the SizeOf and ObjectType 14776 operators 14777 where the operand was resolved to a value too early, causing incorrect 14778 return values for some objects. 14779 14780 Fixed some possible memory leaks during exceptional conditions. 14781 14782 Code and Data Size: Current and previous core subsystem library sizes are 14783 shown below. These are the code and data sizes for the acpica.lib 14784 produced 14785 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14786 any ACPI driver or OSPM code. The debug version of the code includes the 14787 debug output trace mechanism and has a much larger code and data size. 14788 Note 14789 that these values will vary depending on the efficiency of the compiler 14790 and 14791 the compiler options used during generation. 14792 14793 Previous Release: 14794 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14795 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14796 Current Release: 14797 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 14798 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 14799 14800 14801 2) iASL Compiler/Disassembler: 14802 14803 Implemented support for all ACPI 3.0 reserved names and methods. 14804 14805 Implemented all ACPI 3.0 grammar elements in the front-end, including 14806 support for semicolons. 14807 14808 Implemented the ACPI 3.0 Function() and ToUUID() macros 14809 14810 Fixed a problem in the disassembler where a Scope() operator would not be 14811 emitted properly if the target of the scope was in another table. 14812 14813 ---------------------------------------- 14814 15 October 2004. Summary of changes for version 20041015: 14815 14816 Note: ACPI CA is currently undergoing an in-depth and complete formal 14817 evaluation to test/verify the following areas. Other suggestions are 14818 welcome. This will result in an increase in the frequency of releases and 14819 the number of bug fixes in the next few months. 14820 - Functional tests for all ASL/AML operators 14821 - All implicit/explicit type conversions 14822 - Bit fields and operation regions 14823 - 64-bit math support and 32-bit-only "truncated" math support 14824 - Exceptional conditions, both compiler and interpreter 14825 - Dynamic object deletion and memory leaks 14826 - ACPI 3.0 support when implemented 14827 - External interfaces to the ACPI subsystem 14828 14829 14830 1) ACPI CA Core Subsystem: 14831 14832 Fixed two alignment issues on 64-bit platforms - within debug statements 14833 in 14834 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 14835 Address 14836 field within the non-aligned ACPI generic address structure. 14837 14838 Fixed a problem in the Increment and Decrement operators where incorrect 14839 operand resolution could result in the inadvertent modification of the 14840 original integer when the integer is passed into another method as an 14841 argument and the arg is then incremented/decremented. 14842 14843 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 14844 bit 14845 BCD number were truncated during conversion. 14846 14847 Fixed a problem in the ToDecimal operator where the length of the 14848 resulting 14849 string could be set incorrectly too long if the input operand was a 14850 Buffer 14851 object. 14852 14853 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 14854 (0) 14855 within a buffer would prematurely terminate a compare between buffer 14856 objects. 14857 14858 Added a check for string overflow (>200 characters as per the ACPI 14859 specification) during the Concatenate operator with two string operands. 14860 14861 Code and Data Size: Current and previous core subsystem library sizes are 14862 shown below. These are the code and data sizes for the acpica.lib 14863 produced 14864 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14865 any ACPI driver or OSPM code. The debug version of the code includes the 14866 debug output trace mechanism and has a much larger code and data size. 14867 Note 14868 that these values will vary depending on the efficiency of the compiler 14869 and 14870 the compiler options used during generation. 14871 14872 Previous Release: 14873 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14874 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14875 Current Release: 14876 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14877 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 14878 14879 14880 14881 2) iASL Compiler/Disassembler: 14882 14883 Allow the use of the ObjectType operator on uninitialized Locals and Args 14884 (returns 0 as per the ACPI specification). 14885 14886 Fixed a problem where the compiler would fault if there was a syntax 14887 error 14888 in the FieldName of all of the various CreateXXXField operators. 14889 14890 Disallow the use of lower case letters within the EISAID macro, as per 14891 the 14892 ACPI specification. All EISAID strings must be of the form "UUUNNNN" 14893 Where 14894 U is an uppercase letter and N is a hex digit. 14895 14896 14897 ---------------------------------------- 14898 06 October 2004. Summary of changes for version 20041006: 14899 14900 1) ACPI CA Core Subsystem: 14901 14902 Implemented support for the ACPI 3.0 Timer operator. This ASL function 14903 implements a 64-bit timer with 100 nanosecond granularity. 14904 14905 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 14906 implement the ACPI 3.0 Timer operator. This allows the host OS to 14907 implement 14908 the timer with the best clock available. Also, it keeps the core 14909 subsystem 14910 out of the clock handling business, since the host OS (usually) performs 14911 this function. 14912 14913 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 14914 functions use a 64-bit address which is part of the packed ACPI Generic 14915 Address Structure. Since the structure is non-aligned, the alignment 14916 macros 14917 are now used to extract the address to a local variable before use. 14918 14919 Fixed a problem where the ToInteger operator assumed all input strings 14920 were 14921 hexadecimal. The operator now handles both decimal strings and hex 14922 strings 14923 (prefixed with "0x"). 14924 14925 Fixed a problem where the string length in the string object created as a 14926 result of the internal ConvertToString procedure could be incorrect. This 14927 potentially affected all implicit conversions and also the 14928 ToDecimalString 14929 and ToHexString operators. 14930 14931 Fixed two problems in the ToString operator. If the length parameter was 14932 zero, an incorrect string object was created and the value of the input 14933 length parameter was inadvertently changed from zero to Ones. 14934 14935 Fixed a problem where the optional ResourceSource string in the 14936 ExtendedIRQ 14937 resource macro was ignored. 14938 14939 Simplified the interfaces to the internal division functions, reducing 14940 code 14941 size and complexity. 14942 14943 Code and Data Size: Current and previous core subsystem library sizes are 14944 shown below. These are the code and data sizes for the acpica.lib 14945 produced 14946 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14947 any ACPI driver or OSPM code. The debug version of the code includes the 14948 debug output trace mechanism and has a much larger code and data size. 14949 Note 14950 that these values will vary depending on the efficiency of the compiler 14951 and 14952 the compiler options used during generation. 14953 14954 Previous Release: 14955 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 14956 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 14957 Current Release: 14958 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14959 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 14960 14961 14962 2) iASL Compiler/Disassembler: 14963 14964 Implemented support for the ACPI 3.0 Timer operator. 14965 14966 Fixed a problem where the Default() operator was inadvertently ignored in 14967 a 14968 Switch/Case block. This was a problem in the translation of the Switch 14969 statement to If...Else pairs. 14970 14971 Added support to allow a standalone Return operator, with no parentheses 14972 (or 14973 operands). 14974 14975 Fixed a problem with code generation for the ElseIf operator where the 14976 translated Else...If parse tree was improperly constructed leading to the 14977 loss of some code. 14978 14979 ---------------------------------------- 14980 22 September 2004. Summary of changes for version 20040922: 14981 14982 1) ACPI CA Core Subsystem: 14983 14984 Fixed a problem with the implementation of the LNot() operator where 14985 "Ones" 14986 was not returned for the TRUE case. Changed the code to return Ones 14987 instead 14988 of (!Arg) which was usually 1. This change affects iASL constant folding 14989 for 14990 this operator also. 14991 14992 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 14993 not 14994 initialized properly -- Now zero the entire buffer in this case where the 14995 buffer already exists. 14996 14997 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 14998 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 14999 related code considerably. This will require changes/updates to all OS 15000 interface layers (OSLs.) 15001 15002 Implemented a new external interface, AcpiInstallExceptionHandler, to 15003 allow 15004 a system exception handler to be installed. This handler is invoked upon 15005 any 15006 run-time exception that occurs during control method execution. 15007 15008 Added support for the DSDT in AcpiTbFindTable. This allows the 15009 DataTableRegion() operator to access the local copy of the DSDT. 15010 15011 Code and Data Size: Current and previous core subsystem library sizes are 15012 shown below. These are the code and data sizes for the acpica.lib 15013 produced 15014 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15015 any ACPI driver or OSPM code. The debug version of the code includes the 15016 debug output trace mechanism and has a much larger code and data size. 15017 Note 15018 that these values will vary depending on the efficiency of the compiler 15019 and 15020 the compiler options used during generation. 15021 15022 Previous Release: 15023 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15024 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15025 Current Release: 15026 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 15027 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 15028 15029 15030 2) iASL Compiler/Disassembler: 15031 15032 Fixed a problem with constant folding and the LNot operator. LNot was 15033 returning 1 in the TRUE case, not Ones as per the ACPI specification. 15034 This 15035 could result in the generation of an incorrect folded/reduced constant. 15036 15037 End-Of-File is now allowed within a "//"-style comment. A parse error no 15038 longer occurs if such a comment is at the very end of the input ASL 15039 source 15040 file. 15041 15042 Implemented the "-r" option to override the Revision in the table header. 15043 The initial use of this option will be to simplify the evaluation of the 15044 AML 15045 interpreter by allowing a single ASL source module to be compiled for 15046 either 15047 32-bit or 64-bit integers. 15048 15049 15050 ---------------------------------------- 15051 27 August 2004. Summary of changes for version 20040827: 15052 15053 1) ACPI CA Core Subsystem: 15054 15055 - Implemented support for implicit object conversion in the non-numeric 15056 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 15057 and 15058 LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 15059 the second operand is implicitly converted on the fly to match the type 15060 of 15061 the first operand. For example: 15062 15063 LEqual (Source1, Source2) 15064 15065 Source1 and Source2 must each evaluate to an integer, a string, or a 15066 buffer. 15067 The data type of Source1 dictates the required type of Source2. Source2 15068 is 15069 implicitly converted if necessary to match the type of Source1. 15070 15071 - Updated and corrected the behavior of the string conversion support. 15072 The 15073 rules concerning conversion of buffers to strings (according to the ACPI 15074 specification) are as follows: 15075 15076 ToDecimalString - explicit byte-wise conversion of buffer to string of 15077 decimal values (0-255) separated by commas. ToHexString - explicit byte- 15078 wise 15079 conversion of buffer to string of hex values (0-FF) separated by commas. 15080 ToString - explicit byte-wise conversion of buffer to string. Byte-by- 15081 byte 15082 copy with no transform except NULL terminated. Any other implicit buffer- 15083 to- 15084 string conversion - byte-wise conversion of buffer to string of hex 15085 values 15086 (0-FF) separated by spaces. 15087 15088 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 15089 15090 - Fixed a problem in AcpiNsGetPathnameLength where the returned length 15091 was 15092 one byte too short in the case of a node in the root scope. This could 15093 cause a fault during debug output. 15094 15095 - Code and Data Size: Current and previous core subsystem library sizes 15096 are 15097 shown below. These are the code and data sizes for the acpica.lib 15098 produced 15099 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15100 any ACPI driver or OSPM code. The debug version of the code includes the 15101 debug output trace mechanism and has a much larger code and data size. 15102 Note 15103 that these values will vary depending on the efficiency of the compiler 15104 and 15105 the compiler options used during generation. 15106 15107 Previous Release: 15108 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15109 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15110 Current Release: 15111 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 15112 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 15113 15114 15115 2) iASL Compiler/Disassembler: 15116 15117 - Fixed a Linux generation error. 15118 15119 15120 ---------------------------------------- 15121 16 August 2004. Summary of changes for version 20040816: 15122 15123 1) ACPI CA Core Subsystem: 15124 15125 Designed and implemented support within the AML interpreter for the so- 15126 called "implicit return". This support returns the result of the last 15127 ASL 15128 operation within a control method, in the absence of an explicit Return() 15129 operator. A few machines depend on this behavior, even though it is not 15130 explicitly supported by the ASL language. It is optional support that 15131 can 15132 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 15133 15134 Removed support for the PCI_Config address space from the internal low 15135 level 15136 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 15137 support was not used internally, and would not work correctly anyway 15138 because 15139 the PCI bus number and segment number were not supported. There are 15140 separate interfaces for PCI configuration space access because of the 15141 unique 15142 interface. 15143 15144 Code and Data Size: Current and previous core subsystem library sizes are 15145 shown below. These are the code and data sizes for the acpica.lib 15146 produced 15147 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15148 any ACPI driver or OSPM code. The debug version of the code includes the 15149 debug output trace mechanism and has a much larger code and data size. 15150 Note 15151 that these values will vary depending on the efficiency of the compiler 15152 and 15153 the compiler options used during generation. 15154 15155 Previous Release: 15156 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15157 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15158 Current Release: 15159 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 15160 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 15161 15162 15163 2) iASL Compiler/Disassembler: 15164 15165 Fixed a problem where constants in ASL expressions at the root level (not 15166 within a control method) could be inadvertently truncated during code 15167 generation. This problem was introduced in the 20040715 release. 15168 15169 15170 ---------------------------------------- 15171 15 July 2004. Summary of changes for version 20040715: 15172 15173 1) ACPI CA Core Subsystem: 15174 15175 Restructured the internal HW GPE interfaces to pass/track the current 15176 state 15177 of interrupts (enabled/disabled) in order to avoid possible deadlock and 15178 increase flexibility of the interfaces. 15179 15180 Implemented a "lexicographical compare" for String and Buffer objects 15181 within 15182 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 15183 - 15184 as per further clarification to the ACPI specification. Behavior is 15185 similar 15186 to C library "strcmp". 15187 15188 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 15189 external function. In the 32-bit non-debug case, the stack use has been 15190 reduced from 168 bytes to 32 bytes. 15191 15192 Deployed a new run-time configuration flag, 15193 AcpiGbl_EnableInterpreterSlack, 15194 whose purpose is to allow the AML interpreter to forgive certain bad AML 15195 constructs. Default setting is FALSE. 15196 15197 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 15198 IO 15199 support code. If enabled, it allows field access to go beyond the end of 15200 a 15201 region definition if the field is within the region length rounded up to 15202 the 15203 next access width boundary (a common coding error.) 15204 15205 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 15206 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 15207 these 15208 symbols are lowercase by the latest version of the AcpiSrc tool. 15209 15210 The prototypes for the PCI interfaces in acpiosxf.h have been updated to 15211 rename "Register" to simply "Reg" to prevent certain compilers from 15212 complaining. 15213 15214 Code and Data Size: Current and previous core subsystem library sizes are 15215 shown below. These are the code and data sizes for the acpica.lib 15216 produced 15217 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15218 any ACPI driver or OSPM code. The debug version of the code includes the 15219 debug output trace mechanism and has a much larger code and data size. 15220 Note 15221 that these values will vary depending on the efficiency of the compiler 15222 and 15223 the compiler options used during generation. 15224 15225 Previous Release: 15226 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15227 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15228 Current Release: 15229 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 15230 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 15231 15232 15233 2) iASL Compiler/Disassembler: 15234 15235 Implemented full support for Package objects within the Case() operator. 15236 Note: The Break() operator is currently not supported within Case blocks 15237 (TermLists) as there is some question about backward compatibility with 15238 ACPI 15239 1.0 interpreters. 15240 15241 15242 Fixed a problem where complex terms were not supported properly within 15243 the 15244 Switch() operator. 15245 15246 Eliminated extraneous warning for compiler-emitted reserved names of the 15247 form "_T_x". (Used in Switch/Case operators.) 15248 15249 Eliminated optimization messages for "_T_x" objects and small constants 15250 within the DefinitionBlock operator. 15251 15252 15253 ---------------------------------------- 15254 15 June 2004. Summary of changes for version 20040615: 15255 15256 1) ACPI CA Core Subsystem: 15257 15258 Implemented support for Buffer and String objects (as per ACPI 2.0) for 15259 the 15260 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15261 LLessEqual. 15262 15263 All directory names in the entire source package are lower case, as they 15264 were in earlier releases. 15265 15266 Implemented "Disassemble" command in the AML debugger that will 15267 disassemble 15268 a single control method. 15269 15270 Code and Data Size: Current and previous core subsystem library sizes are 15271 shown below. These are the code and data sizes for the acpica.lib 15272 produced 15273 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15274 any ACPI driver or OSPM code. The debug version of the code includes the 15275 debug output trace mechanism and has a much larger code and data size. 15276 Note 15277 that these values will vary depending on the efficiency of the compiler 15278 and 15279 the compiler options used during generation. 15280 15281 Previous Release: 15282 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15283 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15284 15285 Current Release: 15286 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 15287 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 15288 15289 15290 2) iASL Compiler/Disassembler: 15291 15292 Implemented support for Buffer and String objects (as per ACPI 2.0) for 15293 the 15294 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 15295 LLessEqual. 15296 15297 All directory names in the entire source package are lower case, as they 15298 were in earlier releases. 15299 15300 Fixed a fault when using the -g or -d<nofilename> options if the FADT was 15301 not found. 15302 15303 Fixed an issue with the Windows version of the compiler where later 15304 versions 15305 of Windows place the FADT in the registry under the name "FADT" and not 15306 "FACP" as earlier versions did. This applies when using the -g or - 15307 d<nofilename> options. The compiler now looks for both strings as 15308 necessary. 15309 15310 Fixed a problem with compiler namepath optimization where a namepath 15311 within 15312 the Scope() operator could not be optimized if the namepath was a subpath 15313 of 15314 the current scope path. 15315 15316 ---------------------------------------- 15317 27 May 2004. Summary of changes for version 20040527: 15318 15319 1) ACPI CA Core Subsystem: 15320 15321 Completed a new design and implementation for EBDA (Extended BIOS Data 15322 Area) 15323 support in the RSDP scan code. The original code improperly scanned for 15324 the 15325 EBDA by simply scanning from memory location 0 to 0x400. The correct 15326 method 15327 is to first obtain the EBDA pointer from within the BIOS data area, then 15328 scan 1K of memory starting at the EBDA pointer. There appear to be few 15329 if 15330 any machines that place the RSDP in the EBDA, however. 15331 15332 Integrated a fix for a possible fault during evaluation of BufferField 15333 arguments. Obsolete code that was causing the problem was removed. 15334 15335 Found and fixed a problem in the Field Support Code where data could be 15336 corrupted on a bit field read that starts on an aligned boundary but does 15337 not end on an aligned boundary. Merged the read/write "datum length" 15338 calculation code into a common procedure. 15339 15340 Rolled in a couple of changes to the FreeBSD-specific header. 15341 15342 15343 Code and Data Size: Current and previous core subsystem library sizes are 15344 shown below. These are the code and data sizes for the acpica.lib 15345 produced 15346 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15347 any ACPI driver or OSPM code. The debug version of the code includes the 15348 debug output trace mechanism and has a much larger code and data size. 15349 Note 15350 that these values will vary depending on the efficiency of the compiler 15351 and 15352 the compiler options used during generation. 15353 15354 Previous Release: 15355 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15356 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15357 Current Release: 15358 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 15359 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 15360 15361 15362 2) iASL Compiler/Disassembler: 15363 15364 Fixed a generation warning produced by some overly-verbose compilers for 15365 a 15366 64-bit constant. 15367 15368 ---------------------------------------- 15369 14 May 2004. Summary of changes for version 20040514: 15370 15371 1) ACPI CA Core Subsystem: 15372 15373 Fixed a problem where hardware GPE enable bits sometimes not set properly 15374 during and after GPE method execution. Result of 04/27 changes. 15375 15376 Removed extra "clear all GPEs" when sleeping/waking. 15377 15378 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 15379 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 15380 to 15381 the new AcpiEv* calls as appropriate. 15382 15383 ACPI_OS_NAME was removed from the OS-specific headers. The default name 15384 is 15385 now "Microsoft Windows NT" for maximum compatibility. However this can 15386 be 15387 changed by modifying the acconfig.h file. 15388 15389 Allow a single invocation of AcpiInstallNotifyHandler for a handler that 15390 traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 15391 15392 Run _INI methods on ThermalZone objects. This is against the ACPI 15393 specification, but there is apparently ASL code in the field that has 15394 these 15395 _INI methods, and apparently "other" AML interpreters execute them. 15396 15397 Performed a full 16/32/64 bit lint that resulted in some small changes. 15398 15399 Added a sleep simulation command to the AML debugger to test sleep code. 15400 15401 Code and Data Size: Current and previous core subsystem library sizes are 15402 shown below. These are the code and data sizes for the acpica.lib 15403 produced 15404 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15405 any ACPI driver or OSPM code. The debug version of the code includes the 15406 debug output trace mechanism and has a much larger code and data size. 15407 Note 15408 that these values will vary depending on the efficiency of the compiler 15409 and 15410 the compiler options used during generation. 15411 15412 Previous Release: 15413 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15414 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15415 Current Release: 15416 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15417 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 15418 15419 ---------------------------------------- 15420 27 April 2004. Summary of changes for version 20040427: 15421 15422 1) ACPI CA Core Subsystem: 15423 15424 Completed a major overhaul of the GPE handling within ACPI CA. There are 15425 now three types of GPEs: wake-only, runtime-only, and combination 15426 wake/run. 15427 The only GPEs allowed to be combination wake/run are for button-style 15428 devices such as a control-method power button, control-method sleep 15429 button, 15430 or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 15431 not 15432 referenced by any _PRW methods are marked for "runtime" and hardware 15433 enabled. Any GPE that is referenced by a _PRW method is marked for 15434 "wake" 15435 (and disabled at runtime). However, at sleep time, only those GPEs that 15436 have been specifically enabled for wake via the AcpiEnableGpe interface 15437 will 15438 actually be hardware enabled. 15439 15440 A new external interface has been added, AcpiSetGpeType(), that is meant 15441 to 15442 be used by device drivers to force a GPE to a particular type. It will 15443 be 15444 especially useful for the drivers for the button devices mentioned above. 15445 15446 Completed restructuring of the ACPI CA initialization sequence so that 15447 default operation region handlers are installed before GPEs are 15448 initialized 15449 and the _PRW methods are executed. This will prevent errors when the 15450 _PRW 15451 methods attempt to access system memory or I/O space. 15452 15453 GPE enable/disable no longer reads the GPE enable register. We now keep 15454 the 15455 enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 15456 thus no longer depend on the hardware to maintain these bits. 15457 15458 Always clear the wake status and fixed/GPE status bits before sleep, even 15459 for state S5. 15460 15461 Improved the AML debugger output for displaying the GPE blocks and their 15462 current status. 15463 15464 Added new strings for the _OSI method, of the form "Windows 2001 SPx" 15465 where 15466 x = 0,1,2,3,4. 15467 15468 Fixed a problem where the physical address was incorrectly calculated 15469 when 15470 the Load() operator was used to directly load from an Operation Region 15471 (vs. 15472 loading from a Field object.) Also added check for minimum table length 15473 for 15474 this case. 15475 15476 Fix for multiple mutex acquisition. Restore original thread SyncLevel on 15477 mutex release. 15478 15479 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 15480 consistency with the other fields returned. 15481 15482 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 15483 structure for each GPE in the system, so the size of this structure is 15484 important. 15485 15486 CPU stack requirement reduction: Cleaned up the method execution and 15487 object 15488 evaluation paths so that now a parameter structure is passed, instead of 15489 copying the various method parameters over and over again. 15490 15491 In evregion.c: Correctly exit and reenter the interpreter region if and 15492 only if dispatching an operation region request to a user-installed 15493 handler. 15494 Do not exit/reenter when dispatching to a default handler (e.g., default 15495 system memory or I/O handlers) 15496 15497 15498 Notes for updating drivers for the new GPE support. The following 15499 changes 15500 must be made to ACPI-related device drivers that are attached to one or 15501 more 15502 GPEs: (This information will be added to the ACPI CA Programmer 15503 Reference.) 15504 15505 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you 15506 must 15507 explicitly call AcpiEnableGpe. 15508 2) There is a new interface called AcpiSetGpeType. This should be called 15509 before enabling the GPE. Also, this interface will automatically disable 15510 the GPE if it is currently enabled. 15511 3) AcpiEnableGpe no longer supports a GPE type flag. 15512 15513 Specific drivers that must be changed: 15514 1) EC driver: 15515 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 15516 AeGpeHandler, NULL); 15517 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 15518 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 15519 15520 2) Button Drivers (Power, Lid, Sleep): 15521 Run _PRW method under parent device 15522 If _PRW exists: /* This is a control-method button */ 15523 Extract GPE number and possibly GpeDevice 15524 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 15525 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 15526 15527 For all other devices that have _PRWs, we automatically set the GPE type 15528 to 15529 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 15530 This 15531 must be done on a selective basis, usually requiring some kind of user 15532 app 15533 to allow the user to pick the wake devices. 15534 15535 15536 Code and Data Size: Current and previous core subsystem library sizes are 15537 shown below. These are the code and data sizes for the acpica.lib 15538 produced 15539 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15540 any ACPI driver or OSPM code. The debug version of the code includes the 15541 debug output trace mechanism and has a much larger code and data size. 15542 Note 15543 that these values will vary depending on the efficiency of the compiler 15544 and 15545 the compiler options used during generation. 15546 15547 Previous Release: 15548 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15549 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15550 Current Release: 15551 15552 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 15553 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 15554 15555 15556 15557 ---------------------------------------- 15558 02 April 2004. Summary of changes for version 20040402: 15559 15560 1) ACPI CA Core Subsystem: 15561 15562 Fixed an interpreter problem where an indirect store through an ArgX 15563 parameter was incorrectly applying the "implicit conversion rules" during 15564 the store. From the ACPI specification: "If the target is a method local 15565 or 15566 argument (LocalX or ArgX), no conversion is performed and the result is 15567 stored directly to the target". The new behavior is to disable implicit 15568 conversion during ALL stores to an ArgX. 15569 15570 Changed the behavior of the _PRW method scan to ignore any and all errors 15571 returned by a given _PRW. This prevents the scan from aborting from the 15572 failure of any single _PRW. 15573 15574 Moved the runtime configuration parameters from the global init procedure 15575 to 15576 static variables in acglobal.h. This will allow the host to override the 15577 default values easily. 15578 15579 Code and Data Size: Current and previous core subsystem library sizes are 15580 shown below. These are the code and data sizes for the acpica.lib 15581 produced 15582 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15583 any ACPI driver or OSPM code. The debug version of the code includes the 15584 debug output trace mechanism and has a much larger code and data size. 15585 Note 15586 that these values will vary depending on the efficiency of the compiler 15587 and 15588 the compiler options used during generation. 15589 15590 Previous Release: 15591 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15592 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15593 Current Release: 15594 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 15595 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 15596 15597 15598 2) iASL Compiler/Disassembler: 15599 15600 iASL now fully disassembles SSDTs. However, External() statements are 15601 not 15602 generated automatically for unresolved symbols at this time. This is a 15603 planned feature for future implementation. 15604 15605 Fixed a scoping problem in the disassembler that occurs when the type of 15606 the 15607 target of a Scope() operator is overridden. This problem caused an 15608 incorrectly nested internal namespace to be constructed. 15609 15610 Any warnings or errors that are emitted during disassembly are now 15611 commented 15612 out automatically so that the resulting file can be recompiled without 15613 any 15614 hand editing. 15615 15616 ---------------------------------------- 15617 26 March 2004. Summary of changes for version 20040326: 15618 15619 1) ACPI CA Core Subsystem: 15620 15621 Implemented support for "wake" GPEs via interaction between GPEs and the 15622 _PRW methods. Every GPE that is pointed to by one or more _PRWs is 15623 identified as a WAKE GPE and by default will no longer be enabled at 15624 runtime. Previously, we were blindly enabling all GPEs with a 15625 corresponding 15626 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 15627 We 15628 believe this has been the cause of thousands of "spurious" GPEs on some 15629 systems. 15630 15631 This new GPE behavior is can be reverted to the original behavior (enable 15632 ALL GPEs at runtime) via a runtime flag. 15633 15634 Fixed a problem where aliased control methods could not access objects 15635 properly. The proper scope within the namespace was not initialized 15636 (transferred to the target of the aliased method) before executing the 15637 target method. 15638 15639 Fixed a potential race condition on internal object deletion on the 15640 return 15641 object in AcpiEvaluateObject. 15642 15643 Integrated a fix for resource descriptors where both _MEM and _MTP were 15644 being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 15645 wide, 0x0F instead of 0x03.) 15646 15647 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 15648 preventing 15649 a 15650 fault in some cases. 15651 15652 Updated Notify() values for debug statements in evmisc.c 15653 15654 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 15655 15656 Code and Data Size: Current and previous core subsystem library sizes are 15657 shown below. These are the code and data sizes for the acpica.lib 15658 produced 15659 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15660 any ACPI driver or OSPM code. The debug version of the code includes the 15661 debug output trace mechanism and has a much larger code and data size. 15662 Note 15663 that these values will vary depending on the efficiency of the compiler 15664 and 15665 the compiler options used during generation. 15666 15667 Previous Release: 15668 15669 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15670 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15671 Current Release: 15672 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 15673 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 15674 15675 ---------------------------------------- 15676 11 March 2004. Summary of changes for version 20040311: 15677 15678 1) ACPI CA Core Subsystem: 15679 15680 Fixed a problem where errors occurring during the parse phase of control 15681 method execution did not abort cleanly. For example, objects created and 15682 installed in the namespace were not deleted. This caused all subsequent 15683 invocations of the method to return the AE_ALREADY_EXISTS exception. 15684 15685 Implemented a mechanism to force a control method to "Serialized" 15686 execution 15687 if the method attempts to create namespace objects. (The root of the 15688 AE_ALREADY_EXISTS problem.) 15689 15690 Implemented support for the predefined _OSI "internal" control method. 15691 Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 15692 and 15693 "Windows 2001.1", and can be easily upgraded for new strings as 15694 necessary. 15695 This feature will allow "other" operating systems to execute the fully 15696 tested, "Windows" code path through the ASL code 15697 15698 Global Lock Support: Now allows multiple acquires and releases with any 15699 internal thread. Removed concept of "owning thread" for this special 15700 mutex. 15701 15702 Fixed two functions that were inappropriately declaring large objects on 15703 the 15704 CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 15705 during 15706 method execution considerably. 15707 15708 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 15709 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 15710 15711 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 15712 defined on the machine. 15713 15714 Implemented two runtime options: One to force all control method 15715 execution 15716 to "Serialized" to mimic Windows behavior, another to disable _OSI 15717 support 15718 if it causes problems on a given machine. 15719 15720 Code and Data Size: Current and previous core subsystem library sizes are 15721 shown below. These are the code and data sizes for the acpica.lib 15722 produced 15723 by the Microsoft Visual C++ 6.0 compiler, and these values do not include 15724 any ACPI driver or OSPM code. The debug version of the code includes the 15725 debug output trace mechanism and has a much larger code and data size. 15726 Note 15727 that these values will vary depending on the efficiency of the compiler 15728 and 15729 the compiler options used during generation. 15730 15731 Previous Release: 15732 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15733 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15734 Current Release: 15735 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 15736 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 15737 15738 2) iASL Compiler/Disassembler: 15739 15740 Fixed an array size problem for FreeBSD that would cause the compiler to 15741 fault. 15742 15743 ---------------------------------------- 15744 20 February 2004. Summary of changes for version 20040220: 15745 15746 15747 1) ACPI CA Core Subsystem: 15748 15749 Implemented execution of _SxD methods for Device objects in the 15750 GetObjectInfo interface. 15751 15752 Fixed calls to _SST method to pass the correct arguments. 15753 15754 Added a call to _SST on wake to restore to "working" state. 15755 15756 Check for End-Of-Buffer failure case in the WalkResources interface. 15757 15758 Integrated fix for 64-bit alignment issue in acglobal.h by moving two 15759 structures to the beginning of the file. 15760 15761 After wake, clear GPE status register(s) before enabling GPEs. 15762 15763 After wake, clear/enable power button. (Perhaps we should clear/enable 15764 all 15765 fixed events upon wake.) 15766 15767 Fixed a couple of possible memory leaks in the Namespace manager. 15768 15769 Integrated latest acnetbsd.h file. 15770 15771 ---------------------------------------- 15772 11 February 2004. Summary of changes for version 20040211: 15773 15774 15775 1) ACPI CA Core Subsystem: 15776 15777 Completed investigation and implementation of the call-by-reference 15778 mechanism for control method arguments. 15779 15780 Fixed a problem where a store of an object into an indexed package could 15781 fail if the store occurs within a different method than the method that 15782 created the package. 15783 15784 Fixed a problem where the ToDecimal operator could return incorrect 15785 results. 15786 15787 Fixed a problem where the CopyObject operator could fail on some of the 15788 more 15789 obscure objects (e.g., Reference objects.) 15790 15791 Improved the output of the Debug object to display buffer, package, and 15792 index objects. 15793 15794 Fixed a problem where constructs of the form "RefOf (ArgX)" did not 15795 return 15796 the expected result. 15797 15798 Added permanent ACPI_REPORT_ERROR macros for all instances of the 15799 ACPI_AML_INTERNAL exception. 15800 15801 Integrated latest version of acfreebsd.h 15802 15803 ---------------------------------------- 15804 16 January 2004. Summary of changes for version 20040116: 15805 15806 The purpose of this release is primarily to update the copyright years in 15807 each module, thus causing a huge number of diffs. There are a few small 15808 functional changes, however. 15809 15810 1) ACPI CA Core Subsystem: 15811 15812 Improved error messages when there is a problem finding one or more of 15813 the 15814 required base ACPI tables 15815 15816 Reintroduced the definition of APIC_HEADER in actbl.h 15817 15818 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 15819 15820 Removed extraneous reference to NewObj in dsmthdat.c 15821 15822 2) iASL compiler 15823 15824 Fixed a problem introduced in December that disabled the correct 15825 disassembly 15826 of Resource Templates 15827 15828 15829 ---------------------------------------- 15830 03 December 2003. Summary of changes for version 20031203: 15831 15832 1) ACPI CA Core Subsystem: 15833 15834 Changed the initialization of Operation Regions during subsystem 15835 init to perform two entire walks of the ACPI namespace; The first 15836 to initialize the regions themselves, the second to execute the 15837 _REG methods. This fixed some interdependencies across _REG 15838 methods found on some machines. 15839 15840 Fixed a problem where a Store(Local0, Local1) could simply update 15841 the object reference count, and not create a new copy of the 15842 object if the Local1 is uninitialized. 15843 15844 Implemented support for the _SST reserved method during sleep 15845 transitions. 15846 15847 Implemented support to clear the SLP_TYP and SLP_EN bits when 15848 waking up, this is apparently required by some machines. 15849 15850 When sleeping, clear the wake status only if SleepState is not S5. 15851 15852 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 15853 pointer arithmetic advanced a string pointer too far. 15854 15855 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 15856 could be returned if the requested table has not been loaded. 15857 15858 Within the support for IRQ resources, restructured the handling of 15859 the active and edge/level bits. 15860 15861 Fixed a few problems in AcpiPsxExecute() where memory could be 15862 leaked under certain error conditions. 15863 15864 Improved error messages for the cases where the ACPI mode could 15865 not be entered. 15866 15867 Code and Data Size: Current and previous core subsystem library 15868 sizes are shown below. These are the code and data sizes for the 15869 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15870 these values do not include any ACPI driver or OSPM code. The 15871 debug version of the code includes the debug output trace 15872 mechanism and has a much larger code and data size. Note that 15873 these values will vary depending on the efficiency of the compiler 15874 and the compiler options used during generation. 15875 15876 Previous Release (20031029): 15877 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15878 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15879 Current Release: 15880 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 15881 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 15882 15883 2) iASL Compiler/Disassembler: 15884 15885 Implemented a fix for the iASL disassembler where a bad index was 15886 generated. This was most noticeable on 64-bit platforms 15887 15888 15889 ---------------------------------------- 15890 29 October 2003. Summary of changes for version 20031029: 15891 15892 1) ACPI CA Core Subsystem: 15893 15894 15895 Fixed a problem where a level-triggered GPE with an associated 15896 _Lxx control method was incorrectly cleared twice. 15897 15898 Fixed a problem with the Field support code where an access can 15899 occur beyond the end-of-region if the field is non-aligned but 15900 extends to the very end of the parent region (resulted in an 15901 AE_AML_REGION_LIMIT exception.) 15902 15903 Fixed a problem with ACPI Fixed Events where an RT Clock handler 15904 would not get invoked on an RTC event. The RTC event bitmasks for 15905 the PM1 registers were not being initialized properly. 15906 15907 Implemented support for executing _STA and _INI methods for 15908 Processor objects. Although this is currently not part of the 15909 ACPI specification, there is existing ASL code that depends on the 15910 init-time execution of these methods. 15911 15912 Implemented and deployed a GetDescriptorName function to decode 15913 the various types of internal descriptors. Guards against null 15914 descriptors during debug output also. 15915 15916 Implemented and deployed a GetNodeName function to extract the 4- 15917 character namespace node name. This function simplifies the debug 15918 and error output, as well as guarding against null pointers during 15919 output. 15920 15921 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 15922 simplify the debug and error output of 64-bit integers. This 15923 macro replaces the HIDWORD and LODWORD macros for dumping these 15924 integers. 15925 15926 Updated the implementation of the Stall() operator to only call 15927 AcpiOsStall(), and also return an error if the operand is larger 15928 than 255. This preserves the required behavior of not 15929 relinquishing the processor, as would happen if AcpiOsSleep() was 15930 called for "long stalls". 15931 15932 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 15933 initialized are now treated as NOOPs. 15934 15935 Cleaned up a handful of warnings during 64-bit generation. 15936 15937 Fixed a reported error where and incorrect GPE number was passed 15938 to the GPE dispatch handler. This value is only used for error 15939 output, however. Used this opportunity to clean up and streamline 15940 the GPE dispatch code. 15941 15942 Code and Data Size: Current and previous core subsystem library 15943 sizes are shown below. These are the code and data sizes for the 15944 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15945 these values do not include any ACPI driver or OSPM code. The 15946 15947 debug version of the code includes the debug output trace 15948 mechanism and has a much larger code and data size. Note that 15949 these values will vary depending on the efficiency of the compiler 15950 and the compiler options used during generation. 15951 15952 Previous Release (20031002): 15953 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 15954 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 15955 Current Release: 15956 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 15957 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 15958 15959 15960 2) iASL Compiler/Disassembler: 15961 15962 Updated the iASL compiler to return an error if the operand to the 15963 Stall() operator is larger than 255. 15964 15965 15966 ---------------------------------------- 15967 02 October 2003. Summary of changes for version 20031002: 15968 15969 15970 1) ACPI CA Core Subsystem: 15971 15972 Fixed a problem with Index Fields where the index was not 15973 incremented for fields that require multiple writes to the 15974 index/data registers (Fields that are wider than the data 15975 register.) 15976 15977 Fixed a problem with all Field objects where a write could go 15978 beyond the end-of-field if the field was larger than the access 15979 granularity and therefore required multiple writes to complete the 15980 request. An extra write beyond the end of the field could happen 15981 inadvertently. 15982 15983 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 15984 would incorrectly be returned if the width of the Data Register 15985 was larger than the specified field access width. 15986 15987 Completed fixes for LoadTable() and Unload() and verified their 15988 operation. Implemented full support for the "DdbHandle" object 15989 throughout the ACPI CA subsystem. 15990 15991 Implemented full support for the MADT and ECDT tables in the ACPI 15992 CA header files. Even though these tables are not directly 15993 consumed by ACPI CA, the header definitions are useful for ACPI 15994 device drivers. 15995 15996 Integrated resource descriptor fixes posted to the Linux ACPI 15997 list. This included checks for minimum descriptor length, and 15998 support for trailing NULL strings within descriptors that have 15999 optional string elements. 16000 16001 Code and Data Size: Current and previous core subsystem library 16002 sizes are shown below. These are the code and data sizes for the 16003 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16004 these values do not include any ACPI driver or OSPM code. The 16005 debug version of the code includes the debug output trace 16006 mechanism and has a much larger code and data size. Note that 16007 these values will vary depending on the efficiency of the compiler 16008 and the compiler options used during generation. 16009 16010 Previous Release (20030918): 16011 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16012 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16013 Current Release: 16014 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 16015 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 16016 16017 16018 2) iASL Compiler: 16019 16020 Implemented detection of non-ASCII characters within the input 16021 source ASL file. This catches attempts to compile binary (AML) 16022 files early in the compile, with an informative error message. 16023 16024 Fixed a problem where the disassembler would fault if the output 16025 filename could not be generated or if the output file could not be 16026 opened. 16027 16028 ---------------------------------------- 16029 18 September 2003. Summary of changes for version 20030918: 16030 16031 16032 1) ACPI CA Core Subsystem: 16033 16034 Found and fixed a longstanding problem with the late execution of 16035 the various deferred AML opcodes (such as Operation Regions, 16036 Buffer Fields, Buffers, and Packages). If the name string 16037 specified for the name of the new object placed the object in a 16038 scope other than the current scope, the initialization/execution 16039 of the opcode failed. The solution to this problem was to 16040 implement a mechanism where the late execution of such opcodes 16041 does not attempt to lookup/create the name a second time in an 16042 incorrect scope. This fixes the "region size computed 16043 incorrectly" problem. 16044 16045 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 16046 Global Lock AE_BAD_PARAMETER error. 16047 16048 Fixed several 64-bit issues with prototypes, casting and data 16049 types. 16050 16051 Removed duplicate prototype from acdisasm.h 16052 16053 Fixed an issue involving EC Operation Region Detach (Shaohua Li) 16054 16055 Code and Data Size: Current and previous core subsystem library 16056 sizes are shown below. These are the code and data sizes for the 16057 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16058 these values do not include any ACPI driver or OSPM code. The 16059 debug version of the code includes the debug output trace 16060 mechanism and has a much larger code and data size. Note that 16061 these values will vary depending on the efficiency of the compiler 16062 and the compiler options used during generation. 16063 16064 Previous Release: 16065 16066 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16067 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16068 Current Release: 16069 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 16070 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 16071 16072 16073 2) Linux: 16074 16075 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 16076 correct sleep time in seconds. 16077 16078 ---------------------------------------- 16079 14 July 2003. Summary of changes for version 20030619: 16080 16081 1) ACPI CA Core Subsystem: 16082 16083 Parse SSDTs in order discovered, as opposed to reverse order 16084 (Hrvoje Habjanic) 16085 16086 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 16087 Klausner, 16088 Nate Lawson) 16089 16090 16091 2) Linux: 16092 16093 Dynamically allocate SDT list (suggested by Andi Kleen) 16094 16095 proc function return value cleanups (Andi Kleen) 16096 16097 Correctly handle NMI watchdog during long stalls (Andrew Morton) 16098 16099 Make it so acpismp=force works (reported by Andrew Morton) 16100 16101 16102 ---------------------------------------- 16103 19 June 2003. Summary of changes for version 20030619: 16104 16105 1) ACPI CA Core Subsystem: 16106 16107 Fix To/FromBCD, eliminating the need for an arch-specific #define. 16108 16109 Do not acquire a semaphore in the S5 shutdown path. 16110 16111 Fix ex_digits_needed for 0. (Takayoshi Kochi) 16112 16113 Fix sleep/stall code reversal. (Andi Kleen) 16114 16115 Revert a change having to do with control method calling 16116 semantics. 16117 16118 2) Linux: 16119 16120 acpiphp update (Takayoshi Kochi) 16121 16122 Export acpi_disabled for sonypi (Stelian Pop) 16123 16124 Mention acpismp=force in config help 16125 16126 Re-add acpitable.c and acpismp=force. This improves backwards 16127 16128 compatibility and also cleans up the code to a significant degree. 16129 16130 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 16131 16132 ---------------------------------------- 16133 22 May 2003. Summary of changes for version 20030522: 16134 16135 1) ACPI CA Core Subsystem: 16136 16137 Found and fixed a reported problem where an AE_NOT_FOUND error 16138 occurred occasionally during _BST evaluation. This turned out to 16139 be an Owner ID allocation issue where a called method did not get 16140 a new ID assigned to it. Eventually, (after 64k calls), the Owner 16141 ID UINT16 would wraparound so that the ID would be the same as the 16142 caller's and the called method would delete the caller's 16143 namespace. 16144 16145 Implemented extended error reporting for control methods that are 16146 aborted due to a run-time exception. Output includes the exact 16147 AML instruction that caused the method abort, a dump of the method 16148 locals and arguments at the time of the abort, and a trace of all 16149 nested control method calls. 16150 16151 Modified the interpreter to allow the creation of buffers of zero 16152 length from the AML code. Implemented new code to ensure that no 16153 attempt is made to actually allocate a memory buffer (of length 16154 zero) - instead, a simple buffer object with a NULL buffer pointer 16155 and length zero is created. A warning is no longer issued when 16156 the AML attempts to create a zero-length buffer. 16157 16158 Implemented a workaround for the "leading asterisk issue" in 16159 _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 16160 asterisk is automatically removed if present in any HID, UID, or 16161 CID strings. The iASL compiler will still flag this asterisk as 16162 an error, however. 16163 16164 Implemented full support for _CID methods that return a package of 16165 multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 16166 now additionally returns a device _CID list if present. This 16167 required a change to the external interface in order to pass an 16168 ACPI_BUFFER object as a parameter since the _CID list is of 16169 variable length. 16170 16171 Fixed a problem with the new AE_SAME_HANDLER exception where 16172 handler initialization code did not know about this exception. 16173 16174 Code and Data Size: Current and previous core subsystem library 16175 sizes are shown below. These are the code and data sizes for the 16176 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 16177 these values do not include any ACPI driver or OSPM code. The 16178 debug version of the code includes the debug output trace 16179 mechanism and has a much larger code and data size. Note that 16180 these values will vary depending on the efficiency of the compiler 16181 and the compiler options used during generation. 16182 16183 Previous Release (20030509): 16184 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16185 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16186 Current Release: 16187 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 16188 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 16189 16190 16191 2) Linux: 16192 16193 Fixed a bug in which we would reinitialize the ACPI interrupt 16194 after it was already working, thus disabling all ACPI and the IRQs 16195 for any other device sharing the interrupt. (Thanks to Stian 16196 Jordet) 16197 16198 Toshiba driver update (John Belmonte) 16199 16200 Return only 0 or 1 for our interrupt handler status (Andrew 16201 Morton) 16202 16203 16204 3) iASL Compiler: 16205 16206 Fixed a reported problem where multiple (nested) ElseIf() 16207 statements were not handled correctly by the compiler, resulting 16208 in incorrect warnings and incorrect AML code. This was a problem 16209 in both the ASL parser and the code generator. 16210 16211 16212 4) Documentation: 16213 16214 Added changes to existing interfaces, new exception codes, and new 16215 text concerning reference count object management versus garbage 16216 collection. 16217 16218 ---------------------------------------- 16219 09 May 2003. Summary of changes for version 20030509. 16220 16221 16222 1) ACPI CA Core Subsystem: 16223 16224 Changed the subsystem initialization sequence to hold off 16225 installation of address space handlers until the hardware has been 16226 initialized and the system has entered ACPI mode. This is because 16227 the installation of space handlers can cause _REG methods to be 16228 run. Previously, the _REG methods could potentially be run before 16229 ACPI mode was enabled. 16230 16231 Fixed some memory leak issues related to address space handler and 16232 notify handler installation. There were some problems with the 16233 reference count mechanism caused by the fact that the handler 16234 objects are shared across several namespace objects. 16235 16236 Fixed a reported problem where reference counts within the 16237 namespace were not properly updated when named objects created by 16238 method execution were deleted. 16239 16240 Fixed a reported problem where multiple SSDTs caused a deletion 16241 issue during subsystem termination. Restructured the table data 16242 structures to simplify the linked lists and the related code. 16243 16244 Fixed a problem where the table ID associated with secondary 16245 tables (SSDTs) was not being propagated into the namespace objects 16246 created by those tables. This would only present a problem for 16247 tables that are unloaded at run-time, however. 16248 16249 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 16250 type as the length parameter (instead of UINT32). 16251 16252 Solved a long-standing problem where an ALREADY_EXISTS error 16253 appears on various systems. This problem could happen when there 16254 are multiple PCI_Config operation regions under a single PCI root 16255 bus. This doesn't happen very frequently, but there are some 16256 systems that do this in the ASL. 16257 16258 Fixed a reported problem where the internal DeleteNode function 16259 was incorrectly handling the case where a namespace node was the 16260 first in the parent's child list, and had additional peers (not 16261 the only child, but first in the list of children.) 16262 16263 Code and Data Size: Current core subsystem library sizes are shown 16264 below. These are the code and data sizes for the acpica.lib 16265 produced by the Microsoft Visual C++ 6.0 compiler, and these 16266 values do not include any ACPI driver or OSPM code. The debug 16267 version of the code includes the debug output trace mechanism and 16268 has a much larger code and data size. Note that these values will 16269 vary depending on the efficiency of the compiler and the compiler 16270 options used during generation. 16271 16272 Previous Release 16273 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16274 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16275 Current Release: 16276 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 16277 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 16278 16279 16280 2) Linux: 16281 16282 Allow ":" in OS override string (Ducrot Bruno) 16283 16284 Kobject fix (Greg KH) 16285 16286 16287 3 iASL Compiler/Disassembler: 16288 16289 Fixed a problem in the generation of the C source code files (AML 16290 is emitted in C source statements for BIOS inclusion) where the 16291 Ascii dump that appears within a C comment at the end of each line 16292 could cause a compile time error if the AML sequence happens to 16293 have an open comment or close comment sequence embedded. 16294 16295 16296 ---------------------------------------- 16297 24 April 2003. Summary of changes for version 20030424. 16298 16299 16300 1) ACPI CA Core Subsystem: 16301 16302 Support for big-endian systems has been implemented. Most of the 16303 support has been invisibly added behind big-endian versions of the 16304 ACPI_MOVE_* macros. 16305 16306 Fixed a problem in AcpiHwDisableGpeBlock() and 16307 AcpiHwClearGpeBlock() where an incorrect offset was passed to the 16308 low level hardware write routine. The offset parameter was 16309 actually eliminated from the low level read/write routines because 16310 they had become obsolete. 16311 16312 Fixed a problem where a handler object was deleted twice during 16313 the removal of a fixed event handler. 16314 16315 16316 2) Linux: 16317 16318 A fix for SMP systems with link devices was contributed by 16319 16320 Compaq's Dan Zink. 16321 16322 (2.5) Return whether we handled the interrupt in our IRQ handler. 16323 (Linux ISRs no longer return void, so we can propagate the handler 16324 return value from the ACPI CA core back to the OS.) 16325 16326 16327 16328 3) Documentation: 16329 16330 The ACPI CA Programmer Reference has been updated to reflect new 16331 interfaces and changes to existing interfaces. 16332 16333 ---------------------------------------- 16334 28 March 2003. Summary of changes for version 20030328. 16335 16336 1) ACPI CA Core Subsystem: 16337 16338 The GPE Block Device support has been completed. New interfaces 16339 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 16340 interfaces (enable, disable, clear, getstatus) have been split 16341 into separate interfaces for Fixed Events and General Purpose 16342 Events (GPEs) in order to support GPE Block Devices properly. 16343 16344 Fixed a problem where the error message "Failed to acquire 16345 semaphore" would appear during operations on the embedded 16346 controller (EC). 16347 16348 Code and Data Size: Current core subsystem library sizes are shown 16349 below. These are the code and data sizes for the acpica.lib 16350 produced by the Microsoft Visual C++ 6.0 compiler, and these 16351 values do not include any ACPI driver or OSPM code. The debug 16352 version of the code includes the debug output trace mechanism and 16353 has a much larger code and data size. Note that these values will 16354 vary depending on the efficiency of the compiler and the compiler 16355 options used during generation. 16356 16357 Previous Release 16358 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16359 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16360 Current Release: 16361 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 16362 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 16363 16364 16365 ---------------------------------------- 16366 28 February 2003. Summary of changes for version 20030228. 16367 16368 16369 1) ACPI CA Core Subsystem: 16370 16371 The GPE handling and dispatch code has been completely overhauled 16372 in preparation for support of GPE Block Devices (ID ACPI0006). 16373 This affects internal data structures and code only; there should 16374 be no differences visible externally. One new file has been 16375 added, evgpeblk.c 16376 16377 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 16378 fields that are used to determine the GPE block lengths. The 16379 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 16380 structures are ignored. This is per the ACPI specification but it 16381 isn't very clear. The full 256 Block 0/1 GPEs are now supported 16382 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 16383 16384 In the SCI interrupt handler, removed the read of the PM1_CONTROL 16385 register to look at the SCI_EN bit. On some machines, this read 16386 causes an SMI event and greatly slows down SCI events. (This may 16387 in fact be the cause of slow battery status response on some 16388 systems.) 16389 16390 Fixed a problem where a store of a NULL string to a package object 16391 could cause the premature deletion of the object. This was seen 16392 during execution of the battery _BIF method on some systems, 16393 resulting in no battery data being returned. 16394 16395 Added AcpiWalkResources interface to simplify parsing of resource 16396 lists. 16397 16398 Code and Data Size: Current core subsystem library sizes are shown 16399 below. These are the code and data sizes for the acpica.lib 16400 produced by the Microsoft Visual C++ 6.0 compiler, and these 16401 values do not include any ACPI driver or OSPM code. The debug 16402 version of the code includes the debug output trace mechanism and 16403 has a much larger code and data size. Note that these values will 16404 vary depending on the efficiency of the compiler and the compiler 16405 options used during generation. 16406 16407 Previous Release 16408 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16409 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16410 Current Release: 16411 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 16412 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 16413 16414 16415 2) Linux 16416 16417 S3 fixes (Ole Rohne) 16418 16419 Update ACPI PHP driver with to use new acpi_walk_resource API 16420 (Bjorn Helgaas) 16421 16422 Add S4BIOS support (Pavel Machek) 16423 16424 Map in entire table before performing checksum (John Stultz) 16425 16426 Expand the mem= cmdline to allow the specification of reserved and 16427 ACPI DATA blocks (Pavel Machek) 16428 16429 Never use ACPI on VISWS 16430 16431 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 16432 16433 Revert a change that allowed P_BLK lengths to be 4 or 5. This is 16434 causing us to think that some systems support C2 when they really 16435 don't. 16436 16437 Do not count processor objects for non-present CPUs (Thanks to 16438 Dominik Brodowski) 16439 16440 16441 3) iASL Compiler: 16442 16443 Fixed a problem where ASL include files could not be found and 16444 opened. 16445 16446 Added support for the _PDC reserved name. 16447 16448 16449 ---------------------------------------- 16450 22 January 2003. Summary of changes for version 20030122. 16451 16452 16453 1) ACPI CA Core Subsystem: 16454 16455 Added a check for constructs of the form: Store (Local0, Local0) 16456 where Local0 is not initialized. Apparently, some BIOS 16457 programmers believe that this is a NOOP. Since this store doesn't 16458 do anything anyway, the new prototype behavior will ignore this 16459 error. This is a case where we can relax the strict checking in 16460 the interpreter in the name of compatibility. 16461 16462 16463 2) Linux 16464 16465 The AcpiSrc Source Conversion Utility has been released with the 16466 Linux package for the first time. This is the utility that is 16467 used to convert the ACPI CA base source code to the Linux version. 16468 16469 (Both) Handle P_BLK lengths shorter than 6 more gracefully 16470 16471 (Both) Move more headers to include/acpi, and delete an unused 16472 header. 16473 16474 (Both) Move drivers/acpi/include directory to include/acpi 16475 16476 (Both) Boot functions don't use cmdline, so don't pass it around 16477 16478 (Both) Remove include of unused header (Adrian Bunk) 16479 16480 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 16481 the 16482 former now also includes the latter, acpiphp.h only needs the one, 16483 now. 16484 16485 (2.5) Make it possible to select method of bios restoring after S3 16486 resume. [=> no more ugly ifdefs] (Pavel Machek) 16487 16488 (2.5) Make proc write interfaces work (Pavel Machek) 16489 16490 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 16491 16492 (2.5) Break out ACPI Perf code into its own module, under cpufreq 16493 (Dominik Brodowski) 16494 16495 (2.4) S4BIOS support (Ducrot Bruno) 16496 16497 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 16498 Visinoni) 16499 16500 16501 3) iASL Compiler: 16502 16503 Added support to disassemble SSDT and PSDTs. 16504 16505 Implemented support to obtain SSDTs from the Windows registry if 16506 available. 16507 16508 16509 ---------------------------------------- 16510 09 January 2003. Summary of changes for version 20030109. 16511 16512 1) ACPI CA Core Subsystem: 16513 16514 Changed the behavior of the internal Buffer-to-String conversion 16515 function. The current ACPI specification states that the contents 16516 of the buffer are "converted to a string of two-character 16517 hexadecimal numbers, each separated by a space". Unfortunately, 16518 this definition is not backwards compatible with existing ACPI 1.0 16519 implementations (although the behavior was not defined in the ACPI 16520 1.0 specification). The new behavior simply copies data from the 16521 buffer to the string until a null character is found or the end of 16522 the buffer is reached. The new String object is always null 16523 terminated. This problem was seen during the generation of _BIF 16524 battery data where incorrect strings were returned for battery 16525 type, etc. This will also require an errata to the ACPI 16526 specification. 16527 16528 Renamed all instances of NATIVE_UINT and NATIVE_INT to 16529 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 16530 16531 Copyright in all module headers (both Linux and non-Linux) has be 16532 updated to 2003. 16533 16534 Code and Data Size: Current core subsystem library sizes are shown 16535 below. These are the code and data sizes for the acpica.lib 16536 produced by the Microsoft Visual C++ 6.0 compiler, and these 16537 values do not include any ACPI driver or OSPM code. The debug 16538 version of the code includes the debug output trace mechanism and 16539 has a much larger code and data size. Note that these values will 16540 vary depending on the efficiency of the compiler and the compiler 16541 options used during generation. 16542 16543 Previous Release 16544 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16545 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16546 Current Release: 16547 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16548 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16549 16550 16551 2) Linux 16552 16553 Fixed an oops on module insertion/removal (Matthew Tippett) 16554 16555 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 16556 16557 (2.5) Replace pr_debug (Randy Dunlap) 16558 16559 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 16560 16561 (Both) Eliminate spawning of thread from timer callback, in favor 16562 of schedule_work() 16563 16564 (Both) Show Lid status in /proc (Zdenek OGAR Skalak) 16565 16566 (Both) Added define for Fixed Function HW region (Matthew Wilcox) 16567 16568 (Both) Add missing statics to button.c (Pavel Machek) 16569 16570 Several changes have been made to the source code translation 16571 utility that generates the Linux Code in order to make the code 16572 more "Linux-like": 16573 16574 All typedefs on structs and unions have been removed in keeping 16575 with the Linux coding style. 16576 16577 Removed the non-Linux SourceSafe module revision number from each 16578 module header. 16579 16580 Completed major overhaul of symbols to be lowercase for linux. 16581 Doubled the number of symbols that are lowercase. 16582 16583 Fixed a problem where identifiers within procedure headers and 16584 within quotes were not fully lower cased (they were left with a 16585 starting capital.) 16586 16587 Some C macros whose only purpose is to allow the generation of 16- 16588 bit code are now completely removed in the Linux code, increasing 16589 readability and maintainability. 16590 16591 ---------------------------------------- 16592 16593 12 December 2002. Summary of changes for version 20021212. 16594 16595 16596 1) ACPI CA Core Subsystem: 16597 16598 Fixed a problem where the creation of a zero-length AML Buffer 16599 would cause a fault. 16600 16601 Fixed a problem where a Buffer object that pointed to a static AML 16602 buffer (in an ACPI table) could inadvertently be deleted, causing 16603 memory corruption. 16604 16605 Fixed a problem where a user buffer (passed in to the external 16606 ACPI CA interfaces) could be overwritten if the buffer was too 16607 small to complete the operation, causing memory corruption. 16608 16609 Fixed a problem in the Buffer-to-String conversion code where a 16610 string of length one was always returned, regardless of the size 16611 of the input Buffer object. 16612 16613 Removed the NATIVE_CHAR data type across the entire source due to 16614 lack of need and lack of consistent use. 16615 16616 Code and Data Size: Current core subsystem library sizes are shown 16617 below. These are the code and data sizes for the acpica.lib 16618 produced by the Microsoft Visual C++ 6.0 compiler, and these 16619 values do not include any ACPI driver or OSPM code. The debug 16620 version of the code includes the debug output trace mechanism and 16621 has a much larger code and data size. Note that these values will 16622 vary depending on the efficiency of the compiler and the compiler 16623 options used during generation. 16624 16625 Previous Release 16626 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16627 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16628 Current Release: 16629 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 16630 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 16631 16632 16633 ---------------------------------------- 16634 05 December 2002. Summary of changes for version 20021205. 16635 16636 1) ACPI CA Core Subsystem: 16637 16638 Fixed a problem where a store to a String or Buffer object could 16639 cause corruption of the DSDT if the object type being stored was 16640 the same as the target object type and the length of the object 16641 being stored was equal to or smaller than the original (existing) 16642 target object. This was seen to cause corruption of battery _BIF 16643 buffers if the _BIF method modified the buffer on the fly. 16644 16645 Fixed a problem where an internal error was generated if a control 16646 method invocation was used in an OperationRegion, Buffer, or 16647 Package declaration. This was caused by the deferred parsing of 16648 the control method and thus the deferred creation of the internal 16649 method object. The solution to this problem was to create the 16650 internal method object at the moment the method is encountered in 16651 the first pass - so that subsequent references to the method will 16652 able to obtain the required parameter count and thus properly 16653 parse the method invocation. This problem presented itself as an 16654 AE_AML_INTERNAL during the pass 1 parse phase during table load. 16655 16656 Fixed a problem where the internal String object copy routine did 16657 not always allocate sufficient memory for the target String object 16658 and caused memory corruption. This problem was seen to cause 16659 "Allocation already present in list!" errors as memory allocation 16660 became corrupted. 16661 16662 Implemented a new function for the evaluation of namespace objects 16663 that allows the specification of the allowable return object 16664 types. This simplifies a lot of code that checks for a return 16665 object of one or more specific objects returned from the 16666 evaluation (such as _STA, etc.) This may become and external 16667 function if it would be useful to ACPI-related drivers. 16668 16669 Completed another round of prefixing #defines with "ACPI_" for 16670 clarity. 16671 16672 Completed additional code restructuring to allow more modular 16673 linking for iASL compiler and AcpiExec. Several files were split 16674 creating new files. New files: nsparse.c dsinit.c evgpe.c 16675 16676 Implemented an abort mechanism to terminate an executing control 16677 method via the AML debugger. This feature is useful for debugging 16678 control methods that depend (wait) for specific hardware 16679 responses. 16680 16681 Code and Data Size: Current core subsystem library sizes are shown 16682 below. These are the code and data sizes for the acpica.lib 16683 produced by the Microsoft Visual C++ 6.0 compiler, and these 16684 values do not include any ACPI driver or OSPM code. The debug 16685 version of the code includes the debug output trace mechanism and 16686 has a much larger code and data size. Note that these values will 16687 vary depending on the efficiency of the compiler and the compiler 16688 options used during generation. 16689 16690 Previous Release 16691 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16692 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16693 Current Release: 16694 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 16695 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 16696 16697 16698 2) iASL Compiler/Disassembler 16699 16700 Fixed a compiler code generation problem for "Interrupt" Resource 16701 Descriptors. If specified in the ASL, the optional "Resource 16702 Source Index" and "Resource Source" fields were not inserted into 16703 the correct location within the AML resource descriptor, creating 16704 an invalid descriptor. 16705 16706 Fixed a disassembler problem for "Interrupt" resource descriptors. 16707 The optional "Resource Source Index" and "Resource Source" fields 16708 were ignored. 16709 16710 16711 ---------------------------------------- 16712 22 November 2002. Summary of changes for version 20021122. 16713 16714 16715 1) ACPI CA Core Subsystem: 16716 16717 Fixed a reported problem where an object stored to a Method Local 16718 or Arg was not copied to a new object during the store - the 16719 object pointer was simply copied to the Local/Arg. This caused 16720 all subsequent operations on the Local/Arg to also affect the 16721 original source of the store operation. 16722 16723 Fixed a problem where a store operation to a Method Local or Arg 16724 was not completed properly if the Local/Arg contained a reference 16725 (from RefOf) to a named field. The general-purpose store-to- 16726 namespace-node code is now used so that this case is handled 16727 automatically. 16728 16729 Fixed a problem where the internal object copy routine would cause 16730 a protection fault if the object being copied was a Package and 16731 contained either 1) a NULL package element or 2) a nested sub- 16732 package. 16733 16734 Fixed a problem with the GPE initialization that resulted from an 16735 ambiguity in the ACPI specification. One section of the 16736 specification states that both the address and length of the GPE 16737 block must be zero if the block is not supported. Another section 16738 implies that only the address need be zero if the block is not 16739 supported. The code has been changed so that both the address and 16740 the length must be non-zero to indicate a valid GPE block (i.e., 16741 if either the address or the length is zero, the GPE block is 16742 invalid.) 16743 16744 Code and Data Size: Current core subsystem library sizes are shown 16745 below. These are the code and data sizes for the acpica.lib 16746 produced by the Microsoft Visual C++ 6.0 compiler, and these 16747 values do not include any ACPI driver or OSPM code. The debug 16748 version of the code includes the debug output trace mechanism and 16749 has a much larger code and data size. Note that these values will 16750 vary depending on the efficiency of the compiler and the compiler 16751 options used during generation. 16752 16753 Previous Release 16754 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16755 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16756 Current Release: 16757 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16758 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 16759 16760 16761 2) Linux 16762 16763 Cleaned up EC driver. Exported an external EC read/write 16764 interface. By going through this, other drivers (most notably 16765 sonypi) will be able to serialize access to the EC. 16766 16767 16768 3) iASL Compiler/Disassembler 16769 16770 Implemented support to optionally generate include files for both 16771 ASM and C (the -i switch). This simplifies BIOS development by 16772 automatically creating include files that contain external 16773 declarations for the symbols that are created within the 16774 16775 (optionally generated) ASM and C AML source files. 16776 16777 16778 ---------------------------------------- 16779 15 November 2002. Summary of changes for version 20021115. 16780 16781 1) ACPI CA Core Subsystem: 16782 16783 Fixed a memory leak problem where an error during resolution of 16784 16785 method arguments during a method invocation from another method 16786 failed to cleanup properly by deleting all successfully resolved 16787 argument objects. 16788 16789 Fixed a problem where the target of the Index() operator was not 16790 correctly constructed if the source object was a package. This 16791 problem has not been detected because the use of a target operand 16792 with Index() is very rare. 16793 16794 Fixed a problem with the Index() operator where an attempt was 16795 made to delete the operand objects twice. 16796 16797 Fixed a problem where an attempt was made to delete an operand 16798 twice during execution of the CondRefOf() operator if the target 16799 did not exist. 16800 16801 Implemented the first of perhaps several internal create object 16802 functions that create and initialize a specific object type. This 16803 consolidates duplicated code wherever the object is created, thus 16804 shrinking the size of the subsystem. 16805 16806 Implemented improved debug/error messages for errors that occur 16807 during nested method invocations. All executing method pathnames 16808 are displayed (with the error) as the call stack is unwound - thus 16809 simplifying debug. 16810 16811 Fixed a problem introduced in the 10/02 release that caused 16812 premature deletion of a buffer object if a buffer was used as an 16813 ASL operand where an integer operand is required (Thus causing an 16814 implicit object conversion from Buffer to Integer.) The change in 16815 the 10/02 release was attempting to fix a memory leak (albeit 16816 incorrectly.) 16817 16818 Code and Data Size: Current core subsystem library sizes are shown 16819 below. These are the code and data sizes for the acpica.lib 16820 produced by the Microsoft Visual C++ 6.0 compiler, and these 16821 values do not include any ACPI driver or OSPM code. The debug 16822 version of the code includes the debug output trace mechanism and 16823 has a much larger code and data size. Note that these values will 16824 vary depending on the efficiency of the compiler and the compiler 16825 options used during generation. 16826 16827 Previous Release 16828 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16829 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16830 Current Release: 16831 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 16832 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 16833 16834 16835 2) Linux 16836 16837 Changed the implementation of the ACPI semaphores to use down() 16838 instead of down_interruptable(). It is important that the 16839 execution of ACPI control methods not be interrupted by signals. 16840 Methods must run to completion, or the system may be left in an 16841 unknown/unstable state. 16842 16843 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 16844 (Shawn Starr) 16845 16846 16847 3) iASL Compiler/Disassembler 16848 16849 16850 Changed the default location of output files. All output files 16851 are now placed in the current directory by default instead of in 16852 the directory of the source file. This change may affect some 16853 existing makefiles, but it brings the behavior of the compiler in 16854 line with other similar tools. The location of the output files 16855 can be overridden with the -p command line switch. 16856 16857 16858 ---------------------------------------- 16859 11 November 2002. Summary of changes for version 20021111. 16860 16861 16862 0) ACPI Specification 2.0B is released and is now available at: 16863 http://www.acpi.info/index.html 16864 16865 16866 1) ACPI CA Core Subsystem: 16867 16868 Implemented support for the ACPI 2.0 SMBus Operation Regions. 16869 This includes the early detection and handoff of the request to 16870 the SMBus region handler (avoiding all of the complex field 16871 support code), and support for the bidirectional return packet 16872 from an SMBus write operation. This paves the way for the 16873 development of SMBus drivers in each host operating system. 16874 16875 Fixed a problem where the semaphore WAIT_FOREVER constant was 16876 defined as 32 bits, but must be 16 bits according to the ACPI 16877 specification. This had the side effect of causing ASL 16878 Mutex/Event timeouts even though the ASL code requested a wait 16879 forever. Changed all internal references to the ACPI timeout 16880 parameter to 16 bits to prevent future problems. Changed the name 16881 of WAIT_FOREVER to ACPI_WAIT_FOREVER. 16882 16883 Code and Data Size: Current core subsystem library sizes are shown 16884 below. These are the code and data sizes for the acpica.lib 16885 produced by the Microsoft Visual C++ 6.0 compiler, and these 16886 values do not include any ACPI driver or OSPM code. The debug 16887 version of the code includes the debug output trace mechanism and 16888 has a much larger code and data size. Note that these values will 16889 vary depending on the efficiency of the compiler and the compiler 16890 options used during generation. 16891 16892 Previous Release 16893 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16894 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16895 Current Release: 16896 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 16897 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 16898 16899 16900 2) Linux 16901 16902 Module loading/unloading fixes (John Cagle) 16903 16904 16905 3) iASL Compiler/Disassembler 16906 16907 Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 16908 16909 Implemented support for the disassembly of all SMBus protocol 16910 keywords (SMBQuick, SMBWord, etc.) 16911 16912 ---------------------------------------- 16913 01 November 2002. Summary of changes for version 20021101. 16914 16915 16916 1) ACPI CA Core Subsystem: 16917 16918 Fixed a problem where platforms that have a GPE1 block but no GPE0 16919 block were not handled correctly. This resulted in a "GPE 16920 overlap" error message. GPE0 is no longer required. 16921 16922 Removed code added in the previous release that inserted nodes 16923 into the namespace in alphabetical order. This caused some side- 16924 effects on various machines. The root cause of the problem is 16925 still under investigation since in theory, the internal ordering 16926 of the namespace nodes should not matter. 16927 16928 16929 Enhanced error reporting for the case where a named object is not 16930 found during control method execution. The full ACPI namepath 16931 (name reference) of the object that was not found is displayed in 16932 this case. 16933 16934 Note: as a result of the overhaul of the namespace object types in 16935 the previous release, the namespace nodes for the predefined 16936 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 16937 instead of ACPI_TYPE_ANY. This simplifies the namespace 16938 management code but may affect code that walks the namespace tree 16939 looking for specific object types. 16940 16941 Code and Data Size: Current core subsystem library sizes are shown 16942 below. These are the code and data sizes for the acpica.lib 16943 produced by the Microsoft Visual C++ 6.0 compiler, and these 16944 values do not include any ACPI driver or OSPM code. The debug 16945 version of the code includes the debug output trace mechanism and 16946 has a much larger code and data size. Note that these values will 16947 vary depending on the efficiency of the compiler and the compiler 16948 options used during generation. 16949 16950 Previous Release 16951 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 16952 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 16953 Current Release: 16954 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 16955 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 16956 16957 16958 2) Linux 16959 16960 Fixed a problem introduced in the previous release where the 16961 Processor and Thermal objects were not recognized and installed in 16962 /proc. This was related to the scope type change described above. 16963 16964 16965 3) iASL Compiler/Disassembler 16966 16967 Implemented the -g option to get all of the required ACPI tables 16968 from the registry and save them to files (Windows version of the 16969 compiler only.) The required tables are the FADT, FACS, and DSDT. 16970 16971 Added ACPI table checksum validation during table disassembly in 16972 order to catch corrupted tables. 16973 16974 16975 ---------------------------------------- 16976 22 October 2002. Summary of changes for version 20021022. 16977 16978 1) ACPI CA Core Subsystem: 16979 16980 Implemented a restriction on the Scope operator that the target 16981 must already exist in the namespace at the time the operator is 16982 encountered (during table load or method execution). In other 16983 words, forward references are not allowed and Scope() cannot 16984 create a new object. This changes the previous behavior where the 16985 interpreter would create the name if not found. This new behavior 16986 correctly enables the search-to-root algorithm during namespace 16987 lookup of the target name. Because of this upsearch, this fixes 16988 the known Compaq _SB_.OKEC problem and makes both the AML 16989 interpreter and iASL compiler compatible with other ACPI 16990 implementations. 16991 16992 Completed a major overhaul of the internal ACPI object types for 16993 the ACPI Namespace and the associated operand objects. Many of 16994 these types had become obsolete with the introduction of the two- 16995 pass namespace load. This cleanup simplifies the code and makes 16996 the entire namespace load mechanism much clearer and easier to 16997 understand. 16998 16999 Improved debug output for tracking scope opening/closing to help 17000 diagnose scoping issues. The old scope name as well as the new 17001 scope name are displayed. Also improved error messages for 17002 problems with ASL Mutex objects and error messages for GPE 17003 problems. 17004 17005 Cleaned up the namespace dump code, removed obsolete code. 17006 17007 All string output (for all namespace/object dumps) now uses the 17008 common ACPI string output procedure which handles escapes properly 17009 and does not emit non-printable characters. 17010 17011 Fixed some issues with constants in the 64-bit version of the 17012 local C library (utclib.c) 17013 17014 17015 2) Linux 17016 17017 EC Driver: No longer attempts to acquire the Global Lock at 17018 interrupt level. 17019 17020 17021 3) iASL Compiler/Disassembler 17022 17023 Implemented ACPI 2.0B grammar change that disallows all Type 1 and 17024 2 opcodes outside of a control method. This means that the 17025 "executable" operators (versus the "namespace" operators) cannot 17026 be used at the table level; they can only be used within a control 17027 method. 17028 17029 Implemented the restriction on the Scope() operator where the 17030 target must already exist in the namespace at the time the 17031 operator is encountered (during ASL compilation). In other words, 17032 forward references are not allowed and Scope() cannot create a new 17033 object. This makes the iASL compiler compatible with other ACPI 17034 implementations and makes the Scope() implementation adhere to the 17035 ACPI specification. 17036 17037 Fixed a problem where namepath optimization for the Alias operator 17038 was optimizing the wrong path (of the two namepaths.) This caused 17039 a "Missing alias link" error message. 17040 17041 Fixed a problem where an "unknown reserved name" warning could be 17042 incorrectly generated for names like "_SB" when the trailing 17043 underscore is not used in the original ASL. 17044 17045 Fixed a problem where the reserved name check did not handle 17046 NamePaths with multiple NameSegs correctly. The first nameseg of 17047 the NamePath was examined instead of the last NameSeg. 17048 17049 17050 ---------------------------------------- 17051 17052 02 October 2002. Summary of changes for this release. 17053 17054 17055 1) ACPI CA Core Subsystem version 20021002: 17056 17057 Fixed a problem where a store/copy of a string to an existing 17058 string did not always set the string length properly in the String 17059 object. 17060 17061 Fixed a reported problem with the ToString operator where the 17062 behavior was identical to the ToHexString operator instead of just 17063 simply converting a raw buffer to a string data type. 17064 17065 Fixed a problem where CopyObject and the other "explicit" 17066 conversion operators were not updating the internal namespace node 17067 type as part of the store operation. 17068 17069 Fixed a memory leak during implicit source operand conversion 17070 where the original object was not deleted if it was converted to a 17071 new object of a different type. 17072 17073 Enhanced error messages for all problems associated with namespace 17074 lookups. Common procedure generates and prints the lookup name as 17075 well as the formatted status. 17076 17077 Completed implementation of a new design for the Alias support 17078 within the namespace. The existing design did not handle the case 17079 where a new object was assigned to one of the two names due to the 17080 use of an explicit conversion operator, resulting in the two names 17081 pointing to two different objects. The new design simply points 17082 the Alias name to the original name node - not to the object. 17083 This results in a level of indirection that must be handled in the 17084 name resolution mechanism. 17085 17086 Code and Data Size: Current core subsystem library sizes are shown 17087 below. These are the code and data sizes for the acpica.lib 17088 produced by the Microsoft Visual C++ 6.0 compiler, and these 17089 values do not include any ACPI driver or OSPM code. The debug 17090 version of the code includes the debug output trace mechanism and 17091 has a larger code and data size. Note that these values will vary 17092 depending on the efficiency of the compiler and the compiler 17093 options used during generation. 17094 17095 Previous Release 17096 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17097 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17098 Current Release: 17099 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 17100 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 17101 17102 17103 2) Linux 17104 17105 Initialize thermal driver's timer before it is used. (Knut 17106 Neumann) 17107 17108 Allow handling negative celsius values. (Kochi Takayoshi) 17109 17110 Fix thermal management and make trip points. R/W (Pavel Machek) 17111 17112 Fix /proc/acpi/sleep. (P. Christeas) 17113 17114 IA64 fixes. (David Mosberger) 17115 17116 Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 17117 17118 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 17119 Brodowski) 17120 17121 17122 3) iASL Compiler/Disassembler 17123 17124 Clarified some warning/error messages. 17125 17126 17127 ---------------------------------------- 17128 18 September 2002. Summary of changes for this release. 17129 17130 17131 1) ACPI CA Core Subsystem version 20020918: 17132 17133 Fixed a reported problem with reference chaining (via the Index() 17134 and RefOf() operators) in the ObjectType() and SizeOf() operators. 17135 The definition of these operators includes the dereferencing of 17136 all chained references to return information on the base object. 17137 17138 Fixed a problem with stores to indexed package elements - the 17139 existing code would not complete the store if an "implicit 17140 conversion" was not performed. In other words, if the existing 17141 object (package element) was to be replaced completely, the code 17142 didn't handle this case. 17143 17144 Relaxed typechecking on the ASL "Scope" operator to allow the 17145 target name to refer to an object of type Integer, String, or 17146 Buffer, in addition to the scoping object types (Device, 17147 predefined Scopes, Processor, PowerResource, and ThermalZone.) 17148 This allows existing AML code that has workarounds for a bug in 17149 Windows to function properly. A warning is issued, however. This 17150 affects both the AML interpreter and the iASL compiler. Below is 17151 an example of this type of ASL code: 17152 17153 Name(DEB,0x00) 17154 Scope(DEB) 17155 { 17156 17157 Fixed some reported problems with 64-bit integer support in the 17158 local implementation of C library functions (clib.c) 17159 17160 17161 2) Linux 17162 17163 Use ACPI fix map region instead of IOAPIC region, since it is 17164 undefined in non-SMP. 17165 17166 Ensure that the SCI has the proper polarity and trigger, even on 17167 systems that do not have an interrupt override entry in the MADT. 17168 17169 2.5 big driver reorganization (Pat Mochel) 17170 17171 Use early table mapping code from acpitable.c (Andi Kleen) 17172 17173 New blacklist entries (Andi Kleen) 17174 17175 Blacklist improvements. Split blacklist code out into a separate 17176 file. Move checking the blacklist to very early. Previously, we 17177 would use ACPI tables, and then halfway through init, check the 17178 blacklist -- too late. Now, it's early enough to completely fall- 17179 back to non-ACPI. 17180 17181 17182 3) iASL Compiler/Disassembler version 20020918: 17183 17184 Fixed a problem where the typechecking code didn't know that an 17185 alias could point to a method. In other words, aliases were not 17186 being dereferenced during typechecking. 17187 17188 17189 ---------------------------------------- 17190 29 August 2002. Summary of changes for this release. 17191 17192 1) ACPI CA Core Subsystem Version 20020829: 17193 17194 If the target of a Scope() operator already exists, it must be an 17195 object type that actually opens a scope -- such as a Device, 17196 Method, Scope, etc. This is a fatal runtime error. Similar error 17197 check has been added to the iASL compiler also. 17198 17199 Tightened up the namespace load to disallow multiple names in the 17200 same scope. This previously was allowed if both objects were of 17201 the same type. (i.e., a lookup was the same as entering a new 17202 name). 17203 17204 17205 2) Linux 17206 17207 Ensure that the ACPI interrupt has the proper trigger and 17208 polarity. 17209 17210 local_irq_disable is extraneous. (Matthew Wilcox) 17211 17212 Make "acpi=off" actually do what it says, and not use the ACPI 17213 interpreter *or* the tables. 17214 17215 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 17216 Takayoshi) 17217 17218 17219 3) iASL Compiler/Disassembler Version 20020829: 17220 17221 Implemented namepath optimization for name declarations. For 17222 example, a declaration like "Method (\_SB_.ABCD)" would get 17223 optimized to "Method (ABCD)" if the declaration is within the 17224 \_SB_ scope. This optimization is in addition to the named 17225 reference path optimization first released in the previous 17226 version. This would seem to complete all possible optimizations 17227 for namepaths within the ASL/AML. 17228 17229 If the target of a Scope() operator already exists, it must be an 17230 object type that actually opens a scope -- such as a Device, 17231 Method, Scope, etc. 17232 17233 Implemented a check and warning for unreachable code in the same 17234 block below a Return() statement. 17235 17236 Fixed a problem where the listing file was not generated if the 17237 compiler aborted if the maximum error count was exceeded (200). 17238 17239 Fixed a problem where the typechecking of method return values was 17240 broken. This includes the check for a return value when the 17241 method is invoked as a TermArg (a return value is expected.) 17242 17243 Fixed a reported problem where EOF conditions during a quoted 17244 string or comment caused a fault. 17245 17246 17247 ---------------------------------------- 17248 15 August 2002. Summary of changes for this release. 17249 17250 1) ACPI CA Core Subsystem Version 20020815: 17251 17252 Fixed a reported problem where a Store to a method argument that 17253 contains a reference did not perform the indirect store correctly. 17254 This problem was created during the conversion to the new 17255 reference object model - the indirect store to a method argument 17256 code was not updated to reflect the new model. 17257 17258 Reworked the ACPI mode change code to better conform to ACPI 2.0, 17259 handle corner cases, and improve code legibility (Kochi Takayoshi) 17260 17261 Fixed a problem with the pathname parsing for the carat (^) 17262 prefix. The heavy use of the carat operator by the new namepath 17263 optimization in the iASL compiler uncovered a problem with the AML 17264 interpreter handling of this prefix. In the case where one or 17265 more carats precede a single nameseg, the nameseg was treated as 17266 standalone and the search rule (to root) was inadvertently 17267 applied. This could cause both the iASL compiler and the 17268 interpreter to find the wrong object or to miss the error that 17269 should occur if the object does not exist at that exact pathname. 17270 17271 Found and fixed the problem where the HP Pavilion DSDT would not 17272 load. This was a relatively minor tweak to the table loading code 17273 (a problem caused by the unexpected encounter with a method 17274 invocation not within a control method), but it does not solve the 17275 overall issue of the execution of AML code at the table level. 17276 This investigation is still ongoing. 17277 17278 Code and Data Size: Current core subsystem library sizes are shown 17279 below. These are the code and data sizes for the acpica.lib 17280 produced by the Microsoft Visual C++ 6.0 compiler, and these 17281 values do not include any ACPI driver or OSPM code. The debug 17282 version of the code includes the debug output trace mechanism and 17283 has a larger code and data size. Note that these values will vary 17284 depending on the efficiency of the compiler and the compiler 17285 options used during generation. 17286 17287 Previous Release 17288 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17289 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17290 Current Release: 17291 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 17292 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 17293 17294 17295 2) Linux 17296 17297 Remove redundant slab.h include (Brad Hards) 17298 17299 Fix several bugs in thermal.c (Herbert Nachtnebel) 17300 17301 Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 17302 17303 Change acpi_system_suspend to use updated irq functions (Pavel 17304 Machek) 17305 17306 Export acpi_get_firmware_table (Matthew Wilcox) 17307 17308 Use proper root proc entry for ACPI (Kochi Takayoshi) 17309 17310 Fix early-boot table parsing (Bjorn Helgaas) 17311 17312 17313 3) iASL Compiler/Disassembler 17314 17315 Reworked the compiler options to make them more consistent and to 17316 use two-letter options where appropriate. We were running out of 17317 sensible letters. This may break some makefiles, so check the 17318 current options list by invoking the compiler with no parameters. 17319 17320 Completed the design and implementation of the ASL namepath 17321 optimization option for the compiler. This option optimizes all 17322 references to named objects to the shortest possible path. The 17323 first attempt tries to utilize a single nameseg (4 characters) and 17324 the "search-to-root" algorithm used by the interpreter. If that 17325 cannot be used (because either the name is not in the search path 17326 or there is a conflict with another object with the same name), 17327 the pathname is optimized using the carat prefix (usually a 17328 shorter string than specifying the entire path from the root.) 17329 17330 Implemented support to obtain the DSDT from the Windows registry 17331 (when the disassembly option is specified with no input file). 17332 Added this code as the implementation for AcpiOsTableOverride in 17333 the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 17334 utility) to scan memory for the DSDT to the AcpiOsTableOverride 17335 function in the DOS OSL to make the disassembler truly OS 17336 independent. 17337 17338 Implemented a new option to disassemble and compile in one step. 17339 When used without an input filename, this option will grab the 17340 DSDT from the local machine, disassemble it, and compile it in one 17341 step. 17342 17343 Added a warning message for invalid escapes (a backslash followed 17344 by any character other than the allowable escapes). This catches 17345 the quoted string error "\_SB_" (which should be "\\_SB_" ). 17346 17347 Also, there are numerous instances in the ACPI specification where 17348 this error occurs. 17349 17350 Added a compiler option to disable all optimizations. This is 17351 basically the "compatibility mode" because by using this option, 17352 the AML code will come out exactly the same as other ASL 17353 compilers. 17354 17355 Added error messages for incorrectly ordered dependent resource 17356 functions. This includes: missing EndDependentFn macro at end of 17357 dependent resource list, nested dependent function macros (both 17358 start and end), and missing StartDependentFn macro. These are 17359 common errors that should be caught at compile time. 17360 17361 Implemented _OSI support for the disassembler and compiler. _OSI 17362 must be included in the namespace for proper disassembly (because 17363 the disassembler must know the number of arguments.) 17364 17365 Added an "optimization" message type that is optional (off by 17366 default). This message is used for all optimizations - including 17367 constant folding, integer optimization, and namepath optimization. 17368 17369 ---------------------------------------- 17370 25 July 2002. Summary of changes for this release. 17371 17372 17373 1) ACPI CA Core Subsystem Version 20020725: 17374 17375 The AML Disassembler has been enhanced to produce compilable ASL 17376 code and has been integrated into the iASL compiler (see below) as 17377 well as the single-step disassembly for the AML debugger and the 17378 disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 17379 resource templates and macros are fully supported. The 17380 disassembler has been tested on over 30 different AML files, 17381 producing identical AML when the resulting disassembled ASL file 17382 is recompiled with the same ASL compiler. 17383 17384 Modified the Resource Manager to allow zero interrupts and zero 17385 dma channels during the GetCurrentResources call. This was 17386 causing problems on some platforms. 17387 17388 Added the AcpiOsRedirectOutput interface to the OSL to simplify 17389 output redirection for the AcpiOsPrintf and AcpiOsVprintf 17390 interfaces. 17391 17392 Code and Data Size: Current core subsystem library sizes are shown 17393 below. These are the code and data sizes for the acpica.lib 17394 produced by the Microsoft Visual C++ 6.0 compiler, and these 17395 values do not include any ACPI driver or OSPM code. The debug 17396 version of the code includes the debug output trace mechanism and 17397 has a larger code and data size. Note that these values will vary 17398 depending on the efficiency of the compiler and the compiler 17399 options used during generation. 17400 17401 Previous Release 17402 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17403 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17404 Current Release: 17405 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 17406 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 17407 17408 17409 2) Linux 17410 17411 Fixed a panic in the EC driver (Dominik Brodowski) 17412 17413 Implemented checksum of the R/XSDT itself during Linux table scan 17414 (Richard Schaal) 17415 17416 17417 3) iASL compiler 17418 17419 The AML disassembler is integrated into the compiler. The "-d" 17420 option invokes the disassembler to completely disassemble an 17421 input AML file, producing as output a text ASL file with the 17422 extension ".dsl" (to avoid name collisions with existing .asl 17423 source files.) A future enhancement will allow the disassembler 17424 to obtain the BIOS DSDT from the registry under Windows. 17425 17426 Fixed a problem with the VendorShort and VendorLong resource 17427 descriptors where an invalid AML sequence was created. 17428 17429 Implemented a fix for BufferData term in the ASL parser. It was 17430 inadvertently defined twice, allowing invalid syntax to pass and 17431 causing reduction conflicts. 17432 17433 Fixed a problem where the Ones opcode could get converted to a 17434 value of zero if "Ones" was used where a byte, word or dword value 17435 was expected. The 64-bit value is now truncated to the correct 17436 size with the correct value. 17437 17438 17439 17440 ---------------------------------------- 17441 02 July 2002. Summary of changes for this release. 17442 17443 17444 1) ACPI CA Core Subsystem Version 20020702: 17445 17446 The Table Manager code has been restructured to add several new 17447 features. Tables that are not required by the core subsystem 17448 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 17449 validated in any way and are returned from AcpiGetFirmwareTable if 17450 requested. The AcpiOsTableOverride interface is now called for 17451 each table that is loaded by the subsystem in order to allow the 17452 host to override any table it chooses. Previously, only the DSDT 17453 could be overridden. Added one new files, tbrsdt.c and 17454 tbgetall.c. 17455 17456 Fixed a problem with the conversion of internal package objects to 17457 external objects (when a package is returned from a control 17458 method.) The return buffer length was set to zero instead of the 17459 proper length of the package object. 17460 17461 Fixed a reported problem with the use of the RefOf and DeRefOf 17462 operators when passing reference arguments to control methods. A 17463 new type of Reference object is used internally for references 17464 produced by the RefOf operator. 17465 17466 Added additional error messages in the Resource Manager to explain 17467 AE_BAD_DATA errors when they occur during resource parsing. 17468 17469 Split the AcpiEnableSubsystem into two primitives to enable a 17470 finer granularity initialization sequence. These two calls should 17471 be called in this order: AcpiEnableSubsystem (flags), 17472 AcpiInitializeObjects (flags). The flags parameter remains the 17473 same. 17474 17475 17476 2) Linux 17477 17478 Updated the ACPI utilities module to understand the new style of 17479 fully resolved package objects that are now returned from the core 17480 subsystem. This eliminates errors of the form: 17481 17482 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 17483 acpi_utils-0430 [145] acpi_evaluate_reference: 17484 Invalid element in package (not a device reference) 17485 17486 The method evaluation utility uses the new buffer allocation 17487 scheme instead of calling AcpiEvaluate Object twice. 17488 17489 Added support for ECDT. This allows the use of the Embedded 17490 17491 Controller before the namespace has been fully initialized, which 17492 is necessary for ACPI 2.0 support, and for some laptops to 17493 initialize properly. (Laptops using ECDT are still rare, so only 17494 limited testing was performed of the added functionality.) 17495 17496 Fixed memory leaks in the EC driver. 17497 17498 Eliminated a brittle code structure in acpi_bus_init(). 17499 17500 Eliminated the acpi_evaluate() helper function in utils.c. It is 17501 no longer needed since acpi_evaluate_object can optionally 17502 allocate memory for the return object. 17503 17504 Implemented fix for keyboard hang when getting battery readings on 17505 some systems (Stephen White) 17506 17507 PCI IRQ routing update (Dominik Brodowski) 17508 17509 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 17510 support 17511 17512 ---------------------------------------- 17513 11 June 2002. Summary of changes for this release. 17514 17515 17516 1) ACPI CA Core Subsystem Version 20020611: 17517 17518 Fixed a reported problem where constants such as Zero and One 17519 appearing within _PRT packages were not handled correctly within 17520 the resource manager code. Originally reported against the ASL 17521 compiler because the code generator now optimizes integers to 17522 their minimal AML representation (i.e. AML constants if possible.) 17523 The _PRT code now handles all AML constant opcodes correctly 17524 (Zero, One, Ones, Revision). 17525 17526 Fixed a problem with the Concatenate operator in the AML 17527 interpreter where a buffer result object was incorrectly marked as 17528 not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 17529 17530 All package sub-objects are now fully resolved before they are 17531 returned from the external ACPI interfaces. This means that name 17532 strings are resolved to object handles, and constant operators 17533 (Zero, One, Ones, Revision) are resolved to Integers. 17534 17535 Implemented immediate resolution of the AML Constant opcodes 17536 (Zero, One, Ones, Revision) to Integer objects upon detection 17537 within the AML stream. This has simplified and reduced the 17538 generated code size of the subsystem by eliminating about 10 17539 switch statements for these constants (which previously were 17540 contained in Reference objects.) The complicating issues are that 17541 the Zero opcode is used as a "placeholder" for unspecified 17542 optional target operands and stores to constants are defined to be 17543 no-ops. 17544 17545 Code and Data Size: Current core subsystem library sizes are shown 17546 below. These are the code and data sizes for the acpica.lib 17547 produced by the Microsoft Visual C++ 6.0 compiler, and these 17548 values do not include any ACPI driver or OSPM code. The debug 17549 version of the code includes the debug output trace mechanism and 17550 has a larger code and data size. Note that these values will vary 17551 depending on the efficiency of the compiler and the compiler 17552 options used during generation. 17553 17554 Previous Release 17555 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17556 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17557 Current Release: 17558 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 17559 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 17560 17561 17562 2) Linux 17563 17564 17565 Added preliminary support for obtaining _TRA data for PCI root 17566 bridges (Bjorn Helgaas). 17567 17568 17569 3) iASL Compiler Version X2046: 17570 17571 Fixed a problem where the "_DDN" reserved name was defined to be a 17572 control method with one argument. There are no arguments, and 17573 _DDN does not have to be a control method. 17574 17575 Fixed a problem with the Linux version of the compiler where the 17576 source lines printed with error messages were the wrong lines. 17577 This turned out to be the "LF versus CR/LF" difference between 17578 Windows and Unix. This appears to be the longstanding issue 17579 concerning listing output and error messages. 17580 17581 Fixed a problem with the Linux version of compiler where opcode 17582 names within error messages were wrong. This was caused by a 17583 slight difference in the output of the Flex tool on Linux versus 17584 Windows. 17585 17586 Fixed a problem with the Linux compiler where the hex output files 17587 contained some garbage data caused by an internal buffer overrun. 17588 17589 17590 ---------------------------------------- 17591 17 May 2002. Summary of changes for this release. 17592 17593 17594 1) ACPI CA Core Subsystem Version 20020517: 17595 17596 Implemented a workaround to an BIOS bug discovered on the HP 17597 OmniBook where the FADT revision number and the table size are 17598 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 17599 behavior is to fallback to using only the ACPI 1.0 fields of the 17600 FADT if the table is too small to be a ACPI 2.0 table as claimed 17601 by the revision number. Although this is a BIOS bug, this is a 17602 case where the workaround is simple enough and with no side 17603 effects, so it seemed prudent to add it. A warning message is 17604 issued, however. 17605 17606 Implemented minimum size checks for the fixed-length ACPI tables - 17607 - the FADT and FACS, as well as consistency checks between the 17608 revision number and the table size. 17609 17610 Fixed a reported problem in the table override support where the 17611 new table pointer was incorrectly treated as a physical address 17612 instead of a logical address. 17613 17614 Eliminated the use of the AE_AML_ERROR exception and replaced it 17615 with more descriptive codes. 17616 17617 Fixed a problem where an exception would occur if an ASL Field was 17618 defined with no named Field Units underneath it (used by some 17619 index fields). 17620 17621 Code and Data Size: Current core subsystem library sizes are shown 17622 below. These are the code and data sizes for the acpica.lib 17623 produced by the Microsoft Visual C++ 6.0 compiler, and these 17624 values do not include any ACPI driver or OSPM code. The debug 17625 version of the code includes the debug output trace mechanism and 17626 has a larger code and data size. Note that these values will vary 17627 depending on the efficiency of the compiler and the compiler 17628 options used during generation. 17629 17630 Previous Release 17631 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17632 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17633 Current Release: 17634 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 17635 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 17636 17637 17638 17639 2) Linux 17640 17641 Much work done on ACPI init (MADT and PCI IRQ routing support). 17642 (Paul D. and Dominik Brodowski) 17643 17644 Fix PCI IRQ-related panic on boot (Sam Revitch) 17645 17646 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 17647 17648 Fix "MHz" typo (Dominik Brodowski) 17649 17650 Fix RTC year 2000 issue (Dominik Brodowski) 17651 17652 Preclude multiple button proc entries (Eric Brunet) 17653 17654 Moved arch-specific code out of include/platform/aclinux.h 17655 17656 3) iASL Compiler Version X2044: 17657 17658 Implemented error checking for the string used in the EISAID macro 17659 (Usually used in the definition of the _HID object.) The code now 17660 strictly enforces the PnP format - exactly 7 characters, 3 17661 uppercase letters and 4 hex digits. 17662 17663 If a raw string is used in the definition of the _HID object 17664 (instead of the EISAID macro), the string must contain all 17665 alphanumeric characters (e.g., "*PNP0011" is not allowed because 17666 of the asterisk.) 17667 17668 Implemented checking for invalid use of ACPI reserved names for 17669 most of the name creation operators (Name, Device, Event, Mutex, 17670 OperationRegion, PowerResource, Processor, and ThermalZone.) 17671 Previously, this check was only performed for control methods. 17672 17673 Implemented an additional check on the Name operator to emit an 17674 error if a reserved name that must be implemented in ASL as a 17675 control method is used. We know that a reserved name must be a 17676 method if it is defined with input arguments. 17677 17678 The warning emitted when a namespace object reference is not found 17679 during the cross reference phase has been changed into an error. 17680 The "External" directive should be used for names defined in other 17681 modules. 17682 17683 17684 4) Tools and Utilities 17685 17686 The 16-bit tools (adump16 and aexec16) have been regenerated and 17687 tested. 17688 17689 Fixed a problem with the output of both acpidump and adump16 where 17690 the indentation of closing parentheses and brackets was not 17691 17692 aligned properly with the parent block. 17693 17694 17695 ---------------------------------------- 17696 03 May 2002. Summary of changes for this release. 17697 17698 17699 1) ACPI CA Core Subsystem Version 20020503: 17700 17701 Added support a new OSL interface that allows the host operating 17702 17703 system software to override the DSDT found in the firmware - 17704 AcpiOsTableOverride. With this interface, the OSL can examine the 17705 version of the firmware DSDT and replace it with a different one 17706 if desired. 17707 17708 Added new external interfaces for accessing ACPI registers from 17709 device drivers and other system software - AcpiGetRegister and 17710 AcpiSetRegister. This was simply an externalization of the 17711 existing AcpiHwBitRegister interfaces. 17712 17713 Fixed a regression introduced in the previous build where the 17714 ASL/AML CreateField operator always returned an error, 17715 "destination must be a NS Node". 17716 17717 Extended the maximum time (before failure) to successfully enable 17718 ACPI mode to 3 seconds. 17719 17720 Code and Data Size: Current core subsystem library sizes are shown 17721 below. These are the code and data sizes for the acpica.lib 17722 produced by the Microsoft Visual C++ 6.0 compiler, and these 17723 values do not include any ACPI driver or OSPM code. The debug 17724 version of the code includes the debug output trace mechanism and 17725 has a larger code and data size. Note that these values will vary 17726 depending on the efficiency of the compiler and the compiler 17727 options used during generation. 17728 17729 Previous Release 17730 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17731 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17732 Current Release: 17733 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 17734 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 17735 17736 17737 2) Linux 17738 17739 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 17740 free. While 3 out of 4 of our in-house systems work fine, the last 17741 one still hangs when testing the LAPIC timer. 17742 17743 Renamed many files in 2.5 kernel release to omit "acpi_" from the 17744 name. 17745 17746 Added warning on boot for Presario 711FR. 17747 17748 Sleep improvements (Pavel Machek) 17749 17750 ACPI can now be built without CONFIG_PCI enabled. 17751 17752 IA64: Fixed memory map functions (JI Lee) 17753 17754 17755 3) iASL Compiler Version X2043: 17756 17757 Added support to allow the compiler to be integrated into the MS 17758 VC++ development environment for one-button compilation of single 17759 files or entire projects -- with error-to-source-line mapping. 17760 17761 Implemented support for compile-time constant folding for the 17762 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 17763 specification. This allows the ASL writer to use expressions 17764 instead of Integer/Buffer/String constants in terms that must 17765 evaluate to constants at compile time and will also simplify the 17766 emitted AML in any such sub-expressions that can be folded 17767 (evaluated at compile-time.) This increases the size of the 17768 compiler significantly because a portion of the ACPI CA AML 17769 interpreter is included within the compiler in order to pre- 17770 evaluate constant expressions. 17771 17772 17773 Fixed a problem with the "Unicode" ASL macro that caused the 17774 compiler to fault. (This macro is used in conjunction with the 17775 _STR reserved name.) 17776 17777 Implemented an AML opcode optimization to use the Zero, One, and 17778 Ones opcodes where possible to further reduce the size of integer 17779 constants and thus reduce the overall size of the generated AML 17780 code. 17781 17782 Implemented error checking for new reserved terms for ACPI version 17783 2.0A. 17784 17785 Implemented the -qr option to display the current list of ACPI 17786 reserved names known to the compiler. 17787 17788 Implemented the -qc option to display the current list of ASL 17789 operators that are allowed within constant expressions and can 17790 therefore be folded at compile time if the operands are constants. 17791 17792 17793 4) Documentation 17794 17795 Updated the Programmer's Reference for new interfaces, data types, 17796 and memory allocation model options. 17797 17798 Updated the iASL Compiler User Reference to apply new format and 17799 add information about new features and options. 17800 17801 ---------------------------------------- 17802 19 April 2002. Summary of changes for this release. 17803 17804 1) ACPI CA Core Subsystem Version 20020419: 17805 17806 The source code base for the Core Subsystem has been completely 17807 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 17808 versions. The Lint option files used are included in the 17809 /acpi/generate/lint directory. 17810 17811 Implemented enhanced status/error checking across the entire 17812 Hardware manager subsystem. Any hardware errors (reported from 17813 the OSL) are now bubbled up and will abort a running control 17814 method. 17815 17816 17817 Fixed a problem where the per-ACPI-table integer width (32 or 64) 17818 was stored only with control method nodes, causing a fault when 17819 non-control method code was executed during table loading. The 17820 solution implemented uses a global variable to indicate table 17821 width across the entire ACPI subsystem. Therefore, ACPI CA does 17822 not support mixed integer widths across different ACPI tables 17823 (DSDT, SSDT). 17824 17825 Fixed a problem where NULL extended fields (X fields) in an ACPI 17826 2.0 ACPI FADT caused the table load to fail. Although the 17827 existing ACPI specification is a bit fuzzy on this topic, the new 17828 behavior is to fall back on a ACPI 1.0 field if the corresponding 17829 ACPI 2.0 X field is zero (even though the table revision indicates 17830 a full ACPI 2.0 table.) The ACPI specification will be updated to 17831 clarify this issue. 17832 17833 Fixed a problem with the SystemMemory operation region handler 17834 where memory was always accessed byte-wise even if the AML- 17835 specified access width was larger than a byte. This caused 17836 problems on systems with memory-mapped I/O. Memory is now 17837 accessed with the width specified. On systems that do not support 17838 non-aligned transfers, a check is made to guarantee proper address 17839 alignment before proceeding in order to avoid an AML-caused 17840 alignment fault within the kernel. 17841 17842 17843 Fixed a problem with the ExtendedIrq resource where only one byte 17844 of the 4-byte Irq field was extracted. 17845 17846 Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 17847 function was out of date and required a rewrite. 17848 17849 Code and Data Size: Current core subsystem library sizes are shown 17850 below. These are the code and data sizes for the acpica.lib 17851 produced by the Microsoft Visual C++ 6.0 compiler, and these 17852 values do not include any ACPI driver or OSPM code. The debug 17853 version of the code includes the debug output trace mechanism and 17854 has a larger code and data size. Note that these values will vary 17855 depending on the efficiency of the compiler and the compiler 17856 options used during generation. 17857 17858 Previous Release 17859 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17860 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17861 Current Release: 17862 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 17863 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 17864 17865 17866 2) Linux 17867 17868 PCI IRQ routing fixes (Dominik Brodowski) 17869 17870 17871 3) iASL Compiler Version X2042: 17872 17873 Implemented an additional compile-time error check for a field 17874 unit whose size + minimum access width would cause a run-time 17875 access beyond the end-of-region. Previously, only the field size 17876 itself was checked. 17877 17878 The Core subsystem and iASL compiler now share a common parse 17879 object in preparation for compile-time evaluation of the type 17880 3/4/5 ASL operators. 17881 17882 17883 ---------------------------------------- 17884 Summary of changes for this release: 03_29_02 17885 17886 1) ACPI CA Core Subsystem Version 20020329: 17887 17888 Implemented support for late evaluation of TermArg operands to 17889 Buffer and Package objects. This allows complex expressions to be 17890 used in the declarations of these object types. 17891 17892 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 17893 1.0, if the field was larger than 32 bits, it was returned as a 17894 buffer - otherwise it was returned as an integer. In ACPI 2.0, 17895 the field is returned as a buffer only if the field is larger than 17896 64 bits. The TableRevision is now considered when making this 17897 conversion to avoid incompatibility with existing ASL code. 17898 17899 Implemented logical addressing for AcpiOsGetRootPointer. This 17900 allows an RSDP with either a logical or physical address. With 17901 this support, the host OS can now override all ACPI tables with 17902 one logical RSDP. Includes implementation of "typed" pointer 17903 support to allow a common data type for both physical and logical 17904 pointers internally. This required a change to the 17905 AcpiOsGetRootPointer interface. 17906 17907 Implemented the use of ACPI 2.0 Generic Address Structures for all 17908 GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 17909 mapped I/O for these ACPI features. 17910 17911 Initialization now ignores not only non-required tables (All 17912 tables other than the FADT, FACS, DSDT, and SSDTs), but also does 17913 not validate the table headers of unrecognized tables. 17914 17915 Fixed a problem where a notify handler could only be 17916 installed/removed on an object of type Device. All "notify" 17917 17918 objects are now supported -- Devices, Processor, Power, and 17919 Thermal. 17920 17921 Removed most verbosity from the ACPI_DB_INFO debug level. Only 17922 critical information is returned when this debug level is enabled. 17923 17924 Code and Data Size: Current core subsystem library sizes are shown 17925 below. These are the code and data sizes for the acpica.lib 17926 produced by the Microsoft Visual C++ 6.0 compiler, and these 17927 values do not include any ACPI driver or OSPM code. The debug 17928 version of the code includes the debug output trace mechanism and 17929 has a larger code and data size. Note that these values will vary 17930 depending on the efficiency of the compiler and the compiler 17931 options used during generation. 17932 17933 Previous Release 17934 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 17935 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 17936 Current Release: 17937 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 17938 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 17939 17940 17941 2) Linux: 17942 17943 The processor driver (acpi_processor.c) now fully supports ACPI 17944 2.0-based processor performance control (e.g. Intel(R) 17945 SpeedStep(TM) technology) Note that older laptops that only have 17946 the Intel "applet" interface are not supported through this. The 17947 'limit' and 'performance' interface (/proc) are fully functional. 17948 [Note that basic policy for controlling performance state 17949 transitions will be included in the next version of ospmd.] The 17950 idle handler was modified to more aggressively use C2, and PIIX4 17951 errata handling underwent a complete overhaul (big thanks to 17952 Dominik Brodowski). 17953 17954 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 17955 based devices in the ACPI namespace are now dynamically bound 17956 (associated) with their PCI counterparts (e.g. PCI1->01:00.0). 17957 This allows, among other things, ACPI to resolve bus numbers for 17958 subordinate PCI bridges. 17959 17960 Enhanced PCI IRQ routing to get the proper bus number for _PRT 17961 entries defined underneath PCI bridges. 17962 17963 Added IBM 600E to bad bios list due to invalid _ADR value for 17964 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 17965 17966 In the process of adding full MADT support (e.g. IOAPIC) for IA32 17967 (acpi.c, mpparse.c) -- stay tuned. 17968 17969 Added back visual differentiation between fixed-feature and 17970 control-method buttons in dmesg. Buttons are also subtyped (e.g. 17971 button/power/PWRF) to simplify button identification. 17972 17973 We no longer use -Wno-unused when compiling debug. Please ignore 17974 any "_THIS_MODULE defined but not used" messages. 17975 17976 Can now shut down the system using "magic sysrq" key. 17977 17978 17979 3) iASL Compiler version 2041: 17980 17981 Fixed a problem where conversion errors for hex/octal/decimal 17982 constants were not reported. 17983 17984 Implemented a fix for the General Register template Address field. 17985 This field was 8 bits when it should be 64. 17986 17987 Fixed a problem where errors/warnings were no longer being emitted 17988 within the listing output file. 17989 17990 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 17991 exactly 4 characters, alphanumeric only. 17992 17993 17994 17995 17996 ---------------------------------------- 17997 Summary of changes for this release: 03_08_02 17998 17999 18000 1) ACPI CA Core Subsystem Version 20020308: 18001 18002 Fixed a problem with AML Fields where the use of the "AccessAny" 18003 keyword could cause an interpreter error due to attempting to read 18004 or write beyond the end of the parent Operation Region. 18005 18006 Fixed a problem in the SystemMemory Operation Region handler where 18007 an attempt was made to map memory beyond the end of the region. 18008 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 18009 errors on some Linux systems. 18010 18011 Fixed a problem where the interpreter/namespace "search to root" 18012 algorithm was not functioning for some object types. Relaxed the 18013 internal restriction on the search to allow upsearches for all 18014 external object types as well as most internal types. 18015 18016 18017 2) Linux: 18018 18019 We now use safe_halt() macro versus individual calls to sti | hlt. 18020 18021 Writing to the processor limit interface should now work. "echo 1" 18022 will increase the limit, 2 will decrease, and 0 will reset to the 18023 18024 default. 18025 18026 18027 3) ASL compiler: 18028 18029 Fixed segfault on Linux version. 18030 18031 18032 ---------------------------------------- 18033 Summary of changes for this release: 02_25_02 18034 18035 1) ACPI CA Core Subsystem: 18036 18037 18038 Fixed a problem where the GPE bit masks were not initialized 18039 properly, causing erratic GPE behavior. 18040 18041 Implemented limited support for multiple calling conventions. The 18042 code can be generated with either the VPL (variable parameter 18043 list, or "C") convention, or the FPL (fixed parameter list, or 18044 "Pascal") convention. The core subsystem is about 3.4% smaller 18045 when generated with FPL. 18046 18047 18048 2) Linux 18049 18050 Re-add some /proc/acpi/event functionality that was lost during 18051 the rewrite 18052 18053 Resolved issue with /proc events for fixed-feature buttons showing 18054 up as the system device. 18055 18056 Fixed checks on C2/C3 latencies to be inclusive of maximum values. 18057 18058 Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 18059 18060 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 18061 18062 Fixed limit interface & usage to fix bugs with passive cooling 18063 hysterisis. 18064 18065 Restructured PRT support. 18066 18067 18068 ---------------------------------------- 18069 Summary of changes for this label: 02_14_02 18070 18071 18072 1) ACPI CA Core Subsystem: 18073 18074 Implemented support in AcpiLoadTable to allow loading of FACS and 18075 FADT tables. 18076 18077 Support for the now-obsolete interim 0.71 64-bit ACPI tables has 18078 been removed. All 64-bit platforms should be migrated to the ACPI 18079 2.0 tables. The actbl71.h header has been removed from the source 18080 tree. 18081 18082 All C macros defined within the subsystem have been prefixed with 18083 "ACPI_" to avoid collision with other system include files. 18084 18085 Removed the return value for the two AcpiOsPrint interfaces, since 18086 it is never used and causes lint warnings for ignoring the return 18087 value. 18088 18089 Added error checking to all internal mutex acquire and release 18090 calls. Although a failure from one of these interfaces is 18091 probably a fatal system error, these checks will cause the 18092 immediate abort of the currently executing method or interface. 18093 18094 Fixed a problem where the AcpiSetCurrentResources interface could 18095 fault. This was a side effect of the deployment of the new memory 18096 allocation model. 18097 18098 Fixed a couple of problems with the Global Lock support introduced 18099 in the last major build. The "common" (1.0/2.0) internal FACS was 18100 being overwritten with the FACS signature and clobbering the 18101 Global Lock pointer. Also, the actual firmware FACS was being 18102 unmapped after construction of the "common" FACS, preventing 18103 access to the actual Global Lock field within it. The "common" 18104 internal FACS is no longer installed as an actual ACPI table; it 18105 is used simply as a global. 18106 18107 Code and Data Size: Current core subsystem library sizes are shown 18108 below. These are the code and data sizes for the acpica.lib 18109 produced by the Microsoft Visual C++ 6.0 compiler, and these 18110 values do not include any ACPI driver or OSPM code. The debug 18111 version of the code includes the debug output trace mechanism and 18112 has a larger code and data size. Note that these values will vary 18113 depending on the efficiency of the compiler and the compiler 18114 options used during generation. 18115 18116 Previous Release (02_07_01) 18117 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18118 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18119 Current Release: 18120 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 18121 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 18122 18123 18124 2) Linux 18125 18126 Updated Linux-specific code for core macro and OSL interface 18127 changes described above. 18128 18129 Improved /proc/acpi/event. It now can be opened only once and has 18130 proper poll functionality. 18131 18132 Fixed and restructured power management (acpi_bus). 18133 18134 Only create /proc "view by type" when devices of that class exist. 18135 18136 Fixed "charging/discharging" bug (and others) in acpi_battery. 18137 18138 Improved thermal zone code. 18139 18140 18141 3) ASL Compiler, version X2039: 18142 18143 18144 Implemented the new compiler restriction on ASL String hex/octal 18145 escapes to non-null, ASCII values. An error results if an invalid 18146 value is used. (This will require an ACPI 2.0 specification 18147 change.) 18148 18149 AML object labels that are output to the optional C and ASM source 18150 are now prefixed with both the ACPI table signature and table ID 18151 to help guarantee uniqueness within a large BIOS project. 18152 18153 18154 ---------------------------------------- 18155 Summary of changes for this label: 02_01_02 18156 18157 1) ACPI CA Core Subsystem: 18158 18159 ACPI 2.0 support is complete in the entire Core Subsystem and the 18160 ASL compiler. All new ACPI 2.0 operators are implemented and all 18161 other changes for ACPI 2.0 support are complete. With 18162 simultaneous code and data optimizations throughout the subsystem, 18163 ACPI 2.0 support has been implemented with almost no additional 18164 cost in terms of code and data size. 18165 18166 Implemented a new mechanism for allocation of return buffers. If 18167 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 18168 be allocated on behalf of the caller. Consolidated all return 18169 buffer validation and allocation to a common procedure. Return 18170 buffers will be allocated via the primary OSL allocation interface 18171 since it appears that a separate pool is not needed by most users. 18172 If a separate pool is required for these buffers, the caller can 18173 still use the original mechanism and pre-allocate the buffer(s). 18174 18175 Implemented support for string operands within the DerefOf 18176 operator. 18177 18178 Restructured the Hardware and Event managers to be table driven, 18179 simplifying the source code and reducing the amount of generated 18180 code. 18181 18182 Split the common read/write low-level ACPI register bitfield 18183 procedure into a separate read and write, simplifying the code 18184 considerably. 18185 18186 Obsoleted the AcpiOsCallocate OSL interface. This interface was 18187 used only a handful of times and didn't have enough critical mass 18188 for a separate interface. Replaced with a common calloc procedure 18189 in the core. 18190 18191 Fixed a reported problem with the GPE number mapping mechanism 18192 that allows GPE1 numbers to be non-contiguous with GPE0. 18193 Reorganized the GPE information and shrunk a large array that was 18194 originally large enough to hold info for all possible GPEs (256) 18195 to simply large enough to hold all GPEs up to the largest GPE 18196 number on the machine. 18197 18198 Fixed a reported problem with resource structure alignment on 64- 18199 bit platforms. 18200 18201 Changed the AcpiEnableEvent and AcpiDisableEvent external 18202 interfaces to not require any flags for the common case of 18203 enabling/disabling a GPE. 18204 18205 Implemented support to allow a "Notify" on a Processor object. 18206 18207 Most TBDs in comments within the source code have been resolved 18208 and eliminated. 18209 18210 18211 Fixed a problem in the interpreter where a standalone parent 18212 prefix (^) was not handled correctly in the interpreter and 18213 debugger. 18214 18215 Removed obsolete and unnecessary GPE save/restore code. 18216 18217 Implemented Field support in the ASL Load operator. This allows a 18218 table to be loaded from a named field, in addition to loading a 18219 table directly from an Operation Region. 18220 18221 Implemented timeout and handle support in the external Global Lock 18222 interfaces. 18223 18224 Fixed a problem in the AcpiDump utility where pathnames were no 18225 longer being generated correctly during the dump of named objects. 18226 18227 Modified the AML debugger to give a full display of if/while 18228 predicates instead of just one AML opcode at a time. (The 18229 predicate can have several nested ASL statements.) The old method 18230 was confusing during single stepping. 18231 18232 Code and Data Size: Current core subsystem library sizes are shown 18233 below. These are the code and data sizes for the acpica.lib 18234 produced by the Microsoft Visual C++ 6.0 compiler, and these 18235 values do not include any ACPI driver or OSPM code. The debug 18236 version of the code includes the debug output trace mechanism and 18237 has a larger code and data size. Note that these values will vary 18238 depending on the efficiency of the compiler and the compiler 18239 options used during generation. 18240 18241 Previous Release (12_18_01) 18242 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18243 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18244 Current Release: 18245 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 18246 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 18247 18248 2) Linux 18249 18250 Implemented fix for PIIX reverse throttling errata (Processor 18251 driver) 18252 18253 Added new Limit interface (Processor and Thermal drivers) 18254 18255 New thermal policy (Thermal driver) 18256 18257 Many updates to /proc 18258 18259 Battery "low" event support (Battery driver) 18260 18261 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 18262 18263 IA32 - IA64 initialization unification, no longer experimental 18264 18265 Menuconfig options redesigned 18266 18267 3) ASL Compiler, version X2037: 18268 18269 Implemented several new output features to simplify integration of 18270 AML code into firmware: 1) Output the AML in C source code with 18271 labels for each named ASL object. The original ASL source code 18272 is interleaved as C comments. 2) Output the AML in ASM source code 18273 with labels and interleaved ASL source. 3) Output the AML in 18274 raw hex table form, in either C or ASM. 18275 18276 Implemented support for optional string parameters to the 18277 LoadTable operator. 18278 18279 Completed support for embedded escape sequences within string 18280 literals. The compiler now supports all single character escapes 18281 as well as the Octal and Hex escapes. Note: the insertion of a 18282 null byte into a string literal (via the hex/octal escape) causes 18283 the string to be immediately terminated. A warning is issued. 18284 18285 Fixed a problem where incorrect AML was generated for the case 18286 where an ASL namepath consists of a single parent prefix ( 18287 18288 ) with no trailing name segments. 18289 18290 The compiler has been successfully generated with a 64-bit C 18291 compiler. 18292 18293 18294 18295 18296 ---------------------------------------- 18297 Summary of changes for this label: 12_18_01 18298 18299 1) Linux 18300 18301 Enhanced blacklist with reason and severity fields. Any table's 18302 signature may now be used to identify a blacklisted system. 18303 18304 Call _PIC control method to inform the firmware which interrupt 18305 model the OS is using. Turn on any disabled link devices. 18306 18307 Cleaned up busmgr /proc error handling (Andreas Dilger) 18308 18309 2) ACPI CA Core Subsystem: 18310 18311 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 18312 while loop) 18313 18314 Completed implementation of the ACPI 2.0 "Continue", 18315 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 18316 operators. All new ACPI 2.0 operators are now implemented in both 18317 the ASL compiler and the AML interpreter. The only remaining ACPI 18318 2.0 task is support for the String data type in the DerefOf 18319 operator. Fixed a problem with AcquireMutex where the status code 18320 was lost if the caller had to actually wait for the mutex. 18321 18322 Increased the maximum ASL Field size from 64K bits to 4G bits. 18323 18324 Completed implementation of the external Global Lock interfaces -- 18325 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 18326 Handler parameters were added. 18327 18328 Completed another pass at removing warnings and issues when 18329 compiling with 64-bit compilers. The code now compiles cleanly 18330 with the Intel 64-bit C/C++ compiler. Most notably, the pointer 18331 add and subtract (diff) macros have changed considerably. 18332 18333 18334 Created and deployed a new ACPI_SIZE type that is 64-bits wide on 18335 64-bit platforms, 32-bits on all others. This type is used 18336 wherever memory allocation and/or the C sizeof() operator is used, 18337 and affects the OSL memory allocation interfaces AcpiOsAllocate 18338 and AcpiOsCallocate. 18339 18340 Implemented sticky user breakpoints in the AML debugger. 18341 18342 Code and Data Size: Current core subsystem library sizes are shown 18343 below. These are the code and data sizes for the acpica.lib 18344 produced by the Microsoft Visual C++ 6.0 compiler, and these 18345 values do not include any ACPI driver or OSPM code. The debug 18346 version of the code includes the debug output trace mechanism and 18347 has a larger code and data size. Note that these values will vary 18348 depending on the efficiency of the compiler and the compiler 18349 options used during generation. 18350 18351 Previous Release (12_05_01) 18352 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18353 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18354 Current Release: 18355 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 18356 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 18357 18358 3) ASL Compiler, version X2034: 18359 18360 Now checks for (and generates an error if detected) the use of a 18361 Break or Continue statement without an enclosing While statement. 18362 18363 18364 Successfully generated the compiler with the Intel 64-bit C 18365 compiler. 18366 18367 ---------------------------------------- 18368 Summary of changes for this label: 12_05_01 18369 18370 1) ACPI CA Core Subsystem: 18371 18372 The ACPI 2.0 CopyObject operator is fully implemented. This 18373 operator creates a new copy of an object (and is also used to 18374 bypass the "implicit conversion" mechanism of the Store operator.) 18375 18376 The ACPI 2.0 semantics for the SizeOf operator are fully 18377 implemented. The change is that performing a SizeOf on a 18378 reference object causes an automatic dereference of the object to 18379 the actual value before the size is evaluated. This behavior was 18380 undefined in ACPI 1.0. 18381 18382 The ACPI 2.0 semantics for the Extended IRQ resource descriptor 18383 have been implemented. The interrupt polarity and mode are now 18384 independently set. 18385 18386 Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 18387 appearing in Package objects were not properly converted to 18388 integers when the internal Package was converted to an external 18389 object (via the AcpiEvaluateObject interface.) 18390 18391 Fixed a problem with the namespace object deletion mechanism for 18392 objects created by control methods. There were two parts to this 18393 problem: 1) Objects created during the initialization phase method 18394 parse were not being deleted, and 2) The object owner ID mechanism 18395 to track objects was broken. 18396 18397 Fixed a problem where the use of the ASL Scope operator within a 18398 control method would result in an invalid opcode exception. 18399 18400 Fixed a problem introduced in the previous label where the buffer 18401 length required for the _PRT structure was not being returned 18402 correctly. 18403 18404 Code and Data Size: Current core subsystem library sizes are shown 18405 below. These are the code and data sizes for the acpica.lib 18406 produced by the Microsoft Visual C++ 6.0 compiler, and these 18407 values do not include any ACPI driver or OSPM code. The debug 18408 version of the code includes the debug output trace mechanism and 18409 has a larger code and data size. Note that these values will vary 18410 depending on the efficiency of the compiler and the compiler 18411 options used during generation. 18412 18413 Previous Release (11_20_01) 18414 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18415 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18416 18417 Current Release: 18418 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 18419 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 18420 18421 2) Linux: 18422 18423 Updated all files to apply cleanly against 2.4.16. 18424 18425 Added basic PCI Interrupt Routing Table (PRT) support for IA32 18426 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This 18427 version supports both static and dynamic PRT entries, but dynamic 18428 entries are treated as if they were static (not yet 18429 reconfigurable). Architecture- specific code to use this data is 18430 absent on IA32 but should be available shortly. 18431 18432 Changed the initialization sequence to start the ACPI interpreter 18433 (acpi_init) prior to initialization of the PCI driver (pci_init) 18434 in init/main.c. This ordering is required to support PRT and 18435 facilitate other (future) enhancement. A side effect is that the 18436 ACPI bus driver and certain device drivers can no longer be loaded 18437 as modules. 18438 18439 Modified the 'make menuconfig' options to allow PCI Interrupt 18440 Routing support to be included without the ACPI Bus and other 18441 device drivers. 18442 18443 3) ASL Compiler, version X2033: 18444 18445 Fixed some issues with the use of the new CopyObject and 18446 DataTableRegion operators. Both are fully functional. 18447 18448 ---------------------------------------- 18449 Summary of changes for this label: 11_20_01 18450 18451 20 November 2001. Summary of changes for this release. 18452 18453 1) ACPI CA Core Subsystem: 18454 18455 Updated Index support to match ACPI 2.0 semantics. Storing a 18456 Integer, String, or Buffer to an Index of a Buffer will store only 18457 the least-significant byte of the source to the Indexed buffer 18458 byte. Multiple writes are not performed. 18459 18460 Fixed a problem where the access type used in an AccessAs ASL 18461 operator was not recorded correctly into the field object. 18462 18463 Fixed a problem where ASL Event objects were created in a 18464 signalled state. Events are now created in an unsignalled state. 18465 18466 The internal object cache is now purged after table loading and 18467 initialization to reduce the use of dynamic kernel memory -- on 18468 the assumption that object use is greatest during the parse phase 18469 of the entire table (versus the run-time use of individual control 18470 methods.) 18471 18472 ACPI 2.0 variable-length packages are now fully operational. 18473 18474 Code and Data Size: Code and Data optimizations have permitted new 18475 feature development with an actual reduction in the library size. 18476 Current core subsystem library sizes are shown below. These are 18477 the code and data sizes for the acpica.lib produced by the 18478 Microsoft Visual C++ 6.0 compiler, and these values do not include 18479 any ACPI driver or OSPM code. The debug version of the code 18480 includes the debug output trace mechanism and has a larger code 18481 and data size. Note that these values will vary depending on the 18482 efficiency of the compiler and the compiler options used during 18483 generation. 18484 18485 Previous Release (11_09_01): 18486 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18487 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18488 18489 Current Release: 18490 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 18491 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 18492 18493 2) Linux: 18494 18495 Enhanced the ACPI boot-time initialization code to allow the use 18496 of Local APIC tables for processor enumeration on IA-32, and to 18497 pave the way for a fully MPS-free boot (on SMP systems) in the 18498 near future. This functionality replaces 18499 arch/i386/kernel/acpitables.c, which was introduced in an earlier 18500 2.4.15-preX release. To enable this feature you must add 18501 "acpi_boot=on" to the kernel command line -- see the help entry 18502 for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 18503 the works... 18504 18505 Restructured the configuration options to allow boot-time table 18506 parsing support without inclusion of the ACPI Interpreter (and 18507 other) code. 18508 18509 NOTE: This release does not include fixes for the reported events, 18510 power-down, and thermal passive cooling issues (coming soon). 18511 18512 3) ASL Compiler: 18513 18514 Added additional typechecking for Fields within restricted access 18515 Operation Regions. All fields within EC and CMOS regions must be 18516 declared with ByteAcc. All fields within SMBus regions must be 18517 declared with the BufferAcc access type. 18518 18519 Fixed a problem where the listing file output of control methods 18520 no longer interleaved the actual AML code with the ASL source 18521 code. 18522 18523 18524 18525 18526 ---------------------------------------- 18527 Summary of changes for this label: 11_09_01 18528 18529 1) ACPI CA Core Subsystem: 18530 18531 Implemented ACPI 2.0-defined support for writes to fields with a 18532 Buffer, String, or Integer source operand that is smaller than the 18533 target field. In these cases, the source operand is zero-extended 18534 to fill the target field. 18535 18536 Fixed a problem where a Field starting bit offset (within the 18537 parent operation region) was calculated incorrectly if the 18538 18539 alignment of the field differed from the access width. This 18540 affected CreateWordField, CreateDwordField, CreateQwordField, and 18541 possibly other fields that use the "AccessAny" keyword. 18542 18543 Fixed a problem introduced in the 11_02_01 release where indirect 18544 stores through method arguments did not operate correctly. 18545 18546 2) Linux: 18547 18548 Implemented boot-time ACPI table parsing support 18549 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 18550 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 18551 legacy BIOS interfaces (e.g. MPS) for the configuration of system 18552 processors, memory, and interrupts during setup_arch(). Note that 18553 this patch does not include the required architecture-specific 18554 changes required to apply this information -- subsequent patches 18555 will be posted for both IA32 and IA64 to achieve this. 18556 18557 Added low-level sleep support for IA32 platforms, courtesy of Pat 18558 Mochel. This allows IA32 systems to transition to/from various 18559 sleeping states (e.g. S1, S3), although the lack of a centralized 18560 driver model and power-manageable drivers will prevent its 18561 (successful) use on most systems. 18562 18563 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 18564 submenu, unified IA32 and IA64 options, added new "Boot using ACPI 18565 tables" option, etc. 18566 18567 Increased the default timeout for the EC driver from 1ms to 10ms 18568 (1000 cycles of 10us) to try to address AE_TIME errors during EC 18569 transactions. 18570 18571 ---------------------------------------- 18572 Summary of changes for this label: 11_02_01 18573 18574 1) ACPI CA Core Subsystem: 18575 18576 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 18577 (QWordAcc keyword). All ACPI 2.0 64-bit support is now 18578 implemented. 18579 18580 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 18581 changes to support ACPI 2.0 Qword field access. Read/Write 18582 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 18583 accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 18584 the value parameter for the address space handler interface is now 18585 an ACPI_INTEGER. OSL implementations of these interfaces must now 18586 handle the case where the Width parameter is 64. 18587 18588 Index Fields: Fixed a problem where unaligned bit assembly and 18589 disassembly for IndexFields was not supported correctly. 18590 18591 Index and Bank Fields: Nested Index and Bank Fields are now 18592 supported. During field access, a check is performed to ensure 18593 that the value written to an Index or Bank register is not out of 18594 the range of the register. The Index (or Bank) register is 18595 written before each access to the field data. Future support will 18596 include allowing individual IndexFields to be wider than the 18597 DataRegister width. 18598 18599 Fields: Fixed a problem where the AML interpreter was incorrectly 18600 attempting to write beyond the end of a Field/OpRegion. This was 18601 a boundary case that occurred when a DWORD field was written to a 18602 BYTE access OpRegion, forcing multiple writes and causing the 18603 interpreter to write one datum too many. 18604 18605 Fields: Fixed a problem with Field/OpRegion access where the 18606 starting bit address of a field was incorrectly calculated if the 18607 current access type was wider than a byte (WordAcc, DwordAcc, or 18608 QwordAcc). 18609 18610 Fields: Fixed a problem where forward references to individual 18611 FieldUnits (individual Field names within a Field definition) were 18612 not resolved during the AML table load. 18613 18614 Fields: Fixed a problem where forward references from a Field 18615 definition to the parent Operation Region definition were not 18616 resolved during the AML table load. 18617 18618 Fields: Duplicate FieldUnit names within a scope are now detected 18619 during AML table load. 18620 18621 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 18622 returned an incorrect name for the root node. 18623 18624 Code and Data Size: Code and Data optimizations have permitted new 18625 feature development with an actual reduction in the library size. 18626 Current core subsystem library sizes are shown below. These are 18627 the code and data sizes for the acpica.lib produced by the 18628 Microsoft Visual C++ 6.0 compiler, and these values do not include 18629 any ACPI driver or OSPM code. The debug version of the code 18630 includes the debug output trace mechanism and has a larger code 18631 and data size. Note that these values will vary depending on the 18632 efficiency of the compiler and the compiler options used during 18633 generation. 18634 18635 Previous Release (10_18_01): 18636 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18637 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18638 18639 Current Release: 18640 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 18641 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 18642 18643 2) Linux: 18644 18645 Improved /proc processor output (Pavel Machek) Re-added 18646 MODULE_LICENSE("GPL") to all modules. 18647 18648 3) ASL Compiler version X2030: 18649 18650 Duplicate FieldUnit names within a scope are now detected and 18651 flagged as errors. 18652 18653 4) Documentation: 18654 18655 Programmer Reference updated to reflect OSL and address space 18656 handler interface changes described above. 18657 18658 ---------------------------------------- 18659 Summary of changes for this label: 10_18_01 18660 18661 ACPI CA Core Subsystem: 18662 18663 Fixed a problem with the internal object reference count mechanism 18664 that occasionally caused premature object deletion. This resolves 18665 all of the outstanding problem reports where an object is deleted 18666 in the middle of an interpreter evaluation. Although this problem 18667 only showed up in rather obscure cases, the solution to the 18668 problem involved an adjustment of all reference counts involving 18669 objects attached to namespace nodes. 18670 18671 Fixed a problem with Field support in the interpreter where 18672 writing to an aligned field whose length is an exact multiple (2 18673 or greater) of the field access granularity would cause an attempt 18674 to write beyond the end of the field. 18675 18676 The top level AML opcode execution functions within the 18677 interpreter have been renamed with a more meaningful and 18678 consistent naming convention. The modules exmonad.c and 18679 exdyadic.c were eliminated. New modules are exoparg1.c, 18680 exoparg2.c, exoparg3.c, and exoparg6.c. 18681 18682 Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 18683 18684 Fixed a problem where the AML debugger was causing some internal 18685 objects to not be deleted during subsystem termination. 18686 18687 Fixed a problem with the external AcpiEvaluateObject interface 18688 where the subsystem would fault if the named object to be 18689 evaluated referred to a constant such as Zero, Ones, etc. 18690 18691 Fixed a problem with IndexFields and BankFields where the 18692 subsystem would fault if the index, data, or bank registers were 18693 not defined in the same scope as the field itself. 18694 18695 Added printf format string checking for compilers that support 18696 this feature. Corrected more than 50 instances of issues with 18697 format specifiers within invocations of ACPI_DEBUG_PRINT 18698 throughout the core subsystem code. 18699 18700 The ASL "Revision" operator now returns the ACPI support level 18701 implemented in the core - the value "2" since the ACPI 2.0 support 18702 is more than 50% implemented. 18703 18704 Enhanced the output of the AML debugger "dump namespace" command 18705 to output in a more human-readable form. 18706 18707 Current core subsystem library code sizes are shown below. These 18708 18709 are the code and data sizes for the acpica.lib produced by the 18710 Microsoft Visual C++ 6.0 compiler, and these values do not include 18711 any ACPI driver or OSPM code. The debug version of the code 18712 includes the full debug trace mechanism -- leading to a much 18713 18714 larger code and data size. Note that these values will vary 18715 depending on the efficiency of the compiler and the compiler 18716 options used during generation. 18717 18718 Previous Label (09_20_01): 18719 Non-Debug Version: 65K Code, 5K Data, 70K Total 18720 Debug Version: 138K Code, 58K Data, 196K Total 18721 18722 This Label: 18723 18724 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 18725 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 18726 18727 Linux: 18728 18729 Implemented a "Bad BIOS Blacklist" to track machines that have 18730 known ASL/AML problems. 18731 18732 Enhanced the /proc interface for the thermal zone driver and added 18733 support for _HOT (the critical suspend trip point). The 'info' 18734 file now includes threshold/policy information, and allows setting 18735 of _SCP (cooling preference) and _TZP (polling frequency) values 18736 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 18737 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 18738 preference to the passive/quiet mode (if supported by the ASL). 18739 18740 Implemented a workaround for a gcc bug that resuted in an OOPs 18741 when loading the control method battery driver. 18742 18743 ---------------------------------------- 18744 Summary of changes for this label: 09_20_01 18745 18746 ACPI CA Core Subsystem: 18747 18748 The AcpiEnableEvent and AcpiDisableEvent interfaces have been 18749 modified to allow individual GPE levels to be flagged as wake- 18750 enabled (i.e., these GPEs are to remain enabled when the platform 18751 sleeps.) 18752 18753 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 18754 support wake-enabled GPEs. This means that upon entering the 18755 sleep state, all GPEs that are not wake-enabled are disabled. 18756 When leaving the sleep state, these GPEs are re-enabled. 18757 18758 A local double-precision divide/modulo module has been added to 18759 enhance portability to OS kernels where a 64-bit math library is 18760 not available. The new module is "utmath.c". 18761 18762 Several optimizations have been made to reduce the use of CPU 18763 stack. Originally over 2K, the maximum stack usage is now below 18764 2K at 1860 bytes (1.82k) 18765 18766 Fixed a problem with the AcpiGetFirmwareTable interface where the 18767 root table pointer was not mapped into a logical address properly. 18768 18769 Fixed a problem where a NULL pointer was being dereferenced in the 18770 interpreter code for the ASL Notify operator. 18771 18772 Fixed a problem where the use of the ASL Revision operator 18773 returned an error. This operator now returns the current version 18774 of the ACPI CA core subsystem. 18775 18776 Fixed a problem where objects passed as control method parameters 18777 to AcpiEvaluateObject were always deleted at method termination. 18778 However, these objects may end up being stored into the namespace 18779 by the called method. The object reference count mechanism was 18780 applied to these objects instead of a force delete. 18781 18782 Fixed a problem where static strings or buffers (contained in the 18783 AML code) that are declared as package elements within the ASL 18784 code could cause a fault because the interpreter would attempt to 18785 delete them. These objects are now marked with the "static 18786 object" flag to prevent any attempt to delete them. 18787 18788 Implemented an interpreter optimization to use operands directly 18789 from the state object instead of extracting the operands to local 18790 variables. This reduces stack use and code size, and improves 18791 performance. 18792 18793 The module exxface.c was eliminated as it was an unnecessary extra 18794 layer of code. 18795 18796 Current core subsystem library code sizes are shown below. These 18797 are the code and data sizes for the acpica.lib produced by the 18798 Microsoft Visual C++ 6.0 compiler, and these values do not include 18799 any ACPI driver or OSPM code. The debug version of the code 18800 includes the full debug trace mechanism -- leading to a much 18801 larger code and data size. Note that these values will vary 18802 depending on the efficiency of the compiler and the compiler 18803 options used during generation. 18804 18805 Non-Debug Version: 65K Code, 5K Data, 70K Total 18806 (Previously 69K) Debug Version: 138K Code, 58K Data, 196K 18807 Total (Previously 195K) 18808 18809 Linux: 18810 18811 Support for ACPI 2.0 64-bit integers has been added. All ACPI 18812 Integer objects are now 64 bits wide 18813 18814 All Acpi data types and structures are now in lower case. Only 18815 Acpi macros are upper case for differentiation. 18816 18817 Documentation: 18818 18819 Changes to the external interfaces as described above. 18820 18821 ---------------------------------------- 18822 Summary of changes for this label: 08_31_01 18823 18824 ACPI CA Core Subsystem: 18825 18826 A bug with interpreter implementation of the ASL Divide operator 18827 was found and fixed. The implicit function return value (not the 18828 explicit store operands) was returning the remainder instead of 18829 the quotient. This was a longstanding bug and it fixes several 18830 known outstanding issues on various platforms. 18831 18832 The ACPI_DEBUG_PRINT and function trace entry/exit macros have 18833 been further optimized for size. There are 700 invocations of the 18834 DEBUG_PRINT macro alone, so each optimization reduces the size of 18835 the debug version of the subsystem significantly. 18836 18837 A stack trace mechanism has been implemented. The maximum stack 18838 usage is about 2K on 32-bit platforms. The debugger command "stat 18839 stack" will display the current maximum stack usage. 18840 18841 All public symbols and global variables within the subsystem are 18842 now prefixed with the string "Acpi". This keeps all of the 18843 symbols grouped together in a kernel map, and avoids conflicts 18844 with other kernel subsystems. 18845 18846 Most of the internal fixed lookup tables have been moved into the 18847 code segment via the const operator. 18848 18849 Several enhancements have been made to the interpreter to both 18850 reduce the code size and improve performance. 18851 18852 Current core subsystem library code sizes are shown below. These 18853 are the code and data sizes for the acpica.lib produced by the 18854 Microsoft Visual C++ 6.0 compiler, and these values do not include 18855 any ACPI driver or OSPM code. The debug version of the code 18856 includes the full debug trace mechanism which contains over 700 18857 invocations of the DEBUG_PRINT macro, 500 function entry macro 18858 invocations, and over 900 function exit macro invocations -- 18859 leading to a much larger code and data size. Note that these 18860 values will vary depending on the efficiency of the compiler and 18861 the compiler options used during generation. 18862 18863 Non-Debug Version: 64K Code, 5K Data, 69K Total 18864 Debug Version: 137K Code, 58K Data, 195K Total 18865 18866 Linux: 18867 18868 Implemented wbinvd() macro, pending a kernel-wide definition. 18869 18870 Fixed /proc/acpi/event to handle poll() and short reads. 18871 18872 ASL Compiler, version X2026: 18873 18874 Fixed a problem introduced in the previous label where the AML 18875 18876 code emitted for package objects produced packages with zero 18877 length. 18878 18879 ---------------------------------------- 18880 Summary of changes for this label: 08_16_01 18881 18882 ACPI CA Core Subsystem: 18883 18884 The following ACPI 2.0 ASL operators have been implemented in the 18885 AML interpreter (These are already supported by the Intel ASL 18886 compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 18887 ToBuffer. Support for 64-bit AML constants is implemented in the 18888 AML parser, debugger, and disassembler. 18889 18890 The internal memory tracking mechanism (leak detection code) has 18891 been upgraded to reduce the memory overhead (a separate tracking 18892 block is no longer allocated for each memory allocation), and now 18893 supports all of the internal object caches. 18894 18895 The data structures and code for the internal object caches have 18896 been coelesced and optimized so that there is a single cache and 18897 memory list data structure and a single group of functions that 18898 implement generic cache management. This has reduced the code 18899 size in both the debug and release versions of the subsystem. 18900 18901 The DEBUG_PRINT macro(s) have been optimized for size and replaced 18902 by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 18903 different, because it generates a single call to an internal 18904 function. This results in a savings of about 90 bytes per 18905 invocation, resulting in an overall code and data savings of about 18906 16% in the debug version of the subsystem. 18907 18908 Linux: 18909 18910 Fixed C3 disk corruption problems and re-enabled C3 on supporting 18911 machines. 18912 18913 Integrated low-level sleep code by Patrick Mochel. 18914 18915 Further tweaked source code Linuxization. 18916 18917 Other minor fixes. 18918 18919 ASL Compiler: 18920 18921 Support for ACPI 2.0 variable length packages is fixed/completed. 18922 18923 Fixed a problem where the optional length parameter for the ACPI 18924 2.0 ToString operator. 18925 18926 Fixed multiple extraneous error messages when a syntax error is 18927 detected within the declaration line of a control method. 18928 18929 ---------------------------------------- 18930 Summary of changes for this label: 07_17_01 18931 18932 ACPI CA Core Subsystem: 18933 18934 Added a new interface named AcpiGetFirmwareTable to obtain any 18935 ACPI table via the ACPI signature. The interface can be called at 18936 any time during kernel initialization, even before the kernel 18937 virtual memory manager is initialized and paging is enabled. This 18938 allows kernel subsystems to obtain ACPI tables very early, even 18939 before the ACPI CA subsystem is initialized. 18940 18941 Fixed a problem where Fields defined with the AnyAcc attribute 18942 could be resolved to the incorrect address under the following 18943 conditions: 1) the field width is larger than 8 bits and 2) the 18944 parent operation region is not defined on a DWORD boundary. 18945 18946 Fixed a problem where the interpreter is not being locked during 18947 namespace initialization (during execution of the _INI control 18948 methods), causing an error when an attempt is made to release it 18949 later. 18950 18951 ACPI 2.0 support in the AML Interpreter has begun and will be 18952 ongoing throughout the rest of this year. In this label, The Mod 18953 operator is implemented. 18954 18955 Added a new data type to contain full PCI addresses named 18956 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 18957 and Function values. 18958 18959 Linux: 18960 18961 Enhanced the Linux version of the source code to change most 18962 capitalized ACPI type names to lowercase. For example, all 18963 instances of ACPI_STATUS are changed to acpi_status. This will 18964 result in a large diff, but the change is strictly cosmetic and 18965 aligns the CA code closer to the Linux coding standard. 18966 18967 OSL Interfaces: 18968 18969 The interfaces to the PCI configuration space have been changed to 18970 add the PCI Segment number and to split the single 32-bit combined 18971 DeviceFunction field into two 16-bit fields. This was 18972 accomplished by moving the four values that define an address in 18973 PCI configuration space (segment, bus, device, and function) to 18974 the new ACPI_PCI_ID structure. 18975 18976 The changes to the PCI configuration space interfaces led to a 18977 reexamination of the complete set of address space access 18978 interfaces for PCI, I/O, and Memory. The previously existing 18 18979 interfaces have proven difficult to maintain (any small change 18980 must be propagated across at least 6 interfaces) and do not easily 18981 allow for future expansion to 64 bits if necessary. Also, on some 18982 systems, it would not be appropriate to demultiplex the access 18983 width (8, 16, 32,or 64) before calling the OSL if the 18984 corresponding native OS interfaces contain a similar access width 18985 parameter. For these reasons, the 18 address space interfaces 18986 have been replaced by these 6 new ones: 18987 18988 AcpiOsReadPciConfiguration 18989 AcpiOsWritePciConfiguration 18990 AcpiOsReadMemory 18991 AcpiOsWriteMemory 18992 AcpiOsReadPort 18993 AcpiOsWritePort 18994 18995 Added a new interface named AcpiOsGetRootPointer to allow the OSL 18996 to perform the platform and/or OS-specific actions necessary to 18997 obtain the ACPI RSDP table pointer. On IA-32 platforms, this 18998 interface will simply call down to the CA core to perform the low- 18999 memory search for the table. On IA-64, the RSDP is obtained from 19000 EFI. Migrating this interface to the OSL allows the CA core to 19001 19002 remain OS and platform independent. 19003 19004 Added a new interface named AcpiOsSignal to provide a generic 19005 "function code and pointer" interface for various miscellaneous 19006 signals and notifications that must be made to the host OS. The 19007 first such signals are intended to support the ASL Fatal and 19008 Breakpoint operators. In the latter case, the AcpiOsBreakpoint 19009 interface has been obsoleted. 19010 19011 The definition of the AcpiFormatException interface has been 19012 changed to simplify its use. The caller no longer must supply a 19013 buffer to the call; A pointer to a const string is now returned 19014 directly. This allows the call to be easily used in printf 19015 statements, etc. since the caller does not have to manage a local 19016 buffer. 19017 19018 19019 ASL Compiler, Version X2025: 19020 19021 The ACPI 2.0 Switch/Case/Default operators have been implemented 19022 and are fully functional. They will work with all ACPI 1.0 19023 interpreters, since the operators are simply translated to If/Else 19024 pairs. 19025 19026 The ACPI 2.0 ElseIf operator is implemented and will also work 19027 with 1.0 interpreters, for the same reason. 19028 19029 Implemented support for ACPI 2.0 variable-length packages. These 19030 packages have a separate opcode, and their size is determined by 19031 the interpreter at run-time. 19032 19033 Documentation The ACPI CA Programmer Reference has been updated to 19034 reflect the new interfaces and changes to existing interfaces. 19035 19036 ------------------------------------------ 19037 Summary of changes for this label: 06_15_01 19038 19039 ACPI CA Core Subsystem: 19040 19041 Fixed a problem where a DWORD-accessed field within a Buffer 19042 object would get its byte address inadvertently rounded down to 19043 the nearest DWORD. Buffers are always Byte-accessible. 19044 19045 ASL Compiler, version X2024: 19046 19047 Fixed a problem where the Switch() operator would either fault or 19048 hang the compiler. Note however, that the AML code for this ACPI 19049 2.0 operator is not yet implemented. 19050 19051 Compiler uses the new AcpiOsGetTimer interface to obtain compile 19052 timings. 19053 19054 Implementation of the CreateField operator automatically converts 19055 a reference to a named field within a resource descriptor from a 19056 byte offset to a bit offset if required. 19057 19058 Added some missing named fields from the resource descriptor 19059 support. These are the names that are automatically created by the 19060 compiler to reference fields within a descriptor. They are only 19061 valid at compile time and are not passed through to the AML 19062 interpreter. 19063 19064 Resource descriptor named fields are now typed as Integers and 19065 subject to compile-time typechecking when used in expressions. 19066 19067 ------------------------------------------ 19068 Summary of changes for this label: 05_18_01 19069 19070 ACPI CA Core Subsystem: 19071 19072 Fixed a couple of problems in the Field support code where bits 19073 from adjacent fields could be returned along with the proper field 19074 bits. Restructured the field support code to improve performance, 19075 readability and maintainability. 19076 19077 New DEBUG_PRINTP macro automatically inserts the procedure name 19078 into the output, saving hundreds of copies of procedure name 19079 strings within the source, shrinking the memory footprint of the 19080 debug version of the core subsystem. 19081 19082 Source Code Structure: 19083 19084 The source code directory tree was restructured to reflect the 19085 current organization of the component architecture. Some files 19086 and directories have been moved and/or renamed. 19087 19088 Linux: 19089 19090 Fixed leaking kacpidpc processes. 19091 19092 Fixed queueing event data even when /proc/acpi/event is not 19093 opened. 19094 19095 ASL Compiler, version X2020: 19096 19097 Memory allocation performance enhancement - over 24X compile time 19098 improvement on large ASL files. Parse nodes and namestring 19099 buffers are now allocated from a large internal compiler buffer. 19100 19101 The temporary .SRC file is deleted unless the "-s" option is 19102 specified 19103 19104 The "-d" debug output option now sends all output to the .DBG file 19105 instead of the console. 19106 19107 "External" second parameter is now optional 19108 19109 "ElseIf" syntax now properly allows the predicate 19110 19111 Last operand to "Load" now recognized as a Target operand 19112 19113 Debug object can now be used anywhere as a normal object. 19114 19115 ResourceTemplate now returns an object of type BUFFER 19116 19117 EISAID now returns an object of type INTEGER 19118 19119 "Index" now works with a STRING operand 19120 19121 "LoadTable" now accepts optional parameters 19122 19123 "ToString" length parameter is now optional 19124 19125 "Interrupt (ResourceType," parse error fixed. 19126 19127 "Register" with a user-defined region space parse error fixed 19128 19129 Escaped backslash at the end of a string ("\\") scan/parse error 19130 fixed 19131 19132 "Revision" is now an object of type INTEGER. 19133 19134 19135 19136 ------------------------------------------ 19137 Summary of changes for this label: 05_02_01 19138 19139 Linux: 19140 19141 /proc/acpi/event now blocks properly. 19142 19143 Removed /proc/sys/acpi. You can still dump your DSDT from 19144 /proc/acpi/dsdt. 19145 19146 ACPI CA Core Subsystem: 19147 19148 Fixed a problem introduced in the previous label where some of the 19149 "small" resource descriptor types were not recognized. 19150 19151 Improved error messages for the case where an ASL Field is outside 19152 the range of the parent operation region. 19153 19154 ASL Compiler, version X2018: 19155 19156 19157 Added error detection for ASL Fields that extend beyond the length 19158 of the parent operation region (only if the length of the region 19159 is known at compile time.) This includes fields that have a 19160 minimum access width that is smaller than the parent region, and 19161 individual field units that are partially or entirely beyond the 19162 extent of the parent. 19163 19164 19165 19166 ------------------------------------------ 19167 Summary of changes for this label: 04_27_01 19168 19169 ACPI CA Core Subsystem: 19170 19171 Fixed a problem where the namespace mutex could be released at the 19172 wrong time during execution of AcpiRemoveAddressSpaceHandler. 19173 19174 Added optional thread ID output for debug traces, to simplify 19175 debugging of multiple threads. Added context switch notification 19176 when the debug code realizes that a different thread is now 19177 executing ACPI code. 19178 19179 Some additional external data types have been prefixed with the 19180 string "ACPI_" for consistency. This may effect existing code. 19181 The data types affected are the external callback typedefs - e.g., 19182 19183 WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 19184 19185 Linux: 19186 19187 Fixed an issue with the OSL semaphore implementation where a 19188 thread was waking up with an error from receiving a SIGCHLD 19189 signal. 19190 19191 Linux version of ACPI CA now uses the system C library for string 19192 manipulation routines instead of a local implementation. 19193 19194 Cleaned up comments and removed TBDs. 19195 19196 ASL Compiler, version X2017: 19197 19198 Enhanced error detection and reporting for all file I/O 19199 operations. 19200 19201 Documentation: 19202 19203 Programmer Reference updated to version 1.06. 19204 19205 19206 19207 ------------------------------------------ 19208 Summary of changes for this label: 04_13_01 19209 19210 ACPI CA Core Subsystem: 19211 19212 Restructured support for BufferFields and RegionFields. 19213 BankFields support is now fully operational. All known 32-bit 19214 limitations on field sizes have been removed. Both BufferFields 19215 and (Operation) RegionFields are now supported by the same field 19216 management code. 19217 19218 Resource support now supports QWORD address and IO resources. The 19219 16/32/64 bit address structures and the Extended IRQ structure 19220 have been changed to properly handle Source Resource strings. 19221 19222 A ThreadId of -1 is now used to indicate a "mutex not acquired" 19223 condition internally and must never be returned by AcpiOsThreadId. 19224 This reserved value was changed from 0 since Unix systems allow a 19225 thread ID of 0. 19226 19227 Linux: 19228 19229 Driver code reorganized to enhance portability 19230 19231 Added a kernel configuration option to control ACPI_DEBUG 19232 19233 Fixed the EC driver to honor _GLK. 19234 19235 ASL Compiler, version X2016: 19236 19237 Fixed support for the "FixedHw" keyword. Previously, the FixedHw 19238 address space was set to 0, not 0x7f as it should be. 19239 19240 ------------------------------------------ 19241 Summary of changes for this label: 03_13_01 19242 19243 ACPI CA Core Subsystem: 19244 19245 During ACPI initialization, the _SB_._INI method is now run if 19246 present. 19247 19248 Notify handler fix - notifies are deferred until the parent method 19249 completes execution. This fixes the "mutex already acquired" 19250 issue seen occasionally. 19251 19252 Part of the "implicit conversion" rules in ACPI 2.0 have been 19253 found to cause compatibility problems with existing ASL/AML. The 19254 convert "result-to-target-type" implementation has been removed 19255 for stores to method Args and Locals. Source operand conversion 19256 is still fully implemented. Possible changes to ACPI 2.0 19257 specification pending. 19258 19259 Fix to AcpiRsCalculatePciRoutingTableLength to return correct 19260 length. 19261 19262 Fix for compiler warnings for 64-bit compiles. 19263 19264 Linux: 19265 19266 /proc output aligned for easier parsing. 19267 19268 Release-version compile problem fixed. 19269 19270 New kernel configuration options documented in Configure.help. 19271 19272 IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 19273 context" message. 19274 19275 OSPM: 19276 19277 Power resource driver integrated with bus manager. 19278 19279 Fixed kernel fault during active cooling for thermal zones. 19280 19281 Source Code: 19282 19283 The source code tree has been restructured. 19284 19285 19286 19287 ------------------------------------------ 19288 Summary of changes for this label: 03_02_01 19289 19290 Linux OS Services Layer (OSL): 19291 19292 Major revision of all Linux-specific code. 19293 19294 Modularized all ACPI-specific drivers. 19295 19296 Added new thermal zone and power resource drivers. 19297 19298 Revamped /proc interface (new functionality is under /proc/acpi). 19299 19300 New kernel configuration options. 19301 19302 Linux known issues: 19303 19304 New kernel configuration options not documented in Configure.help 19305 yet. 19306 19307 19308 Module dependencies not currently implemented. If used, they 19309 should be loaded in this order: busmgr, power, ec, system, 19310 processor, battery, ac_adapter, button, thermal. 19311 19312 Modules will not load if CONFIG_MODVERSION is set. 19313 19314 IBM 600E - entering S5 may reboot instead of shutting down. 19315 19316 IBM 600E - Sleep button may generate "Invalid <NULL> context" 19317 message. 19318 19319 Some systems may fail with "execution mutex already acquired" 19320 message. 19321 19322 ACPI CA Core Subsystem: 19323 19324 Added a new OSL Interface, AcpiOsGetThreadId. This was required 19325 for the deadlock detection code. Defined to return a non-zero, 32- 19326 bit thread ID for the currently executing thread. May be a non- 19327 zero constant integer on single-thread systems. 19328 19329 Implemented deadlock detection for internal subsystem mutexes. We 19330 may add conditional compilation for this code (debug only) later. 19331 19332 ASL/AML Mutex object semantics are now fully supported. This 19333 includes multiple acquires/releases by owner and support for the 19334 19335 Mutex SyncLevel parameter. 19336 19337 A new "Force Release" mechanism automatically frees all ASL 19338 Mutexes that have been acquired but not released when a thread 19339 exits the interpreter. This forces conformance to the ACPI spec 19340 ("All mutexes must be released when an invocation exits") and 19341 prevents deadlocked ASL threads. This mechanism can be expanded 19342 (later) to monitor other resource acquisitions if OEM ASL code 19343 continues to misbehave (which it will). 19344 19345 Several new ACPI exception codes have been added for the Mutex 19346 support. 19347 19348 Recursive method calls are now allowed and supported (the ACPI 19349 spec does in fact allow recursive method calls.) The number of 19350 recursive calls is subject to the restrictions imposed by the 19351 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 19352 parameter. 19353 19354 Implemented support for the SyncLevel parameter for control 19355 methods (ACPI 2.0 feature) 19356 19357 Fixed a deadlock problem when multiple threads attempted to use 19358 the interpreter. 19359 19360 Fixed a problem where the string length of a String package 19361 element was not always set in a package returned from 19362 AcpiEvaluateObject. 19363 19364 Fixed a problem where the length of a String package element was 19365 not always included in the length of the overall package returned 19366 from AcpiEvaluateObject. 19367 19368 Added external interfaces (Acpi*) to the ACPI debug memory 19369 manager. This manager keeps a list of all outstanding 19370 allocations, and can therefore detect memory leaks and attempts to 19371 free memory blocks more than once. Useful for code such as the 19372 power manager, etc. May not be appropriate for device drivers. 19373 Performance with the debug code enabled is slow. 19374 19375 The ACPI Global Lock is now an optional hardware element. 19376 19377 ASL Compiler Version X2015: 19378 19379 Integrated changes to allow the compiler to be generated on 19380 multiple platforms. 19381 19382 Linux makefile added to generate the compiler on Linux 19383 19384 Source Code: 19385 19386 All platform-specific headers have been moved to their own 19387 subdirectory, Include/Platform. 19388 19389 New source file added, Interpreter/ammutex.c 19390 19391 New header file, Include/acstruct.h 19392 19393 Documentation: 19394 19395 The programmer reference has been updated for the following new 19396 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 19397 19398 ------------------------------------------ 19399 Summary of changes for this label: 02_08_01 19400 19401 Core ACPI CA Subsystem: Fixed a problem where an error was 19402 incorrectly returned if the return resource buffer was larger than 19403 the actual data (in the resource interfaces). 19404 19405 References to named objects within packages are resolved to the 19406 19407 full pathname string before packages are returned directly (via 19408 the AcpiEvaluateObject interface) or indirectly via the resource 19409 interfaces. 19410 19411 Linux OS Services Layer (OSL): 19412 19413 Improved /proc battery interface. 19414 19415 19416 Added C-state debugging output and other miscellaneous fixes. 19417 19418 ASL Compiler Version X2014: 19419 19420 All defined method arguments can now be used as local variables, 19421 including the ones that are not actually passed in as parameters. 19422 The compiler tracks initialization of the arguments and issues an 19423 exception if they are used without prior assignment (just like 19424 locals). 19425 19426 The -o option now specifies a filename prefix that is used for all 19427 output files, including the AML output file. Otherwise, the 19428 default behavior is as follows: 1) the AML goes to the file 19429 specified in the DSDT. 2) all other output files use the input 19430 source filename as the base. 19431 19432 ------------------------------------------ 19433 Summary of changes for this label: 01_25_01 19434 19435 Core ACPI CA Subsystem: Restructured the implementation of object 19436 store support within the interpreter. This includes support for 19437 the Store operator as well as any ASL operators that include a 19438 target operand. 19439 19440 Partially implemented support for Implicit Result-to-Target 19441 conversion. This is when a result object is converted on the fly 19442 to the type of an existing target object. Completion of this 19443 support is pending further analysis of the ACPI specification 19444 concerning this matter. 19445 19446 CPU-specific code has been removed from the subsystem (hardware 19447 directory). 19448 19449 New Power Management Timer functions added 19450 19451 Linux OS Services Layer (OSL): Moved system state transition code 19452 to the core, fixed it, and modified Linux OSL accordingly. 19453 19454 Fixed C2 and C3 latency calculations. 19455 19456 19457 We no longer use the compilation date for the version message on 19458 initialization, but retrieve the version from AcpiGetSystemInfo(). 19459 19460 Incorporated for fix Sony VAIO machines. 19461 19462 Documentation: The Programmer Reference has been updated and 19463 reformatted. 19464 19465 19466 ASL Compiler: Version X2013: Fixed a problem where the line 19467 numbering and error reporting could get out of sync in the 19468 presence of multiple include files. 19469 19470 ------------------------------------------ 19471 Summary of changes for this label: 01_15_01 19472 19473 Core ACPI CA Subsystem: 19474 19475 Implemented support for type conversions in the execution of the 19476 ASL Concatenate operator (The second operand is converted to 19477 match the type of the first operand before concatenation.) 19478 19479 Support for implicit source operand conversion is partially 19480 implemented. The ASL source operand types Integer, Buffer, and 19481 String are freely interchangeable for most ASL operators and are 19482 converted by the interpreter on the fly as required. Implicit 19483 Target operand conversion (where the result is converted to the 19484 target type before storing) is not yet implemented. 19485 19486 Support for 32-bit and 64-bit BCD integers is implemented. 19487 19488 Problem fixed where a field read on an aligned field could cause a 19489 read past the end of the field. 19490 19491 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 19492 does not return a value, but the caller expects one. (The ASL 19493 compiler flags this as a warning.) 19494 19495 ASL Compiler: 19496 19497 Version X2011: 19498 1. Static typechecking of all operands is implemented. This 19499 prevents the use of invalid objects (such as using a Package where 19500 an Integer is required) at compile time instead of at interpreter 19501 run-time. 19502 2. The ASL source line is printed with ALL errors and warnings. 19503 3. Bug fix for source EOF without final linefeed. 19504 4. Debug option is split into a parse trace and a namespace trace. 19505 5. Namespace output option (-n) includes initial values for 19506 integers and strings. 19507 6. Parse-only option added for quick syntax checking. 19508 7. Compiler checks for duplicate ACPI name declarations 19509 19510 Version X2012: 19511 1. Relaxed typechecking to allow interchangeability between 19512 strings, integers, and buffers. These types are now converted by 19513 the interpreter at runtime. 19514 2. Compiler reports time taken by each internal subsystem in the 19515 debug output file. 19516 19517 19518 ------------------------------------------ 19519 Summary of changes for this label: 12_14_00 19520 19521 ASL Compiler: 19522 19523 This is the first official release of the compiler. Since the 19524 compiler requires elements of the Core Subsystem, this label 19525 synchronizes everything. 19526 19527 ------------------------------------------ 19528 Summary of changes for this label: 12_08_00 19529 19530 19531 Fixed a problem where named references within the ASL definition 19532 of both OperationRegions and CreateXXXFields did not work 19533 properly. The symptom was an AE_AML_OPERAND_TYPE during 19534 initialization of the region/field. This is similar (but not 19535 related internally) to the problem that was fixed in the last 19536 label. 19537 19538 Implemented both 32-bit and 64-bit support for the BCD ASL 19539 functions ToBCD and FromBCD. 19540 19541 Updated all legal headers to include "2000" in the copyright 19542 years. 19543 19544 ------------------------------------------ 19545 Summary of changes for this label: 12_01_00 19546 19547 Fixed a problem where method invocations within the ASL definition 19548 of both OperationRegions and CreateXXXFields did not work 19549 properly. The symptom was an AE_AML_OPERAND_TYPE during 19550 initialization of the region/field: 19551 19552 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 19553 [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 19554 (0x3005) 19555 19556 Fixed a problem where operators with more than one nested 19557 subexpression would fail. The symptoms were varied, by mostly 19558 AE_AML_OPERAND_TYPE errors. This was actually a rather serious 19559 problem that has gone unnoticed until now. 19560 19561 Subtract (Add (1,2), Multiply (3,4)) 19562 19563 Fixed a problem where AcpiGetHandle didn't quite get fixed in the 19564 previous build (The prefix part of a relative path was handled 19565 incorrectly). 19566 19567 Fixed a problem where Operation Region initialization failed if 19568 the operation region name was a "namepath" instead of a simple 19569 "nameseg". Symptom was an AE_NO_OPERAND error. 19570 19571 Fixed a problem where an assignment to a local variable via the 19572 indirect RefOf mechanism only worked for the first such 19573 assignment. Subsequent assignments were ignored. 19574 19575 ------------------------------------------ 19576 Summary of changes for this label: 11_15_00 19577 19578 ACPI 2.0 table support with backwards support for ACPI 1.0 and the 19579 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 19580 the AML interpreter does NOT have support for the new 2.0 ASL 19581 grammar terms at this time. 19582 19583 All ACPI hardware access is via the GAS structures in the ACPI 2.0 19584 FADT. 19585 19586 All physical memory addresses across all platforms are now 64 bits 19587 wide. Logical address width remains dependent on the platform 19588 (i.e., "void *"). 19589 19590 AcpiOsMapMemory interface changed to a 64-bit physical address. 19591 19592 The AML interpreter integer size is now 64 bits, as per the ACPI 19593 2.0 specification. 19594 19595 For backwards compatibility with ACPI 1.0, ACPI tables with a 19596 revision number less than 2 use 32-bit integers only. 19597 19598 Fixed a problem where the evaluation of OpRegion operands did not 19599 always resolve them to numbers properly. 19600 19601 ------------------------------------------ 19602 Summary of changes for this label: 10_20_00 19603 19604 Fix for CBN_._STA issue. This fix will allow correct access to 19605 CBN_ OpRegions when the _STA returns 0x8. 19606 19607 Support to convert ACPI constants (Ones, Zeros, One) to actual 19608 values before a package object is returned 19609 19610 Fix for method call as predicate to if/while construct causing 19611 incorrect if/while behavior 19612 19613 Fix for Else block package lengths sometimes calculated wrong (if 19614 block > 63 bytes) 19615 19616 Fix for Processor object length field, was always zero 19617 19618 Table load abort if FACP sanity check fails 19619 19620 Fix for problem with Scope(name) if name already exists 19621 19622 Warning emitted if a named object referenced cannot be found 19623 (resolved) during method execution. 19624 19625 19626 19627 19628 19629 ------------------------------------------ 19630 Summary of changes for this label: 9_29_00 19631 19632 New table initialization interfaces: AcpiInitializeSubsystem no 19633 longer has any parameters AcpiFindRootPointer - Find the RSDP (if 19634 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 19635 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 19636 AcpiLoadTables 19637 19638 Note: These interface changes require changes to all existing OSDs 19639 19640 The PCI_Config default address space handler is always installed 19641 at the root namespace object. 19642 19643 ------------------------------------------- 19644 Summary of changes for this label: 09_15_00 19645 19646 The new initialization architecture is implemented. New 19647 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 19648 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 19649 19650 (Namespace is automatically loaded when a table is loaded) 19651 19652 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 19653 52 bytes to 32 bytes. There is usually one of these for every 19654 namespace object, so the memory savings is significant. 19655 19656 Implemented just-in-time evaluation of the CreateField operators. 19657 19658 Bug fixes for IA-64 support have been integrated. 19659 19660 Additional code review comments have been implemented 19661 19662 The so-called "third pass parse" has been replaced by a final walk 19663 through the namespace to initialize all operation regions (address 19664 spaces) and fields that have not yet been initialized during the 19665 execution of the various _INI and REG methods. 19666 19667 New file - namespace/nsinit.c 19668 19669 ------------------------------------------- 19670 Summary of changes for this label: 09_01_00 19671 19672 Namespace manager data structures have been reworked to change the 19673 primary object from a table to a single object. This has 19674 resulted in dynamic memory savings of 3X within the namespace and 19675 2X overall in the ACPI CA subsystem. 19676 19677 Fixed problem where the call to AcpiEvFindPciRootBuses was 19678 inadvertently left commented out. 19679 19680 Reduced the warning count when generating the source with the GCC 19681 compiler. 19682 19683 Revision numbers added to each module header showing the 19684 SourceSafe version of the file. Please refer to this version 19685 number when giving us feedback or comments on individual modules. 19686 19687 The main object types within the subsystem have been renamed to 19688 clarify their purpose: 19689 19690 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 19691 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 19692 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 19693 19694 NOTE: no changes to the initialization sequence are included in 19695 this label. 19696 19697 ------------------------------------------- 19698 Summary of changes for this label: 08_23_00 19699 19700 Fixed problem where TerminateControlMethod was being called 19701 multiple times per method 19702 19703 Fixed debugger problem where single stepping caused a semaphore to 19704 be oversignalled 19705 19706 Improved performance through additional parse object caching - 19707 added ACPI_EXTENDED_OP type 19708 19709 ------------------------------------------- 19710 Summary of changes for this label: 08_10_00 19711 19712 Parser/Interpreter integration: Eliminated the creation of 19713 complete parse trees for ACPI tables and control methods. 19714 Instead, parse subtrees are created and then deleted as soon as 19715 they are processed (Either entered into the namespace or executed 19716 by the interpreter). This reduces the use of dynamic kernel 19717 memory significantly. (about 10X) 19718 19719 Exception codes broken into classes and renumbered. Be sure to 19720 recompile all code that includes acexcep.h. Hopefully we won't 19721 have to renumber the codes again now that they are split into 19722 classes (environment, programmer, AML code, ACPI table, and 19723 internal). 19724 19725 Fixed some additional alignment issues in the Resource Manager 19726 subcomponent 19727 19728 Implemented semaphore tracking in the AcpiExec utility, and fixed 19729 several places where mutexes/semaphores were being unlocked 19730 without a corresponding lock operation. There are no known 19731 semaphore or mutex "leaks" at this time. 19732 19733 Fixed the case where an ASL Return operator is used to return an 19734 unnamed package. 19735 19736 ------------------------------------------- 19737 Summary of changes for this label: 07_28_00 19738 19739 Fixed a problem with the way addresses were calculated in 19740 AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 19741 manifested itself when a Field was created with WordAccess or 19742 DwordAccess, but the field unit defined within the Field was less 19743 19744 than a Word or Dword. 19745 19746 Fixed a problem in AmlDumpOperands() module's loop to pull 19747 operands off of the operand stack to display information. The 19748 problem manifested itself as a TLB error on 64-bit systems when 19749 accessing an operand stack with two or more operands. 19750 19751 Fixed a problem with the PCI configuration space handlers where 19752 context was getting confused between accesses. This required a 19753 change to the generic address space handler and address space 19754 setup definitions. Handlers now get both a global handler context 19755 (this is the one passed in by the user when executing 19756 AcpiInstallAddressSpaceHandler() and a specific region context 19757 that is unique to each region (For example, the _ADR, _SEG and 19758 _BBN values associated with a specific region). The generic 19759 function definitions have changed to the following: 19760 19761 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 19762 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 19763 *HandlerContext, // This used to be void *Context void 19764 *RegionContext); // This is an additional parameter 19765 19766 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 19767 RegionHandle, UINT32 Function, void *HandlerContext, void 19768 **RegionContext); // This used to be **ReturnContext 19769 19770 ------------------------------------------- 19771 Summary of changes for this label: 07_21_00 19772 19773 Major file consolidation and rename. All files within the 19774 interpreter have been renamed as well as most header files. This 19775 was done to prevent collisions with existing files in the host 19776 OSs -- filenames such as "config.h" and "global.h" seem to be 19777 quite common. The VC project files have been updated. All 19778 makefiles will require modification. 19779 19780 The parser/interpreter integration continues in Phase 5 with the 19781 implementation of a complete 2-pass parse (the AML is parsed 19782 twice) for each table; This avoids the construction of a huge 19783 parse tree and therefore reduces the amount of dynamic memory 19784 required by the subsystem. Greater use of the parse object cache 19785 means that performance is unaffected. 19786 19787 Many comments from the two code reviews have been rolled in. 19788 19789 The 64-bit alignment support is complete. 19790 19791 ------------------------------------------- 19792 Summary of changes for this label: 06_30_00 19793 19794 With a nod and a tip of the hat to the technology of yesteryear, 19795 we've added support in the source code for 80 column output 19796 devices. The code is now mostly constrained to 80 columns or 19797 less to support environments and editors that 1) cannot display 19798 or print more than 80 characters on a single line, and 2) cannot 19799 disable line wrapping. 19800 19801 A major restructuring of the namespace data structure has been 19802 completed. The result is 1) cleaner and more 19803 understandable/maintainable code, and 2) a significant reduction 19804 in the dynamic memory requirement for each named ACPI object 19805 (almost half). 19806 19807 ------------------------------------------- 19808 Summary of changes for this label: 06_23_00 19809 19810 Linux support has been added. In order to obtain approval to get 19811 the ACPI CA subsystem into the Linux kernel, we've had to make 19812 quite a few changes to the base subsystem that will affect all 19813 users (all the changes are generic and OS- independent). The 19814 effects of these global changes have been somewhat far reaching. 19815 Files have been merged and/or renamed and interfaces have been 19816 renamed. The major changes are described below. 19817 19818 Osd* interfaces renamed to AcpiOs* to eliminate namespace 19819 pollution/confusion within our target kernels. All OSD 19820 interfaces must be modified to match the new naming convention. 19821 19822 Files merged across the subsystem. A number of the smaller source 19823 and header files have been merged to reduce the file count and 19824 increase the density of the existing files. There are too many 19825 to list here. In general, makefiles that call out individual 19826 files will require rebuilding. 19827 19828 Interpreter files renamed. All interpreter files now have the 19829 prefix am* instead of ie* and is*. 19830 19831 Header files renamed: The acapi.h file is now acpixf.h. The 19832 acpiosd.h file is now acpiosxf.h. We are removing references to 19833 the acronym "API" since it is somewhat windowsy. The new name is 19834 "external interface" or xface or xf in the filenames.j 19835 19836 19837 All manifest constants have been forced to upper case (some were 19838 mixed case.) Also, the string "ACPI_" has been prepended to many 19839 (not all) of the constants, typedefs, and structs. 19840 19841 The globals "DebugLevel" and "DebugLayer" have been renamed 19842 "AcpiDbgLevel" and "AcpiDbgLayer" respectively. 19843 19844 All other globals within the subsystem are now prefixed with 19845 "AcpiGbl_" Internal procedures within the subsystem are now 19846 prefixed with "Acpi" (with only a few exceptions). The original 19847 two-letter abbreviation for the subcomponent remains after "Acpi" 19848 - for example, CmCallocate became AcpiCmCallocate. 19849 19850 Added a source code translation/conversion utility. Used to 19851 generate the Linux source code, it can be modified to generate 19852 other types of source as well. Can also be used to cleanup 19853 existing source by removing extraneous spaces and blank lines. 19854 Found in tools/acpisrc/* 19855 19856 OsdUnMapMemory was renamed to OsdUnmapMemory and then 19857 AcpiOsUnmapMemory. (UnMap became Unmap). 19858 19859 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 19860 When set to one, this indicates that the caller wants to use the 19861 19862 semaphore as a mutex, not a counting semaphore. ACPI CA uses 19863 both types. However, implementers of this call may want to use 19864 different OS primitives depending on the type of semaphore 19865 requested. For example, some operating systems provide separate 19866 19867 "mutex" and "semaphore" interfaces - where the mutex interface is 19868 much faster because it doesn't have all the overhead of a full 19869 semaphore implementation. 19870 19871 Fixed a deadlock problem where a method that accesses the PCI 19872 address space can block forever if it is the first access to the 19873 space. 19874 19875 ------------------------------------------- 19876 Summary of changes for this label: 06_02_00 19877 19878 Support for environments that cannot handle unaligned data 19879 accesses (e.g. firmware and OS environments devoid of alignment 19880 handler technology namely SAL/EFI and the IA-64 Linux kernel) has 19881 been added (via configurable macros) in these three areas: - 19882 Transfer of data from the raw AML byte stream is done via byte 19883 moves instead of word/dword/qword moves. - External objects are 19884 aligned within the user buffer, including package elements (sub- 19885 objects). - Conversion of name strings to UINT32 Acpi Names is now 19886 done byte-wise. 19887 19888 The Store operator was modified to mimic Microsoft's 19889 implementation when storing to a Buffer Field. 19890 19891 Added a check of the BM_STS bit before entering C3. 19892 19893 The methods subdirectory has been obsoleted and removed. A new 19894 file, cmeval.c subsumes the functionality. 19895 19896 A 16-bit (DOS) version of AcpiExec has been developed. The 19897 makefile is under the acpiexec directory. 19898