1---------------------------------------- 213 December 2019. Summary of changes for version 20191213: 3 4 51) ACPICA kernel-resident subsystem: 6 7Return a Buffer object for all fields created via the CreateField operator. Previously, an Integer would be returned if the size of the field was less than or equal to the current size of an Integer. Although this goes against the ACPI specification, it provides compatibility with other ACPI implementations. Also updated the ASLTS test suite to reflect this new behavior. 8 92) iASL Compiler/Disassembler and ACPICA tools: 10 11iASL: Implemented detection of (and throw an error for) duplicate values for Case statements within a single Switch statement. Duplicate Integers, Strings, and Buffers are supported. 12 13iASL: Fix error logging issue during multiple file compilation -- Switch to the correct input file during error node creation. 14 15iASL: For duplicate named object creation, now emit an error instead of a warning - since this will cause a runtime error. 16 17AcpiSrc: Add unix line-ending support for non-Windows builds. 18 19iASL: Add an error condition for an attempt to create a NameString with > 255 NameSegs (the max allowable via the AML definition). 20 21 22---------------------------------------- 2318 October 2019. Summary of changes for version 20191018: 24 25 261) ACPICA kernel-resident subsystem: 27 28Debugger: added a new command: ?Fields [address space ID]?. This command 29dumps the contents of all field units that are defined within the 30namespace with a particular address space ID. 31 32Modified the external interface AcpiLoadTable() to return a table index. 33This table index can be used for unloading a table for debugging. 34 ACPI_STATUS 35 AcpiLoadTable ( 36 ACPI_TABLE_HEADER *Table, 37 UINT32 *TableIndex)) 38 39Implemented a new external interface: AcpiUnloadTable() This new function 40takes a table index as an argument and unloads the table. Useful for 41debugging only. 42 ACPI_STATUS 43 AcpiUnloadTable ( 44 UINT32 TableIndex)) 45 46Ported the AcpiNames utility to use the new table initialization 47sequence. The utility was broken before this change. Also, it was 48required to include most of the AML interpreter into the utility in order 49to process table initialization (module-level code execution.) 50 51Update for results from running Clang V8.0.1. This fixes all "dead 52assignment" warnings. There are still several "Dereference of NULL 53pointer" warnings, but these have been found to be false positive 54warnings. 55 56 572) iASL Compiler/Disassembler and ACPICA tools: 58 59iASL: numerous table compiler changes to ensure that the usage of 60yacc/bison syntax is POSIX-compliant. 61 62iASL/disassembler: several simple bug fixes in the data table 63disassembler. 64 65Acpiexec: expanded the initialization file (the -fi option) to initialize 66strings, buffers, packages, and field units. 67 68 69---------------------------------------- 7016 August 2019. Summary of changes for version 20190816: 71 72This release is available at https://acpica.org/downloads 73 74 751) ACPICA kernel-resident subsystem: 76 77Modified the OwnerId mechanism to allow for more Owner Ids. The previous 78limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT 79exceptions on machines with a large number of initialization threads, 80many CPU cores and nested initialization control methods. 81 82Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for 83checking if the given GPE (as represented by a GPE device handle and a 84GPE number) is currently active and dispatching it (if that's the case) 85outside of interrupt context. 86 87Table load: exit the interpreter before initializing objects within the 88new table This prevents re-acquiring the interpreter lock when loading 89tables 90 91Added the "Windows 2019" string to the _OSI support (version 1903). Jung- 92uk Kim 93 94Macros: removed pointer math on a null pointer. Causes warnings on some 95compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR 96instead of using arithmetic. 97 98Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used 99across all "printf-like" internal functions. Also, cleanup all calls to 100such functions (both in 32-bit mode and 64-bit mode) now that they are 101analyzed by the gcc compiler via ACPI_PRINTF_LIKE. 102 103 1042) iASL Compiler/Disassembler and ACPICA tools: 105 106iASL: implemented a new data table compiler flex/bison front-end. This 107change is internal and is not intended to result in changes to the 108compiled code. This new compiler front-end can be invoked using the -tp 109option for now, until the old mechanism is removed. 110 111ASLTS: Implemented a new data table compiler test suite. This test suite 112generates all table templates and compile/disassemble/re-compile/binary- 113compare each file. 114 115iASL: return -1 if AML files were not generated due to compiler errors 116 117iASL: added a warning on use of the now-legacy ASL Processor () keyword. 118 119iASL: added an error on _UID object declaration that returns a String 120within a Processor () declaration. A _UID for a processor must be an 121Integer. 122 123iASL: added a null terminator to name strings that consist only of 124multiple parent prefixes (^) 125 126iASL: added support to compile both ASL and data table files in a single 127command. 128 129Updated the tool generation project files that were recently migrated to 130MSVC 2017 to eliminate all new warnings. The new project files appear in 131the directory \acpica\generate\msvc2017. This change effectively 132deprecates the older project files in \acpica\generate\msvc9. 133 134 135---------------------------------------- 13603 July 2019. Summary of changes for version 20190703: 137 138 1391) ACPICA kernel-resident subsystem: 140 141Remove legacy module-level support code. There were still some remnants 142of the legacy module-level code executions. Since we no longer support 143this option, this is essentially dead code and has been removed from the 144ACPICA source. 145 146iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 147scope. If these named objects are declared outside the root scope, they 148will not be invoked by any host Operating System. 149 150Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 151one) can be enabled in two situations. First, the GPEs with existing _Lxx 152and _Exx methods are enabled implicitly by ACPICA during system 153initialization. Second, the GPEs without these methods (like GPEs listed 154by _PRW objects for wakeup devices) need to be enabled directly by the 155code that is going to use them (e.g. ACPI power management or device 156drivers). 157 158In the former case, if the status of a given GPE is set to start with, 159its handler method (either _Lxx or _Exx) needs to be invoked to take care 160of the events (possibly) signaled before the GPE was enabled. In the 161latter case, however, the first caller of AcpiEnableGpe() for a given GPE 162should not be expected to care about any events that might be signaled 163through it earlier. In that case, it is better to clear the status of 164the GPE before enabling it, to prevent stale events from triggering 165unwanted actions (like spurious system resume, for example). 166 167For this reason, modify AcpiEvAddGpeReference() to take an additional 168boolean argument indicating whether or not the GPE status needs to be 169cleared when its reference counter changes from zero to one and make 170AcpiEnableGpe() pass TRUE to it through that new argument. 171 172 1732) iASL Compiler/Disassembler and ACPICA tools: 174 175The tool generation process has been migrated to MSVC 2017, and all 176project files have been upgraded. The new project files appear in the 177directory \acpica\generate\msvc2017. This change effectively deprecates 178the older project files in \acpica\generate\msvc9. 179 180iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 181scope. If these named objects are declared outside the root scope, they 182will not be invoked by any host Operating System 183 184---------------------------------------- 18509 May 2019. Summary of changes for version 20190509: 186 187 1881) ACPICA kernel-resident subsystem: 189 190Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 191them") that causes problems with Thunderbolt controllers to occur if a 192dock device is connected at init time (the xhci_hcd and thunderbolt 193modules crash which prevents peripherals connected through them from 194working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 195Dispatch active GPEs at init time") to get undone, so the problem 196addressed by commit ecc1165b8b74 appears again as a result of it. 197 198 1992) iASL Compiler/Disassembler and ACPICA tools: 200 201Reverted iASL: Additional forward reference detection. This change 202reverts forward reference detection for field declarations. The feature 203unintentionally emitted AML bytecode with incorrect package lengths for 204some ASL code related to Fields and OperationRegions. This malformed AML 205can cause systems to crash 206during boot. The malformed AML bytecode is emitted in iASL version 20720190329 and 20190405. 208 209iASL: improve forward reference detection. This change improves forward 210reference detection for named objects inside of scopes. If a parse object 211has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 212a named object that is declared later in the AML bytecode. This is 213allowed if the reference is inside of a method and the declaration is 214outside of a method like so: 215 216DefinitionBlock(...) 217{ 218 Method (TEST) 219 { 220 Return (NUM0) 221 } 222 Name (NUM0,0) 223} 224 225However, if the declaration and reference are both in the same method or 226outside any methods, this is a forward reference and should be marked as 227an error because it would result in runtime errors. 228 229DefinitionBlock(...) 230{ 231 Name (BUFF, Buffer (NUM0) {}) // Forward reference 232 Name (NUM0, 0x0) 233 234 Method (TEST) 235 { 236 Local0 = NUM1 237 Name (NUM1, 0x1) // Forward reference 238 return (Local0) 239 } 240} 241 242iASL: Implemented additional buffer overflow analysis for BufferField 243declarations. Check if a buffer index argument to a create buffer field 244operation is beyond the end of the target buffer. 245 246This affects these AML operators: 247 248 AML_CREATE_FIELD_OP 249 AML_CREATE_BIT_FIELD_OP 250 AML_CREATE_BYTE_FIELD_OP 251 AML_CREATE_WORD_FIELD_OP 252 AML_CREATE_DWORD_FIELD_OP 253 AML_CREATE_QWORD_FIELD_OP 254 255 There are three conditions that must be satisfied in order to allow this 256validation at compile time: 257 258 1) The length of the target buffer must be an integer constant 259 2) The index specified in the create* must be an integer constant 260 3) For CreateField, the bit length argument must be non-zero. 261 262Example: 263 Name (BUF1, Buffer() {1,2}) 264 CreateField (BUF1, 7, 9, CF03) // 3: ERR 265 266dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 267Error 6165 - ^ Buffer index beyond end of 268target buffer 269 270 271---------------------------------------- 27205 April 2019. Summary of changes for version 20190405: 273 274 2751) ACPICA kernel-resident subsystem: 276 277Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 278unconditionally clearing ACPI IRQs during suspend/resume") was added 279earlier to stop clearing of event status bits unconditionally on suspend 280and resume paths. Though this change fixed an issue on suspend path, it 281introduced regressions on several resume paths. In the case of S0ix, 282events are enabled as part of device suspend path. If status bits for the 283events are set when they are enabled, it could result in premature wake 284from S0ix. If status is cleared for any event that is being enabled so 285that any stale events are cleared out. In case of S0ix, events are 286enabled as part of device suspend path. If status bits for the events are 287set when they are enabled, it could result in premature wake from S0ix. 288 289This change ensures that status is cleared for any event that is being 290enabled so that any stale events are cleared out. 291 292 2932) iASL Compiler/Disassembler and ACPICA tools: 294 295iASL: Implemented an enhanced multiple file compilation that combines 296named objects from all input files to a single namespace. With this 297feature, any unresolved external declarations as well as duplicate named 298object declarations can be detected during compilation rather than 299generating errors much later at runtime. The following commands are 300examples that utilize this feature: 301 iasl dsdt.asl ssdt.asl 302 iasl dsdt.asl ssdt1.asl ssdt2.asl 303 iasl dsdt.asl ssdt*.asl 304 305---------------------------------------- 30629 March 2019. Summary of changes for version 20190329: 307 308 3091) ACPICA kernel-resident subsystem: 310 311Namespace support: Remove the address nodes from global list after method 312termination. The global address list contains pointers to namespace nodes 313that represent Operation Regions. This change properly removes Operation 314Region namespace nodes that are declared dynamically during method 315execution. 316 317Linux: Use a different debug default than ACPICA. There was a divergence 318between Linux and the ACPICA codebases. In order to resolve this 319divergence, Linux now declares its own debug default in aclinux.h 320 321Renamed some internal macros to improve code understanding and 322maintenance. The macros below all operate on single 4-character ACPI 323NameSegs, not generic strings (old -> new): 324 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 325 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 326 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 327 328Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 329table. 330 331Test suite: Update makefiles, add PCC operation region support 332 333 3342) iASL Compiler/Disassembler and Tools: 335 336iASL: Implemented additional illegal forward reference detection. Now 337detect and emit an error upon detection of a forward reference from a 338Field to an Operation Region. This will fail at runtime if allowed to 339pass the compiler. 340 341AcpiExec: Add an address list check for dynamic Operation Regions. This 342feature performs a sanity test for each node the global address list. 343This is done in order to ensure that all dynamic operation regions are 344properly removed from the global address list and no dangling pointers 345are left behind. 346 347Disassembler: Improved generation of resource pathnames. This change 348improves the code that generates resource descriptor and resource tag 349pathnames. The original code used a bunch of str* C library functions 350that caused warnings on some compilers. 351 352iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 353function can overwrite buffers if the calling code is not very careful. 354In the case of generating a module/table header, use of memmove is a 355better implementation. 356 357 3583) Status of new features that have not been completed at this time: 359 360iASL: Implementing an enhanced multiple file compilation into a single 361namespace feature (Status): This feature will be released soon, and 362allows multiple ASL files to be compiled into the same single namespace. 363By doing so, any unresolved external declarations as well as duplicate 364named object declarations can be detected during compilation (rather than 365later during runtime). The following commands are examples that utilize 366this feature: 367 iasl dsdt.asl ssdt.asl 368 iasl dsdt.asl ssdt1.asl ssdt2.asl 369 iasl dsdt.asl ssdt*.asl 370 371ASL tutorial status: Feedback is being gathered internally and the 372current plan is to publish this tutorial on the ACPICA website after a 373final review by a tech writer. 374 375---------------------------------------- 37615 February 2019. Summary of changes for version 20190215: 377 378 3790) Support for ACPI specification version 6.3: 380 381Add PCC operation region support for the AML interpreter. This adds PCC 382operation region support in the AML interpreter and a default handler for 383acpiexec. The change also renames the PCC region address space keyword to 384PlatformCommChannel. 385 386Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 387These methods provide OSPM with health information and device boot 388status. 389 390PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 391defines if the trigger needs to be invoked by OSPM before or at the end 392of kernel crash dump processing/handling operation. 393 394SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 395is used for describing devices such as heterogeneous processors, 396accelerators, GPUs, and IO devices with integrated compute or DMA 397engines. 398 399MADT: Add support for statistical profiling in GICC. Statistical 400profiling extension (SPE) is an architecture-specific feature for ARM. 401 402MADT: Add online capable flag. If this bit is set, system hardware 403supports enabling this processor during OS runtime. 404 405New Error Disconnect Recover Notification value. There are a number of 406scenarios where system Firmware in collaboration with hardware may 407disconnect one or more devices from the rest of the system for purposes 408of error containment. Firmware can use this new notification value to 409alert OSPM of such a removal. 410 411PPTT: New additional fields in Processor Structure Flags. These flags 412provide more information about processor topology. 413 414NFIT/Disassembler: Change a field name from "Address Range" to "Region 415Type". 416 417HMAT updates: make several existing fields to be reserved as well as 418rename subtable 0 to "memory proximity domain attributes". 419 420GTDT: Add support for new GTDT Revision 3. This revision adds information 421for the EL2 timer. 422 423iASL: Update the HMAT example template for new fields. 424 425iASL: Add support for the new revision of the GTDT (Rev 3). 426 427 4281) ACPICA kernel-resident subsystem: 429 430AML Parser: fix the main AML parse loop to correctly skip erroneous 431extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 432byte extended opcodes. If an error occurs during an AML table load, the 433AML parser will continue loading the table by skipping the offending 434opcode. This implements a "load table at any cost" philosophy. 435 436 4372) iASL Compiler/Disassembler and Tools: 438 439iASL: Add checks for illegal object references, such as a reference 440outside of method to an object within a method. Such an object is only 441temporary. 442 443iASL: Emit error for creation of a zero-length operation region. Such a 444region is rather pointless. If encountered, a runtime error is also 445implemented in the interpeter. 446 447Debugger: Fix a possible fault with the "test objects" command. 448 449iASL: Makefile: support parent directory filenames containing embedded 450spaces. 451 452iASL: Update the TPM2 template to revision 4. 453 454iASL: Add the ability to report specific warnings or remarks as errors. 455 456Disassembler: Disassemble OEMx tables as actual AML byte code. 457Previously, these tables were treated as "unknown table". 458 459iASL: Add definition and disassembly for TPM2 revision 3. 460 461iASL: Add support for TPM2 rev 3 compilation. 462 463 464---------------------------------------- 46508 January 2019. Summary of changes for version 20190108: 466 467 4681) ACPICA kernel-resident subsystem: 469 470Updated all copyrights to 2019. This affects all source code modules. 471 472 4732) iASL Compiler/Disassembler and Tools: 474 475ASL test suite (ASLTS): Updated all copyrights to 2019. 476 477Tools: Updated all signon copyrights to 2019. 478 479AcpiExec: Added a new option to dump extra information concerning any 480memory leaks detected by the internal object/cache tracking mechanism. - 481va 482 483iASL: Updated the table template for the TPM2 table to the newest version 484of the table (Revision 4) 485 486 487---------------------------------------- 48813 December 2018. Summary of changes for version 20181213: 489 490 4911) ACPICA Kernel-resident Subsystem: 492 493Fixed some buffer length issues with the GenericSerialBus, related to two 494of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 495which are rarely seen in the field. For these, the LEN field of the ASL 496buffer is now ignored. Hans de Goede 497 498Implemented a new object evaluation trace mechanism for control methods 499and data objects. This includes nested control methods. It is 500particularly useful for examining the ACPI execution during system 501initialization since the output is relatively terse. The flag below 502enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 503 #define ACPI_LV_EVALUATION 0x00080000 504 505Examples: 506 Enter evaluation : _SB.PCI0._INI (Method) 507 Exit evaluation : _SB.PCI0._INI 508 Enter evaluation : _OSI (Method) 509 Exit evaluation : _OSI 510 Enter evaluation : _SB.PCI0.TEST (Method) 511 Nested method call : _SB.PCI0.NST1 512 Exit nested method : _SB.PCI0.NST1 513 Exit evaluation : _SB.PCI0.TEST 514 515Added two recently-defined _OSI strings. See 516https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 517osi. 518 "Windows 2018" 519 "Windows 2018.2" 520 521Update for buffer-to-string conversions via the ToHexString ASL operator. 522A "0x" is now prepended to each of the hex values in the output string. 523This provides compatibility with other ACPI implementations. The ACPI 524specification is somewhat vague on this issue. 525 Example output string after conversion: 526"0x01,0x02,0x03,0x04,0x05,0x06" 527 528Return a run-time error for TermArg expressions within individual package 529elements. Although this is technically supported by the ASL grammar, 530other ACPI implementations do not support this either. Also, this fixes a 531fault if this type of construct is ever encountered (it never has been). 532 533 5342) iASL Compiler/Disassembler and Tools: 535 536iASL: Implemented a new compile option (-ww) that will promote individual 537warnings and remarks to errors. This is intended to enhance the firmware 538build process. 539 540AcpiExec: Implemented a new command-line option (-eo) to support the new 541object evaluation trace mechanism described above. 542 543Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 544instead of a "unknown table" message. 545 546AcpiHelp: Improved support for the "special" predefined names such as 547_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 548used for "xx" and "x". 549 550---------------------------------------- 55131 October 2018. Summary of changes for version 20181031: 552 553 554An Operation Region regression was fixed by properly adding address 555ranges to a global list during initialization. This allows OS to 556accurately check for overlapping regions between native devices (such as 557PCI) and Operation regions as well as checking for region conflicts 558between two Operation Regions. 559 560Added support for the 2-byte extended opcodes in the code/feature that 561attempts to continue parsing during the table load phase. Skip parsing 562Device declarations (and other extended opcodes) when an error occurs 563during parsing. Previously, only single-byte opcodes were supported. 564 565Cleanup: Simplified the module-level code support by eliminating a 566useless global variable (AcpiGbl_GroupModuleLeveCode). 567 568 5692) iASL Compiler/Disassembler and Tools: 570 571iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 572could cause a fault in the preprocessor. This was an inadvertent side- 573effect from moving more allocations/frees to the local cache/memory 574mechanism. 575 576iASL: Enhanced error detection by validating that all NameSeg elements 577within a NamePatch actually exist. The previous behavior was spotty at 578best, and such errors could be improperly ignored at compiler time (never 579at runtime, however. There are two new error messages, as shown in the 580examples below: 581 582dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 583Error 6161 - ^ One or more objects within 584the Pathname do not exist (TTTT.BXXX) 585 586dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 587Error 6160 - One or more prefix Scopes do not exist ^ 588(BBBB.CBF1) 589 590iASL: Disassembler/table-compiler: Added support for the static data 591table TPM2 revision 3 (an older version of TPM2). The support has been 592added for the compiler and the disassembler. 593 594Fixed compilation of DOS format data table file on Unix/Linux systems. 595iASL now properly detects line continuations (\) for DOS format data 596table definition language files on when executing on Unix/Linux. 597 598---------------------------------------- 59903 October 2018. Summary of changes for version 20181003: 600 601 6022) iASL Compiler/Disassembler and Tools: 603 604Fixed a regression introduced in version 20180927 that could cause the 605compiler to fault, especially with NamePaths containing one or more 606carats (^). Such as: ^^_SB_PCI0 607 608Added a new remark for the Sleep() operator when the sleep time operand 609is larger than one second. This is a very long time for the ASL/BIOS code 610and may not be what was intended by the ASL writer. 611 612---------------------------------------- 61327 September 2018. Summary of changes for version 20180927: 614 615 6161) ACPICA kernel-resident subsystem: 617 618Updated the GPE support to clear the status of all ACPI events when 619entering any/all sleep states in order to avoid premature wakeups. In 620theory, this may cause some wakeup events to be missed, but the 621likelihood of this is small. This change restores the original behavior 622of the ACPICA code in order to fix a regression seen from the previous 623"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 624This regression could cause some systems to incorrectly wake immediately. 625 626Updated the execution of the _REG methods during initialization and 627namespace loading to bring the behavior into closer conformance to the 628ACPI specification and other ACPI implementations: 629 630From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 631 "Control methods must assume all operation regions are inaccessible 632until the _REG(RegionSpace, 1) method is executed" 633 634 "The exceptions to this rule are: 6351. OSPM must guarantee that the following operation regions are always 636accessible: 637 SystemIO operation regions. 638 SystemMemory operation regions when accessing memory returned by the 639System Address Map reporting interfaces." 640 641Since the state of both the SystemIO and SystemMemory address spaces are 642defined by the specification to never change, this ACPICA change ensures 643that now _REG is never called on them. This solves some problems seen in 644the field and provides compatibility with other ACPI implementations. An 645update to the upcoming new version of the ACPI specification will help 646clarify this behavior. 647 648Updated the implementation of support for the Generic Serial Bus. For the 649"bidirectional" protocols, the internal implementation now automatically 650creates a return data buffer of the maximum size (255). This handles the 651worst-case for data that is returned from the serial bus handler, and 652fixes some problems seen in the field. This new buffer is directly 653returned to the ASL. As such, there is no true "bidirectional" buffer, 654which matches the ACPI specification. This is the reason for the "double 655store" seen in the example ASL code in the specification, shown below: 656 657Word Process Call (AttribProcessCall): 658 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 659 Field(TOP1, BufferAcc, NoLock, Preserve) 660 { 661 FLD1, 8, // Virtual register at command value 1. 662 } 663 664 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 665 // as BUFF 666 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 667 668 Store(0x5416, DATA) // Save 0x5416 into the data buffer 669 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 670transaction 671 // This is the "double store". The write to 672 // FLD1 returns a new buffer, which is stored 673 // back into BUFF with the second Store. 674 675 6762) iASL Compiler/Disassembler and Tools: 677 678iASL: Implemented detection of extraneous/redundant uses of the Offset() 679operator within a Field Unit list. A remark is now issued for these. For 680example, the first two of the Offset() operators below are extraneous. 681Because both the compiler and the interpreter track the offsets 682automatically, these Offsets simply refer to the current offset and are 683unnecessary. Note, when optimization is enabled, the iASL compiler will 684in fact remove the redundant Offset operators and will not emit any AML 685code for them. 686 687 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 688 Field (OPR1) 689 { 690 Offset (0), // Never needed 691 FLD1, 32, 692 Offset (4), // Redundant, offset is already 4 (bytes) 693 FLD2, 8, 694 Offset (64), // OK use of Offset. 695 FLD3, 16, 696 } 697dsdt.asl 14: Offset (0), 698Remark 2158 - ^ Unnecessary/redundant use of Offset 699operator 700 701dsdt.asl 16: Offset (4), 702Remark 2158 - ^ Unnecessary/redundant use of Offset 703operator 704 705---------------------------------------- 70610 August 2018. Summary of changes for version 20180810: 707 708 7091) ACPICA kernel-resident subsystem: 710 711Initial ACPI table loading: Attempt to continue loading ACPI tables 712regardless of malformed AML. Since migrating table initialization to the 713new module-level code support, the AML interpreter rejected tables upon 714any ACPI error encountered during table load. This is a problem because 715non-serious ACPI errors during table load do not necessarily mean that 716the entire definition block (DSDT or SSDT) is invalid. This change 717improves the table loading by ignoring some types of errors that can be 718generated by incorrect AML. This can range from object type errors, scope 719errors, and index errors. 720 721Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 722during suspend/resume. The status of ACPI events is no longer cleared 723when entering the ACPI S5 system state (power off) which caused some 724systems to power up immediately after turning off power in certain 725situations. This was a functional regression. It was fixed by clearing 726the status of all ACPI events again when entering S5 (for system-wide 727suspend or hibernation the clearing of the status of all events is not 728desirable, as it might cause the kernel to miss wakeup events sometimes). 729Rafael Wysocki. 730 731 7322) iASL Compiler/Disassembler and Tools: 733 734AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 735elements listed in the initialization file were previously initialized 736after the table load and before executing module-level code blocks. 737Recent changes in the module-level code support means that the table load 738becomes a large control method execution. If fields are used within 739module-level code and we are executing with the -fi option, the 740initialization values were used to initialize the namespace object(s) 741only after the table was finished loading. This change Provides an early 742initialization of objects specified in the initialization file so that 743field unit values are populated during the table load (not after the 744load). 745 746AcpiExec: Fixed a small memory leak regression that could result in 747warnings during exit of the utility. These warnings were similar to 748these: 749 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 750 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 751 752---------------------------------------- 75329 June 2018. Summary of changes for version 20180629: 754 755 7561) iASL Compiler/Disassembler and Tools: 757 758iASL: Fixed a regression related to the use of the ASL External 759statement. Error checking for the use of the External() statement has 760been relaxed. Previously, a restriction on the use of External meant that 761the referenced named object was required to be defined in a different 762table (an SSDT). Thus it would be an error to declare an object as an 763external and then define the same named object in the same table. For 764example: 765 DefinitionBlock (...) 766 { 767 External (DEV1) 768 Device (DEV1){...} // This was an error 769 } 770However, this behavior has caused regressions in some existing ASL code, 771because there is code that depends on named objects and externals (with 772the same name) being declared in the same table. This change will allow 773the ASL code above to compile without errors or warnings. 774 775iASL: Implemented ASL language extensions for four operators to make some 776of their arguments optional instead of required: 777 1) Field (RegionName, AccessType, LockRule, UpdateRule) 778 2) BankField (RegionName, BankName, BankValue, 779 AccessType, LockRule, UpdateRule) 780 3) IndexField (IndexName, DataName, 781 AccessType, LockRule, UpdateRule) 782For the Field operators above, the AccessType, LockRule, and UpdateRule 783are now optional arguments. The default values are: 784 AccessType: AnyAcc 785 LockRule: NoLock 786 UpdateRule: Preserve 787 4) Mutex (MutexName, SyncLevel) 788For this operator, the SyncLevel argument is now optional. This argument 789is rarely used in any meaningful way by ASL code, and thus it makes sense 790to make it optional. The default value is: 791 SyncLevel: 0 792 793iASL: Attempted use of the ASL Unload() operator now results in the 794following warning: 795 "Unload is not supported by all operating systems" 796This is in fact very true, and the Unload operator may be completely 797deprecated in the near future. 798 799AcpiExec: Fixed a regression for the -fi option (Namespace initialization 800file. Recent changes in the ACPICA module-level code support altered the 801table load/initialization sequence . This means that the table load has 802become a large method execution of the table itself. If Operation Region 803Fields are used within any module-level code and the -fi option was 804specified, the initialization values were populated only after the table 805had completely finished loading (and thus the module-level code had 806already been executed). This change moves the initialization of objects 807listed in the initialization file to before the table is executed as a 808method. Field unit values are now initialized before the table execution 809is performed. 810 811---------------------------------------- 81231 May 2018. Summary of changes for version 20180531: 813 814 8151) ACPICA kernel-resident Subsystem: 816 817Implemented additional support to help ensure that a DSDT or SSDT is 818fully loaded even if errors are incurred during the load. The majority of 819the problems that are seen is the failure of individual AML operators 820that occur during execution of any module-level code (MLC) existing in 821the table. This support adds a mechanism to abort the current ASL 822statement (AML opcode), emit an error message, and to simply move on to 823the next opcode -- instead of aborting the entire table load. This is 824different than the execution of a control method where the entire method 825is aborted upon any error. The goal is to perform a very "best effort" to 826load the ACPI tables. The most common MLC errors that have been seen in 827the field are direct references to unresolved ASL/AML symbols (referenced 828directly without the use of the CondRefOf operator to validate the 829symbol). This new ACPICA behavior is now compatible with other ACPI 830implementations. 831 832Interpreter: The Unload AML operator is no longer supported for the 833reasons below. An AE_NOT_IMPLEMENTED exception is returned. 8341) A correct implementation on at least some hosts may not be possible. 8352) Other ACPI implementations do not correctly/fully support it. 8363) It requires host device driver support which is not known to exist. 837 (To properly support namespace unload out from underneath.) 8384) This AML operator has never been seen in the field. 839 840Parser: Added a debug option to dump AML parse sub-trees as they are 841being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 842ACPI_DB_PARSE_TREES. 843 844Debugger: Reduced the verbosity for errors incurred during table load and 845module-level code execution. 846 847Completed an investigation into adding a namespace node "owner list" 848instead of the current "owner ID" associated with namespace nodes. This 849list would link together all nodes that are owned by an individual 850control method. The purpose would be to enhance control method execution 851by speeding up cleanup during method exit (all namespace nodes created by 852a method are deleted upon method termination.) Currently, the entire 853namespace must be searched for matching owner IDs if (and only if) the 854method creates named objects outside of the local scope. However, by far 855the most common case is that methods create objects locally, not outside 856the method scope. There is already an ACPICA optimization in place that 857only searches the entire namespace in the rare case of a method creating 858objects elsewhere in the namespace. Therefore, it is felt that the 859overhead of adding an additional pointer to each namespace node to 860implement the owner list makes this feature unnecessary. 861 862 8632) iASL Compiler/Disassembler and Tools: 864 865iASL, Disassembler, and Template generator: Implemented support for 866Revision D of the IORT table. Adds a new subtable that is used to specify 867SMMUv3 PMCGs. rmurphy-arm. 868 869Disassembler: Restored correct table header validation for the "special" 870ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 871table header and must be special-cased. This was a regression that has 872been present for apparently a long time. 873 874AcpiExec: Reduced verbosity of the local exception handler implemented 875within acpiexec. This handler is invoked by ACPICA upon any exceptions 876generated during control method execution. A new option was added: -vh 877restores the original verbosity level if desired. 878 879AcpiExec: Changed the default base from decimal to hex for the -x option 880(set debug level). This simplifies the use of this option and matches the 881behavior of the corresponding iASL -x option. 882 883AcpiExec: Restored a force-exit on multiple control-c (sigint) 884interrupts. This allows program termination even if other issues cause 885the control-c to fail. 886 887ASL test suite (ASLTS): Added tests for the recently implemented package 888element resolution mechanism that allows forward references to named 889objects from individual package elements (this mechanism provides 890compatibility with other ACPI implementations.) 891 892 893---------------------------------------- 8948 May 2018. Summary of changes for version 20180508: 895 896 8971) ACPICA kernel-resident subsystem: 898 899Completed the new (recently deployed) package resolution mechanism for 900the Load and LoadTable ASL/AML operators. This fixes a regression that 901was introduced in version 20180209 that could result in an 902AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 903(SSDT) that contains package objects. 904 905 9062) iASL Compiler/Disassembler and Tools: 907 908AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 9091 MB. This change allows for table offsets within the acpidump file to be 910up to 8 characters. These changes are backwards compatible with existing 911acpidump files. 912 913 914---------------------------------------- 91527 April 2018. Summary of changes for version 20180427: 916 917 9181) ACPICA kernel-resident subsystem: 919 920Debugger: Added support for Package objects in the "Test Objects" 921command. This command walks the entire namespace and evaluates all named 922data objects (Integers, Strings, Buffers, and now Packages). 923 924Improved error messages for the namespace root node. Originally, the root 925was referred to by the confusing string "\___". This has been replaced by 926"Namespace Root" for clarification. 927 928Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 929Ian King <colin.king@canonical.com>. 930 931 9322) iASL Compiler/Disassembler and Tools: 933 934iASL: Implemented support to detect and flag illegal forward references. 935For compatibility with other ACPI implementations, these references are 936now illegal at the root level of the DSDT or SSDTs. Forward references 937have always been illegal within control methods. This change should not 938affect existing ASL/AML code because of the fact that these references 939have always been illegal in the other ACPI implementation. 940 941iASL: Added error messages for the case where a table OEM ID and OEM 942TABLE ID strings are longer than the ACPI-defined length. Previously, 943these strings were simply silently truncated. 944 945iASL: Enhanced the -tc option (which creates an AML hex file in C, 946suitable for import into a firmware project): 947 1) Create a unique name for the table, to simplify use of multiple 948SSDTs. 949 2) Add a protection #ifdef in the file, similar to a .h header file. 950With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 951evan.lloyd@arm.com 952 953AcpiExec: Added a new option, -df, to disable the local fault handler. 954This is useful during debugging, where it may be desired to drop into a 955debugger on a fault. 956 957---------------------------------------- 95813 March 2018. Summary of changes for version 20180313: 959 960 9611) ACPICA kernel-resident subsystem: 962 963Implemented various improvements to the GPE support: 964 9651) Dispatch all active GPEs at initialization time so that no GPEs are 966lost. 9672) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 968before devices are enumerated. 9693) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 970IRQs are not lost. 9714) Add parallel GPE handling to eliminate the possibility of dispatching 972the same GPE twice. 9735) Dispatch any pending GPEs after enabling for the first time. 974 975AcpiGetObjectInfo - removed support for the _STA method. This was causing 976problems on some platforms. 977 978Added a new _OSI string, "Windows 2017.2". 979 980Cleaned up and simplified the module-level code support. These changes 981are in preparation for the eventual removal of the legacy MLC support 982(deferred execution), replaced by the new MLC architecture which executes 983the MLC as a table is loaded (DSDT/SSDTs). 984 985Changed a compile-time option to a runtime option. Changes the option to 986ignore ACPI table load-time package resolution errors into a runtime 987option. Used only for platforms that generate many AE_NOT_FOUND errors 988during boot. AcpiGbl_IgnorePackageResolutionErrors. 989 990Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 991ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 992compilation errors from unused variables (seen with some compilers). 993 994 9952) iASL Compiler/Disassembler and Tools: 996 997ASLTS: parallelized execution in order to achieve an (approximately) 2X 998performance increase. 999 1000ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 1001error reporting. 1002 1003---------------------------------------- 100409 February 2018. Summary of changes for version 20180209: 1005 1006 10071) ACPICA kernel-resident subsystem: 1008 1009Completed the final integration of the recent changes to Package Object 1010handling and the module-level AML code support. This allows forward 1011references from individual package elements when the package object is 1012declared from within module-level code blocks. Provides compatibility 1013with other ACPI implementations. 1014 1015The new architecture for the AML module-level code has been completed and 1016is now the default for the ACPICA code. This new architecture executes 1017the module-level code in-line as the ACPI table is loaded/parsed instead 1018of the previous architecture which deferred this code until after the 1019table was fully loaded. This solves some ASL code ordering issues and 1020provides compatibility with other ACPI implementations. At this time, 1021there is an option to fallback to the earlier architecture, but this 1022support is deprecated and is planned to be completely removed later this 1023year. 1024 1025Added a compile-time option to ignore AE_NOT_FOUND exceptions during 1026resolution of named reference elements within Package objects. Although 1027this is potentially a serious problem, it can generate a lot of 1028noise/errors on platforms whose firmware carries around a bunch of unused 1029Package objects. To disable these errors, define 1030ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 1031errors are always reported for ACPICA applications such as AcpiExec. 1032 1033Fixed a regression related to the explicit type-conversion AML operators 1034(ToXXXX). The regression was introduced early in 2017 but was not seen 1035until recently because these operators are not fully supported by other 1036ACPI implementations and are thus rarely used by firmware developers. The 1037operators are defined by the ACPI specification to not implement the 1038"implicit result object conversion". The regression incorrectly 1039introduced this object conversion for the following explicit conversion 1040operators: 1041 ToInteger 1042 ToString 1043 ToBuffer 1044 ToDecimalString 1045 ToHexString 1046 ToBCD 1047 FromBCD 1048 1049 10502) iASL Compiler/Disassembler and Tools: 1051 1052iASL: Fixed a problem with the compiler constant folding feature as 1053related to the ToXXXX explicit conversion operators. These operators do 1054not support the "implicit result object conversion" by definition. Thus, 1055ASL expressions that use these operators cannot be folded to a simple 1056Store operator because Store implements the implicit conversion. This 1057change uses the CopyObject operator for the ToXXXX operator folding 1058instead. CopyObject is defined to not implement implicit result 1059conversions and is thus appropriate for folding the ToXXXX operators. 1060 1061iASL: Changed the severity of an error condition to a simple warning for 1062the case where a symbol is declared both locally and as an external 1063symbol. This accommodates existing ASL code. 1064 1065AcpiExec: The -ep option to enable the new architecture for module-level 1066code has been removed. It is replaced by the -dp option which instead has 1067the opposite effect: it disables the new architecture (the default) and 1068enables the legacy architecture. When the legacy code is removed in the 1069future, the -dp option will be removed also. 1070 1071---------------------------------------- 107205 January 2018. Summary of changes for version 20180105: 1073 1074 10751) ACPICA kernel-resident subsystem: 1076 1077Updated all copyrights to 2018. This affects all source code modules. 1078 1079Fixed a possible build error caused by an unresolved reference to the 1080AcpiUtSafeStrncpy function. 1081 1082Removed NULL pointer arithmetic in the various pointer manipulation 1083macros. All "(void *) NULL" constructs are converted to "(void *) 0". 1084This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 1085 1086Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 1087Mittal. 1088 1089 10902) iASL Compiler/Disassembler and Tools: 1091 1092ASLTS: Updated all copyrights to 2018. 1093 1094Tools: Updated all signon copyrights to 2018. 1095 1096AcpiXtract: Fixed a regression related to ACPI table signatures where the 1097signature was truncated to 3 characters (instead of 4). 1098 1099AcpiExec: Restore the original terminal mode after the use of the -v and 1100-vd options. 1101 1102ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 1103 1104---------------------------------------- 110514 December 2017. Summary of changes for version 20171214: 1106 1107 11081) ACPICA kernel-resident subsystem: 1109 1110Fixed a regression in the external (public) AcpiEvaluateObjectTyped 1111interface where the optional "pathname" argument had inadvertently become 1112a required argument returning an error if omitted (NULL pointer 1113argument). 1114 1115Fixed two possible memory leaks related to the recently developed "late 1116resolution" of reference objects within ASL Package Object definitions. 1117 1118Added two recently defined _OSI strings: "Windows 2016" and "Windows 11192017". Mario Limonciello. 1120 1121Implemented and deployed a safer version of the C library function 1122strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 1123creation of unterminated strings as a possible result of a standard 1124strncpy. 1125 1126Cleaned up and restructured the global variable file (acglobal.h). There 1127are many changes, but no functional changes. 1128 1129 11302) iASL Compiler/Disassembler and Tools: 1131 1132iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 1133optional OemData field at the end of the table was incorrectly required 1134for proper compilation. It is now correctly an optional field. 1135 1136ASLTS: The entire suite was converted from standard ASL to the ASL+ 1137language, using the ASL-to-ASL+ converter which is integrated into the 1138iASL compiler. A binary compare of all output files has verified the 1139correctness of the conversion. 1140 1141iASL: Fixed the source code build for platforms where "char" is unsigned. 1142This affected the iASL lexer only. Jung-uk Kim. 1143 1144---------------------------------------- 114510 November 2017. Summary of changes for version 20171110: 1146 1147 11481) ACPICA kernel-resident subsystem: 1149 1150This release implements full support for ACPI 6.2A: 1151 NFIT - Added a new subtable, "Platform Capabilities Structure" 1152No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1153errata release of the specification. 1154 1155Other ACPI table changes: 1156 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1157 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1158Linton 1159 1160Utilities: Modified the string/integer conversion functions to use 1161internal 64-bit divide support instead of a native divide. On 32-bit 1162platforms, a 64-bit divide typically requires a library function which 1163may not be present in the build (kernel or otherwise). 1164 1165Implemented a targeted error message for timeouts returned from the 1166Embedded Controller device driver. This is seen frequently enough to 1167special-case an AE_TIME returned from an EC operation region access: 1168 "Timeout from EC hardware or EC device driver" 1169 1170Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1171runtime error messages have the identical prefix. 1172 1173 11742) iASL Compiler/Disassembler and Tools: 1175 1176AcpiXtract: Fixed a problem with table header detection within the 1177acpidump file. Processing a table could be ended early if a 0x40 (@) 1178appears in the original binary table, resulting in the @ symbol appearing 1179in the decoded ASCII field at the end of the acpidump text line. The 1180symbol caused acpixtract to incorrectly think it had reached the end of 1181the current table and the beginning of a new table. 1182 1183AcpiXtract: Added an option (-f) to ignore some errors during table 1184extraction. This initial implementation ignores non-ASCII and non- 1185printable characters found in the acpidump text file. 1186 1187TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1188for ASLTS. This feature is used to track memory allocations from 1189different memory caches within the ACPICA code. At the end of an ASLTS 1190run, these memory statistics are recorded and stored in a log file. 1191 1192Debugger (user-space version): Implemented a simple "Background" command. 1193Creates a new thread to execute a control method in the background, while 1194control returns to the debugger prompt to allow additional commands. 1195 Syntax: Background <Namepath> [Arguments] 1196 1197---------------------------------------- 119829 September 2017. Summary of changes for version 20170929: 1199 1200 12011) ACPICA kernel-resident subsystem: 1202 1203Redesigned and implemented an improved ASL While() loop timeout 1204mechanism. This mechanism is used to prevent infinite loops in the kernel 1205AML interpreter caused by either non-responsive hardware or incorrect AML 1206code. The new implementation uses AcpiOsGetTimer instead of a simple 1207maximum loop count, and is thus more accurate and constant across 1208different machines. The default timeout is currently 30 seconds, but this 1209may be adjusted later. 1210 1211Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1212better reflect the new implementation of the loop timeout mechanism. 1213 1214Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1215and to fix an off-by-one error. Jung-uk Kim. 1216 1217Fixed an EFI build problem by updating the makefiles to for a new file 1218that was added, utstrsuppt.c 1219 1220 12212) iASL Compiler/Disassembler and Tools: 1222 1223Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1224includes support in the table disassembler, compiler, and template 1225generator. 1226 1227iASL: Added an exception for an illegal type of recursive method 1228invocation. If a method creates named objects, the first recursive call 1229will fail at runtime. This change adds an error detection at compile time 1230to catch the problem up front. Note: Marking such a method as 1231"serialized" will not help with this problem, because the same thread can 1232acquire the method mutex more than once. Example compiler and runtime 1233output: 1234 1235 Method (MTH1) 1236 { 1237 Name (INT1, 1) 1238 MTH1 () 1239 } 1240 1241 dsdt.asl 22: MTH1 () 1242 Error 6152 - ^ Illegal recursive call to method 1243 that creates named objects (MTH1) 1244 1245Previous runtime exception: 1246 ACPI Error: [INT1] Namespace lookup failure, 1247 AE_ALREADY_EXISTS (20170831/dswload2-465) 1248 1249iASL: Updated support for External() opcodes to improve namespace 1250management and error detection. These changes are related to issues seen 1251with multiple-segment namespace pathnames within External declarations, 1252such as below: 1253 1254 External(\_SB.PCI0.GFX0, DeviceObj) 1255 External(\_SB.PCI0.GFX0.ALSI) 1256 1257iASL: Implemented support for multi-line error/warning messages. This 1258enables more detailed and helpful error messages as below, from the 1259initial deployment for the duplicate names error: 1260 1261 DSDT.iiii 1692: Device(PEG2) { 1262 Error 6074 - ^ Name already exists in scope 1263(PEG2) 1264 1265 Original name creation/declaration below: 1266 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1267 1268AcpiXtract: Added additional flexibility to support differing input hex 1269dump formats. Specifically, hex dumps that contain partial disassembly 1270and/or comments within the ACPI table data definition. There exist some 1271dump utilities seen in the field that create this type of hex dump (such 1272as Simics). For example: 1273 1274 DSDT @ 0xdfffd0c0 (10999 bytes) 1275 Signature DSDT 1276 Length 10999 1277 Revision 1 1278 Checksum 0xf3 (Ok) 1279 OEM_ID BXPC 1280 OEM_table_id BXDSDT 1281 OEM_revision 1 1282 Creator_id 1280593481 1283 Creator_revision 537399345 1284 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1285 ... 1286 2af0: 5f 4c 30 46 00 a4 01 1287 1288Test suite: Miscellaneous changes/fixes: 1289 More cleanup and simplification of makefiles 1290 Continue compilation of test cases after a compile failure 1291 Do not perform binary compare unless both files actually exist 1292 1293iASL: Performed some code/module restructuring. Moved all memory 1294allocation functions to new modules. Two new files, aslallocate.c and 1295aslcache.c 1296 1297---------------------------------------- 129831 August 2017. Summary of changes for version 20170831: 1299 1300 13011) ACPICA kernel-resident subsystem: 1302 1303Implemented internal support for full 64-bit addresses that appear in all 1304Generic Address Structure (GAS) structures. Previously, only the lower 32 1305bits were used. Affects the use of GAS structures in the FADT and other 1306tables, as well as the GAS structures passed to the AcpiRead and 1307AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1308 1309Added header support for the PDTT ACPI table (Processor Debug Trigger 1310Table). Full support in the iASL Data Table Compiler and disassembler is 1311forthcoming. 1312 1313 13142) iASL Compiler/Disassembler and Tools: 1315 1316iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1317Properties Topology Table) where a flag bit was specified in the wrong 1318bit position ("Line Size Valid", bit 6). 1319 1320iASL: Implemented support for Octal integer constants as defined by the 1321ASL language grammar, per the ACPI specification. Any integer constant 1322that starts with a zero is an octal constant. For example, 1323 Store (037777, Local0) /* Octal constant */ 1324 Store (0x3FFF, Local0) /* Hex equivalent */ 1325 Store (16383, Local0) /* Decimal equivalent */ 1326 1327iASL: Improved overflow detection for 64-bit string conversions during 1328compilation of integer constants. "Overflow" in this case means a string 1329that represents an integer that is too large to fit into a 64-bit value. 1330Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1331the low-order 32 bits with a warning, as previously implemented. Several 1332new exceptions are defined that indicate a 64-bit overflow, as well as 1333the base (radix) that was used during the attempted conversion. Examples: 1334 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1335 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1336 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1337 1338iASL: Added a warning for the case where a ResourceTemplate is declared 1339with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1340this case, the resulting template is created with a single END_TAG 1341descriptor, which is essentially useless. 1342 1343iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1344include compilation error codes as well. 1345 1346---------------------------------------- 134728 July 2017. Summary of changes for version 20170728: 1348 1349 13501) ACPICA kernel-resident subsystem: 1351 1352Fixed a regression seen with small resource descriptors that could cause 1353an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1354 1355AML interpreter: Implemented a new feature that allows forward references 1356from individual named references within package objects that are 1357contained within blocks of "module-level code". This provides 1358compatibility with other ACPI implementations and supports existing 1359firmware that depends on this feature. Example: 1360 1361 Name (ABCD, 1) 1362 If (ABCD) /* An If() at module-level */ 1363 { 1364 Name (PKG1, Package() 1365 { 1366 INT1 /* Forward reference to object INT1 1367*/ 1368 }) 1369 Name (INT1, 0x1234) 1370 } 1371 1372AML Interpreter: Fixed a problem with the Alias() operator where aliases 1373to some ASL objects were not handled properly. Objects affected are: 1374Mutex, Event, and OperationRegion. 1375 1376AML Debugger: Enhanced to properly handle AML Alias objects. These 1377objects have one level of indirection which was not fully supported by 1378the debugger. 1379 1380Table Manager: Added support to detect and ignore duplicate SSDTs within 1381the XSDT/RSDT. This error in the XSDT has been seen in the field. 1382 1383EFI and EDK2 support: 1384 Enabled /WX flag for MSVC builds 1385 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1386 Added local support for 64-bit multiply and shift operations 1387 Added support to compile acpidump.efi on Windows 1388 Added OSL function stubs for interfaces not used under EFI 1389 1390Added additional support for the _DMA predefined name. _DMA returns a 1391buffer containing a resource template. This change add support within the 1392resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1393resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1394 1395 13962) iASL Compiler/Disassembler and Tools: 1397 1398iASL: Fixed a problem where the internal input line buffer(s) could 1399overflow if there are very long lines in the input ASL source code file. 1400Implemented buffer management that automatically increases the size of 1401the buffers as necessary. 1402 1403iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1404errors. If the specified exception is not raised during compilation, the 1405compiler emits an error. This is intended to support the ASL test suite, 1406but may be useful in other contexts. 1407 1408iASL: Implemented a new predefined macro, __METHOD__, which returns a 1409string containing the name of the current control method that is being 1410compiled. 1411 1412iASL: Implemented debugger and table compiler support for the SDEI ACPI 1413table (Software Delegated Exception Interface). James Morse 1414<james.morse@arm.com> 1415 1416Unix/Linux makefiles: Added an option to disable compile optimizations. 1417The disable occurs when the NOOPT flag is set to TRUE. 1418theracermaster@gmail.com 1419 1420Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1421when there are different tables for 32-bit versus 64-bit. 1422 1423Enhanced error reporting for the ASL test suite (ASLTS) by removing 1424unnecessary/verbose text, and emit the actual line number where an error 1425has occurred. These changes are intended to improve the usefulness of the 1426test suite. 1427 1428---------------------------------------- 142929 June 2017. Summary of changes for version 20170629: 1430 1431 14321) ACPICA kernel-resident subsystem: 1433 1434Tables: Implemented a deferred ACPI table verification. This is useful 1435for operating systems where the tables cannot be verified in the early 1436initialization stage due to early memory mapping limitations on some 1437architectures. Lv Zheng. 1438 1439Tables: Removed the signature validation for dynamically loaded tables. 1440Provides compatibility with other ACPI implementations. Previously, only 1441SSDT tables were allowed, as per the ACPI specification. Now, any table 1442signature can be used via the Load() operator. Lv Zheng. 1443 1444Tables: Fixed several mutex issues that could cause errors during table 1445acquisition. Lv Zheng. 1446 1447Tables: Fixed a problem where an ACPI warning could be generated if a 1448null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1449 1450Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1451AcpiPutTable interfaces. This applies to the "late stage" table loading 1452when the use of AcpiPutTable is no longer required (since the system 1453memory manager is fully running and available). Lv Zheng. 1454 1455Fixed/Reverted a regression during processing of resource descriptors 1456that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1457exception in this case. 1458 1459Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1460I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1461 1462Interpreter: Fixed a possible fault if an Alias operator with an invalid 1463or duplicate target is encountered during Alias creation in 1464AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1465 1466Added an option to use designated initializers for function pointers. 1467Kees Cook <keescook@google.com> 1468 1469 14702) iASL Compiler/Disassembler and Tools: 1471 1472iASL: Allow compilation of External declarations with target pathnames 1473that refer to existing named objects within the table. Erik Schmauss. 1474 1475iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1476FieldUnit name also is declared via External in the same table. Erik 1477Schmauss. 1478 1479iASL: Allow existing scope names within pathnames used in External 1480statements. For example: 1481 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1482 Device (ABCD) 1483 1484iASL: IORT ACPI table: Implemented changes required to decode the new 1485Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1486compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1487 1488Disassembler: Don't abort disassembly on errors from External() 1489statements. Erik Schmauss. 1490 1491Disassembler: fixed a possible fault when one of the Create*Field 1492operators references a Resource Template. ACPICA Bugzilla 1396. 1493 1494iASL: In the source code, resolved some naming inconsistences across the 1495parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1496Adds a new file, aslparseop.c 1497 1498---------------------------------------- 149931 May 2017. Summary of changes for version 20170531: 1500 1501 15020) ACPI 6.2 support: 1503 1504The ACPI specification version 6.2 has been released and is available at 1505http://uefi.org/specifications 1506 1507This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1508are summarized below. 1509 1510New ACPI tables (Table Compiler/Disassembler/Templates): 1511 HMAT (Heterogeneous Memory Attributes Table) 1512 WSMT (Windows SMM Security Mitigation Table) 1513 PPTT (Processor Properties Topology Table) 1514 1515New subtables for existing ACPI tables: 1516 HEST (New subtable, Arch-deferred machine check) 1517 SRAT (New subtable, Arch-specific affinity structure) 1518 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1519 1520Simple updates for existing ACPI tables: 1521 BGRT (two new flag bits) 1522 HEST (New bit defined for several subtables, GHES_ASSIST) 1523 1524New Resource Descriptors and Resource macros (Compiler/Disassembler): 1525 PinConfig() 1526 PinFunction() 1527 PinGroup() 1528 PinGroupConfig() 1529 PinGroupFunction() 1530 New type for hardware error notification (section 18.3.2.9) 1531 1532New predefined names/methods (Compiler/Interpreter): 1533 _HMA (Heterogeneous Memory Attributes) 1534 _LSI (Label Storage Information) 1535 _LSR (Label Storage Read) 1536 _LSW (Label Storage Write) 1537 1538ASL grammar/macro changes (Compiler): 1539 For() ASL macro, implemented with the AML while operator 1540 Extensions to Concatenate operator 1541 Support for multiple definition blocks in same ASL file 1542 Clarification for Buffer operator 1543 Allow executable AML code underneath all scopes (Devices, etc.) 1544 Clarification/change for the _OSI return value 1545 ASL grammar update for reference operators 1546 Allow a zero-length string for AML filename in DefinitionBlock 1547 1548Miscellaneous: 1549 New device object notification value 1550 Remove a notify value (0x0C) for graceful shutdown 1551 New UUIDs for processor/cache properties and 1552 physical package property 1553 New _HID, ACPI0014 (Wireless Power Calibration Device) 1554 1555 15561) ACPICA kernel-resident subsystem: 1557 1558Added support to disable ACPI events on hardware-reduced platforms. 1559Eliminates error messages of the form "Could not enable fixed event". Lv 1560Zheng 1561 1562Fixed a problem using Device/Thermal objects with the ObjectType and 1563DerefOf ASL operators. This support had not been fully/properly 1564implemented. 1565 1566Fixed a problem where if a Buffer object containing a resource template 1567was longer than the actual resource template, an error was generated -- 1568even though the AML is legal. This case has been seen in the field. 1569 1570Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 1571The values for DUAL_PIC and MULTIPLE_APIC were reversed. 1572 1573Added header file changes for the TPM2 ACPI table. Update to new version 1574of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 1575 1576Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 1577These interfaces are intended to be used only in conjunction with the 1578predefined _DLM method (Device Lock Method). "This object appears in a 1579device scope when AML access to the device must be synchronized with the 1580OS environment". 1581 1582Example Code and Data Size: These are the sizes for the OS-independent 1583acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1584debug version of the code includes the debug output trace mechanism and 1585has a much larger code and data size. 1586 1587 Current Release: 1588 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 1589 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 1590 Previous Release: 1591 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1592 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1593 1594 15952) iASL Compiler/Disassembler and Tools: 1596 1597iASL: Fixed a problem where an External() declaration could not refer to 1598a Field Unit. Erik Schmauss. 1599 1600Disassembler: Improved support for the Switch/Case operators. This 1601feature will disassemble AML code back to the original Switch operators 1602when possible, instead of an If..Else sequence. David Box 1603 1604iASL and disassembler: Improved the handling of multiple extraneous 1605parentheses for both ASL input and disassembled ASL output. 1606 1607Improved the behavior of the iASL compiler and disassembler to detect 1608improper use of external declarations 1609 1610Disassembler: Now aborts immediately upon detection of an unknown AML 1611opcode. The AML parser has no real way to recover from this, and can 1612result in the creation of an ill-formed parse tree that causes errors 1613later during the disassembly. 1614 1615All tools: Fixed a problem where the Unix application OSL did not handle 1616control-c correctly. For example, a control-c could incorrectly wake the 1617debugger. 1618 1619AcpiExec: Improved the Control-C handling and added a handler for 1620segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1621environments. 1622 1623Reduced the verbosity of the generic unix makefiles. Previously, each 1624compilation displayed the full set of compiler options. This has been 1625eliminated as the options are easily inspected within the makefiles. Each 1626compilation now results in a single line of output. 1627 1628---------------------------------------- 162903 March 2017. Summary of changes for version 20170303: 1630 1631 16320) ACPICA licensing: 1633 1634The licensing information at the start of each source code module has 1635been updated. In addition to the Intel license, the dual GPLv2/BSD 1636license has been added for completeness. Now, a single version of the 1637source code should be suitable for all ACPICA customers. This is the 1638major change for this release since it affects all source code modules. 1639 1640 16411) ACPICA kernel-resident subsystem: 1642 1643Fixed two issues with the common asltypes.h header that could cause 1644problems in some environments: (Kim Jung-uk) 1645 Removed typedef for YY_BUFFER_STATE ? 1646 Fixes an error with earlier versions of Flex. 1647 Removed use of FILE typedef (which is only defined in stdio.h) 1648 1649 16502) iASL Compiler/Disassembler and Tools: 1651 1652Disassembler: fixed a regression introduced in 20170224. A fix for a 1653memory leak related to resource descriptor tags (names) could fault when 1654the disassembler was generated with 64-bit compilers. 1655 1656The ASLTS test suite has been updated to implement a new testing 1657architecture. During generation of the suite from ASL source, both the 1658ASL and ASL+ compilers are now validated, as well as the disassembler 1659itself (Erik Schmauss). The architecture executes as follows: 1660 1661 For every ASL source module: 1662 Compile (legacy ASL compilation) 1663 Disassemble the resulting AML to ASL+ source code 1664 Compile the new ASL+ module 1665 Perform a binary compare on the legacy AML and the new ASL+ AML 1666 The ASLTS suite then executes normally using the AML binaries. 1667 1668---------------------------------------- 166924 February 2017. Summary of changes for version 20170224: 1670 1671 16721) ACPICA kernel-resident subsystem: 1673 1674Interpreter: Fixed two issues with the control method return value auto- 1675repair feature, where an attempt to double-delete an internal object 1676could result in an ACPICA warning (for _CID repair and others). No fault 1677occurs, however, because the attempted deletion (actually a release to an 1678internal cache) is detected and ignored via object poisoning. 1679 1680Debugger: Fixed an AML interpreter mutex issue during the single stepping 1681of control methods. If certain debugger commands are executed during 1682stepping, a mutex acquire/release error could occur. Lv Zheng. 1683 1684Fixed some issues generating ACPICA with the Intel C compiler by 1685restoring the original behavior and compiler-specific include file in 1686acenv.h. Lv Zheng. 1687 1688Example Code and Data Size: These are the sizes for the OS-independent 1689acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1690debug version of the code includes the debug output trace mechanism and 1691has a much larger code and data size. 1692 1693 Current Release: 1694 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1695 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1696 Previous Release: 1697 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1698 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1699 1700 17012) iASL Compiler/Disassembler and Tools: 1702 1703iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1704tool has been designed, implemented, and included in this release. The 1705key feature of this utility is that the original comments within the 1706input ASL file are preserved during the conversion process, and included 1707within the converted ASL+ file -- thus creating a transparent conversion 1708of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1709 1710 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1711converted code 1712 1713iASL/Disassembler: Improved the detection and correct disassembly of 1714Switch/Case operators. This feature detects sequences of if/elseif/else 1715operators that originated from ASL Switch/Case/Default operators and 1716emits the original operators. David Box. 1717 1718iASL: Improved the IORT ACPI table support in the following areas. Lv 1719Zheng: 1720 Clear MappingOffset if the MappingCount is zero. 1721 Fix the disassembly of the SMMU GSU interrupt offset. 1722 Update the template file for the IORT table. 1723 1724Disassembler: Enhanced the detection and disassembly of resource 1725template/descriptor within a Buffer object. An EndTag descriptor is now 1726required to have a zero second byte, since all known ASL compilers emit 1727this. This helps eliminate incorrect decisions when a buffer is 1728disassembled (false positives on resource templates). 1729 1730---------------------------------------- 173119 January 2017. Summary of changes for version 20170119: 1732 1733 17341) General ACPICA software: 1735 1736Entire source code base: Added the 2017 copyright to all source code 1737legal/licensing module headers and utility/tool signons. This includes 1738the standard Linux dual-license header. This affects virtually every file 1739in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1740the ACPICA test suite. 1741 1742 17432) iASL Compiler/Disassembler and Tools: 1744 1745iASL: Removed/fixed an inadvertent remark when a method argument 1746containing a reference is used as a target operand within the method (and 1747never used as a simple argument), as in the example below. Jeffrey Hugo. 1748 1749 dsdt.asl 1507: Store(0x1, Arg0) 1750 Remark 2146 - ^ Method Argument is never used (Arg0) 1751 1752All tools: Removed the bit width of the compiler that generated the tool 1753from the common signon for all user space tools. This proved to be 1754confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1755from the generic makefiles (Thomas Petazzoni). Example below. 1756 1757 Old: 1758 ASL+ Optimizing Compiler version 20170119-32 1759 ASL+ Optimizing Compiler version 20170119-64 1760 1761 New: 1762 ASL+ Optimizing Compiler version 20170119 1763 1764---------------------------------------- 176522 December 2016. Summary of changes for version 20161222: 1766 1767 17681) ACPICA kernel-resident subsystem: 1769 1770AML Debugger: Implemented a new mechanism to simplify and enhance 1771debugger integration into all environments, including kernel debuggers 1772and user-space utilities, as well as remote debug services. This 1773mechanism essentially consists of new OSL interfaces to support debugger 1774initialization/termination, as well as wait/notify interfaces to perform 1775the debugger handshake with the host. Lv Zheng. 1776 1777 New OSL interfaces: 1778 AcpiOsInitializeDebugger (void) 1779 AcpiOsTerminateDebugger (void) 1780 AcpiOsWaitCommandReady (void) 1781 AcpiOsNotifyCommandComplete (void) 1782 1783 New OS services layer: 1784 osgendbg.c -- Example implementation, and used for AcpiExec 1785 1786Update for Generic Address Space (GAS) support: Although the AccessWidth 1787and/or BitOffset fields of the GAS are not often used, this change now 1788fully supports these fields. This affects the internal support for FADT 1789registers, registers in other ACPI data tables, and the AcpiRead and 1790AcpiWrite public interfaces. Lv Zheng. 1791 1792Sleep support: In order to simplify integration of ACPI sleep for the 1793various host operating systems, a new OSL interface has been introduced. 1794AcpiOsEnterSleep allows the host to perform any required operations 1795before the final write to the sleep control register(s) is performed by 1796ACPICA. Lv Zheng. 1797 1798 New OSL interface: 1799 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1800 1801 Called from these internal interfaces: 1802 AcpiHwLegacySleep 1803 AcpiHwExtendedSleep 1804 1805EFI support: Added a very small EFI/ACPICA example application. Provides 1806a simple demo for EFI integration, as well as assisting with resolution 1807of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1808 1809 source/tools/efihello/efihello.c 1810 1811Local C library: Implemented several new functions to enhance ACPICA 1812portability, for environments where these clib functions are not 1813available (such as EFI). Lv Zheng: 1814 putchar 1815 getchar 1816 strpbrk 1817 strtok 1818 memmove 1819 1820Fixed a regression where occasionally a valid resource descriptor was 1821incorrectly detected as invalid at runtime, and a 1822AE_AML_NO_RESOURCE_END_TAG was returned. 1823 1824Fixed a problem with the recently implemented support that enables 1825control method invocations as Target operands to many ASL operators. 1826Warnings of this form: "Needed type [Reference], found [Processor]" were 1827seen at runtime for some method invocations. 1828 1829Example Code and Data Size: These are the sizes for the OS-independent 1830acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1831debug version of the code includes the debug output trace mechanism and 1832has a much larger code and data size. 1833 1834 Current Release: 1835 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1836 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1837 Previous Release: 1838 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1839 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1840 1841 18422) iASL Compiler/Disassembler and Tools: 1843 1844Disassembler: Enhanced output by adding the capability to detect and 1845disassemble ASL Switch/Case statements back to the original ASL source 1846code instead of if/else blocks. David Box. 1847 1848AcpiHelp: Split a large file into separate files based upon 1849functionality/purpose. New files are: 1850 ahaml.c 1851 ahasl.c 1852 1853---------------------------------------- 185417 November 2016. Summary of changes for version 20161117: 1855 1856 18571) ACPICA kernel-resident subsystem: 1858 1859Table Manager: Fixed a regression introduced in 20160729, "FADT support 1860cleanup". This was an attempt to remove all references in the source to 1861the FADT version 2, which never was a legal version number. It was 1862skipped because it was an early version of 64-bit support that was 1863eventually abandoned for the current 64-bit support. 1864 1865Interpreter: Fixed a problem where runtime implicit conversion was 1866incorrectly disabled for the ASL operators below. This brings the 1867behavior into compliance with the ACPI specification: 1868 FromBCD 1869 ToBCD 1870 ToDecimalString 1871 ToHexString 1872 ToInteger 1873 ToBuffer 1874 1875Table Manager: Added a new public interface, AcpiPutTable, used to 1876release and free an ACPI table returned by AcpiGetTable and related 1877interfaces. Lv Zheng. 1878 1879Example Code and Data Size: These are the sizes for the OS-independent 1880acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1881debug version of the code includes the debug output trace mechanism and 1882has a much larger code and data size. 1883 1884 Current Release: 1885 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1886 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1887 Previous Release: 1888 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1889 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1890 1891 18922) iASL Compiler/Disassembler and Tools: 1893 1894Disassembler: Fixed a regression for disassembly of Resource Template. 1895Detection of templates in the AML stream missed some types of templates. 1896 1897iASL: Fixed a problem where an Access Size error was returned for the PCC 1898address space when the AccessSize of the GAS register is greater than a 1899DWORD. Hoan Tran. 1900 1901iASL: Implemented several grammar changes for the operators below. These 1902changes are slated for the next version of the ACPI specification: 1903 RefOf - Disallow method invocation as an operand 1904 CondRefOf - Disallow method invocation as an operand 1905 DerefOf - Disallow operands that use the result from operators 1906that 1907 do not return a reference (Changed TermArg to 1908SuperName). 1909 1910iASL: Control method invocations are now allowed for Target operands, as 1911per the ACPI specification. Removed error for using a control method 1912invocation as a Target operand. 1913 1914Disassembler: Improved detection of Resource Templates, Unicode, and 1915Strings within Buffer objects. These subtypes do not contain a specific 1916opcode to indicate the originating ASL code, and they must be detected by 1917other means within the disassembler. 1918 1919iASL: Implemented an optimization improvement for 32-bit ACPI tables 1920(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1921only after 64-bit to 32-bit truncation. A truncation warning message is 1922still emitted, however. 1923 1924AcpiXtract: Implemented handling for both types of line terminators (LF 1925or CR/LF) so that it can accept AcpiDump output files from any system. 1926Peter Wu. 1927 1928AcpiBin: Added two new options for comparing AML files: 1929 -a: compare and display ALL mismatches 1930 -o: start compare at this offset into the second file 1931 1932---------------------------------------- 193330 September 2016. Summary of changes for version 20160930: 1934 1935 19361) ACPICA kernel-resident subsystem: 1937 1938Fixed a regression in the internal AcpiTbFindTable function where a non 1939AE_OK exception could inadvertently be returned even if the function did 1940not fail. This problem affects the following operators: 1941 DataTableRegion 1942 LoadTable 1943 1944Fixed a regression in the LoadTable operator where a load to any 1945namespace location other than the root no longer worked properly. 1946 1947Increased the maximum loop count value that will result in the 1948AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1949prevent infinite loops within the AML interpreter and thus the host OS 1950kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 19511,048,575). 1952 1953Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1954acpixf.h file. This allows hosts to easily configure the maximum loop 1955count at runtime. 1956 1957Removed an illegal character in the strtoul64.c file. This character 1958caused errors with some C compilers. 1959 1960Example Code and Data Size: These are the sizes for the OS-independent 1961acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1962debug version of the code includes the debug output trace mechanism and 1963has a much larger code and data size. 1964 1965 Current Release: 1966 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1967 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1968 Previous Release: 1969 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1970 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1971 1972 19732) iASL Compiler/Disassembler and Tools: 1974 1975Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1976the simpler ASL ElseIf keyword. During the conversion, a trailing If 1977block could be lost and missing from the disassembled output. 1978 1979iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1980the missing rule caused a parse error when using the Index operator as an 1981operand to ObjectType. This construct now compiles properly. Example: 1982 ObjectType(PKG1[4]). 1983 1984iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1985option). Previously, unresolved symbols could cause a protection fault. 1986Such symbols are now marked as unresolved in the map file. 1987 1988iASL: Implemented support to allow control method invocations as an 1989operand to the ASL DeRefOf operator. Example: 1990 DeRefOf(MTH1(Local0)) 1991 1992Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1993possible _PLD buffer now includes examination of both the normal buffer 1994length (16 or 20) as well as the surrounding AML package length. 1995 1996Disassembler: Fixed a problem with the decoding of complex expressions 1997within the Divide operator for ASL+. For the case where both the quotient 1998and remainder targets are specified, the entire statement cannot be 1999disassembled. Previously, the output incorrectly contained a mix of ASL- 2000and ASL+ operators. This mixed statement causes a syntax error when 2001compiled. Example: 2002 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 2003disassembled to: 2004 Divide (INT1 + 6, 128, RSLT, QUOT) 2005 2006iASL/Tools: Added support to process AML and non-AML ACPI tables 2007consistently. For the disassembler and AcpiExec, allow all types of ACPI 2008tables (AML and data tables). For the iASL -e option, allow only AML 2009tables (DSDT/SSDT). 2010 2011---------------------------------------- 201231 August 2016. Summary of changes for version 20160831: 2013 2014 20151) ACPICA kernel-resident subsystem: 2016 2017Improve support for the so-called "module-level code", which is defined 2018to be math, logical and control AML opcodes that appear outside of any 2019control method. This change improves the support by adding more opcodes 2020that can be executed in the manner. Some other issues have been solved, 2021and the ASL grammar changes to support such code under all scope 2022operators (Device, etc.) are complete. Lv Zheng. 2023 2024UEFI support: these OSL functions have been implemented. This is an 2025additional step toward supporting the AcpiExec utility natively (with 2026full hardware access) under UEFI. Marcelo Ferreira. 2027 AcpiOsReadPciConfiguration 2028 AcpiOsWritePciConfiguration 2029 2030Fixed a possible mutex error during control method auto-serialization. Lv 2031Zheng. 2032 2033Updated support for the Generic Address Structure by fully implementing 2034all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 2035Zheng. 2036 2037Updated the return value for the internal _OSI method. Instead of 20380xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 2039for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 2040implementations, and will be reflected and clarified in the next version 2041of the ACPI specification. 2042 2043Implemented two new table events that can be passed to an ACPICA table 2044handler. These events are used to indicate a table installation or 2045uninstallation. These events are used in addition to existed table load 2046and unload events. Lv Zheng. 2047 2048Implemented a cleanup for all internal string-to-integer conversions. 2049Consolidate multiple versions of this functionality and limit possible 2050bases to either 10 or 16 to simplify the code. Adds a new file, 2051utstrtoul64. 2052 2053Cleanup the inclusion order of the various compiler-specific headers. 2054This simplifies build configuration management. The compiler-specific 2055headers are now split out from the host-specific headers. Lv Zheng. 2056 2057Example Code and Data Size: These are the sizes for the OS-independent 2058acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2059debug version of the code includes the debug output trace mechanism and 2060has a much larger code and data size. 2061 2062 Current Release: 2063 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 2064 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 2065 2066 20672) iASL Compiler/Disassembler and Tools: 2068 2069iASL/AcpiExec: Added a command line option to display the build date/time 2070of the tool (-vd). This can be useful to verify that the correct version 2071of the tools are being used. 2072 2073AML Debugger: Implemented a new subcommand ("execute predef") to execute 2074all predefined control methods and names within the current namespace. 2075This can be useful for debugging problems with ACPI tables and the ACPI 2076namespace. 2077 2078---------------------------------------- 207929 July 2016. Summary of changes for version 20160729: 2080 2081 20821) ACPICA kernel-resident subsystem: 2083 2084Implemented basic UEFI support for the various ACPICA tools. This 2085includes: 20861) An OSL to implement the various AcpiOs* interfaces on UEFI. 20872) Support to obtain the ACPI tables on UEFI. 20883) Local implementation of required C library functions not available on 2089UEFI. 20904) A front-end (main) function for the tools for UEFI-related 2091initialization. 2092 2093The initial deployment of this support is the AcpiDump utility executing 2094as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 2095Current environments supported are Linux/Unix. MSVC generation is not 2096supported at this time. See the generate/efi/README file for build 2097instructions. Lv Zheng. 2098 2099Future plans include porting the AcpiExec utility to execute natively on 2100the platform with I/O and memory access. This will allow viewing/dump of 2101the platform namespace and native execution of ACPI control methods that 2102access the actual hardware. To fully implement this support, the OSL 2103functions below must be implemented with UEFI interfaces. Any community 2104help in the implementation of these functions would be appreciated: 2105 AcpiOsReadPort 2106 AcpiOsWritePort 2107 AcpiOsReadMemory 2108 AcpiOsWriteMemory 2109 AcpiOsReadPciConfiguration 2110 AcpiOsWritePciConfiguration 2111 2112Restructured and standardized the C library configuration for ACPICA, 2113resulting in the various configuration options below. This includes a 2114global restructuring of the compiler-dependent and platform-dependent 2115include files. These changes may affect the existing platform-dependent 2116configuration files on some hosts. Lv Zheng. 2117 2118The current C library configuration options appear below. For any issues, 2119it may be helpful to examine the existing compiler-dependent and 2120platform-dependent files as examples. Lv Zheng. 2121 21221) Linux kernel: 2123 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2124library. 2125 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 21262) Unix/Windows/BSD applications: 2127 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 2128library. 2129 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 21303) UEFI applications: 2131 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 2132library. 2133 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 21344) UEFI applications (EDK2/StdLib): 2135 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2136 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2137 2138 2139AML interpreter: "module-level code" support. Allows for execution of so- 2140called "executable" AML code (math/logical operations, etc.) outside of 2141control methods not just at the module level (top level) but also within 2142any scope declared outside of a control method - Scope{}, Device{}, 2143Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2144 2145Simplified the configuration of the "maximum AML loops" global option by 2146adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2147modified at runtime. 2148 2149 2150Example Code and Data Size: These are the sizes for the OS-independent 2151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2152debug version of the code includes the debug output trace mechanism and 2153has a much larger code and data size. 2154 2155 Current Release: 2156 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2157 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2158 2159 21602) iASL Compiler/Disassembler and Tools: 2161 2162iASL: Add full support for the RASF ACPI table (RAS Features Table). 2163Includes disassembler, data table compiler, and header support. 2164 2165iASL Expand "module-level code" support. Allows for 2166compilation/disassembly of so-called "executable" AML code (math/logical 2167operations, etc.) outside of control methods not just at the module level 2168(top level) but also within any scope declared outside of a control 2169method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2170ThermalZone{}. 2171 2172AcpiDump: Added support for dumping all SSDTs on newer versions of 2173Windows. These tables are now easily available -- SSDTs are not available 2174through the registry on older versions. 2175 2176---------------------------------------- 217727 May 2016. Summary of changes for version 20160527: 2178 2179 21801) ACPICA kernel-resident subsystem: 2181 2182Temporarily reverted the new arbitrary bit length/alignment support in 2183AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2184a number of regressions with the new code that need to be fully resolved 2185and tested before this support can be finally integrated into ACPICA. 2186Apologies for any inconveniences these issues may have caused. 2187 2188The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2189ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2190and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2191 2192Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2193option. Adds a new return macro, return_STR. Junk-uk Kim. 2194 2195Example Code and Data Size: These are the sizes for the OS-independent 2196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2197debug version of the code includes the debug output trace mechanism and 2198has a much larger code and data size. 2199 2200 Current Release: 2201 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2202 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2203 Previous Release: 2204 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2205 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2206 2207---------------------------------------- 220822 April 2016. Summary of changes for version 20160422: 2209 22101) ACPICA kernel-resident subsystem: 2211 2212Fixed a regression in the GAS (generic address structure) arbitrary bit 2213support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2214and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2215 2216ACPI 6.0: Added support for new/renamed resource macros. One new argument 2217was added to each of these macros, and the original name has been 2218deprecated. The AML disassembler will always disassemble to the new 2219names. Support for the new macros was added to iASL, disassembler, 2220resource manager, and the acpihelp utility. ACPICA BZ 1274. 2221 2222 I2cSerialBus -> I2cSerialBusV2 2223 SpiSerialBus -> SpiSerialBusV2 2224 UartSerialBus -> UartSerialBusV2 2225 2226ACPI 6.0: Added support for a new integer field that was appended to the 2227package object returned by the _BIX method. This adds iASL compile-time 2228and AML runtime error checking. ACPICA BZ 1273. 2229 2230ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2231Subspace Type2" (Headers, Disassembler, and data table compiler). 2232 2233Example Code and Data Size: These are the sizes for the OS-independent 2234acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2235debug version of the code includes the debug output trace mechanism and 2236has a much larger code and data size. 2237 2238 Current Release: 2239 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2240 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2241 Previous Release: 2242 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2243 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2244 2245 22462) iASL Compiler/Disassembler and Tools: 2247 2248iASL: Implemented an ASL grammar extension to allow/enable executable 2249"module-level code" to be created and executed under the various 2250operators that create new scopes. This type of AML code is already 2251supported in all known AML interpreters, and the grammar change will 2252appear in the next version of the ACPI specification. Simplifies the 2253conditional runtime creation of named objects under these object types: 2254 2255 Device 2256 PowerResource 2257 Processor 2258 Scope 2259 ThermalZone 2260 2261iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2262ease-of-use to the ASL language. The syntax is similar to the 2263corresponding C operator, and is implemented with the existing AML While 2264opcode -- thus requiring no changes to existing AML interpreters. 2265 2266 For (Initialize, Predicate, Update) {TermList} 2267 2268Grammar: 2269 ForTerm := 2270 For ( 2271 Initializer // Nothing | TermArg => ComputationalData 2272 Predicate // Nothing | TermArg => ComputationalData 2273 Update // Nothing | TermArg => ComputationalData 2274 ) {TermList} 2275 2276 2277iASL: The _HID/_ADR detection and validation has been enhanced to search 2278under conditionals in order to allow these objects to be conditionally 2279created at runtime. 2280 2281iASL: Fixed several issues with the constant folding feature. The 2282improvement allows better detection and resolution of statements that can 2283be folded at compile time. ACPICA BZ 1266. 2284 2285iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2286conversion to the ASL ElseIf operator where incorrect ASL code could be 2287generated. 2288 2289iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2290sometimes an extra (and extraneous) set of parentheses were emitted for 2291some combinations of operators. Although this did not cause any problems 2292with recompilation of the disassembled code, it made the code more 2293difficult to read. David Box. ACPICA BZ 1231. 2294 2295iASL: Changed to ignore the unreferenced detection for predefined names 2296of resource descriptor elements, when the resource descriptor is 2297created/defined within a control method. 2298 2299iASL: Disassembler: Fix a possible fault with externally declared Buffer 2300objects. 2301 2302---------------------------------------- 230318 March 2016. Summary of changes for version 20160318: 2304 23051) ACPICA kernel-resident subsystem: 2306 2307Added support for arbitrary bit lengths and bit offsets for registers 2308defined by the Generic Address Structure. Previously, only aligned bit 2309lengths of 8/16/32/64 were supported. This was sufficient for many years, 2310but recently some machines have been seen that require arbitrary bit- 2311level support. ACPICA BZ 1240. Lv Zheng. 2312 2313Fixed an issue where the \_SB._INI method sometimes must be evaluated 2314before any _REG methods are evaluated. Lv Zheng. 2315 2316Implemented several changes related to ACPI table support 2317(Headers/Disassembler/TableCompiler): 2318NFIT: For ACPI 6.1, updated to add some additional new fields and 2319constants. 2320FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 23216). 2322DMAR: Added new constants per the 10/2014 DMAR spec. 2323IORT: Added new subtable per the 10/2015 IORT spec. 2324HEST: For ACPI 6.1, added new constants and new subtable. 2325DBG2: Added new constants per the 12/2015 DBG2 spec. 2326FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2327ACPICA BZ 1249. 2328ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2329 2330Updated header support for the DMAR table to match the current version of 2331the related spec. 2332 2333Added extensions to the ASL Concatenate operator to allow any ACPI object 2334to be passed as an operand. Any object other than Integer/String/Buffer 2335simply returns a string containing the object type. This extends the 2336usefulness of the Printf macros. Previously, Concatenate would abort the 2337control method if a non-data object was encountered. 2338 2339ACPICA source code: Deployed the C "const" keyword across the source code 2340where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2341 2342Example Code and Data Size: These are the sizes for the OS-independent 2343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2344debug version of the code includes the debug output trace mechanism and 2345has a much larger code and data size. 2346 2347 Current Release: 2348 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2349 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2350 Previous Release: 2351 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2352 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2353 2354 23552) iASL Compiler/Disassembler and Tools: 2356 2357iASL/Disassembler: Improved the heuristic used to determine the number of 2358arguments for an externally defined control method (a method in another 2359table). Although this is an improvement, there is no deterministic way to 2360"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2361will completely solve this problem as it is deployed (automatically) in 2362newer BIOS code. 2363 2364iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2365statements that could cause errors when the disassembled file is 2366compiled. ACPICA BZ 1243. David Box. 2367 2368iASL: Fixed a regression caused by the merger of the two versions of the 2369local strtoul64. Because of a dependency on a global variable, strtoul64 2370could return an error for integers greater than a 32-bit value. ACPICA BZ 23711260. 2372 2373iASL: Fixed a regression where a fault could occur for an ASL Return 2374statement if it invokes a control method that is not resolved. ACPICA BZ 23751264. 2376 2377AcpiXtract: Improved input file validation: detection of binary files and 2378non-acpidump text files. 2379 2380---------------------------------------- 238112 February 2016. Summary of changes for version 20160212: 2382 23831) ACPICA kernel-resident subsystem: 2384 2385Implemented full support for the ACPI 6.1 specification (released in 2386January). This version of the specification is available at: 2387http://www.uefi.org/specifications 2388 2389Only a relatively small number of changes were required in ACPICA to 2390support ACPI 6.1, in these areas: 2391- New predefined names 2392- New _HID values 2393- A new subtable for HEST 2394- A few other header changes for new values 2395 2396Ensure \_SB_._INI is executed before any _REG methods are executed. There 2397appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2398 2399Reverted a change made in version 20151218 which enabled method 2400invocations to be targets of various ASL operators (SuperName and Target 2401grammar elements). While the new behavior is supported by the ACPI 2402specification, other AML interpreters do not support this behavior and 2403never will. The ACPI specification will be updated for ACPI 6.2 to remove 2404this support. Therefore, the change was reverted to the original ACPICA 2405behavior. 2406 2407ACPICA now supports the GCC 6 compiler. 2408 2409Current Release: (Note: build changes increased sizes) 2410 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2411 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2412Previous Release: 2413 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2414 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2415 2416 24172) iASL Compiler/Disassembler and Tools: 2418 2419Completed full support for the ACPI 6.0 External() AML opcode. The 2420compiler emits an external AML opcode for each ASL External statement. 2421This opcode is used by the disassembler to assist with the disassembly of 2422external control methods by specifying the required number of arguments 2423for the method. AML interpreters do not use this opcode. To ensure that 2424interpreters do not even see the opcode, a block of one or more external 2425opcodes is surrounded by an "If(0)" construct. As this feature becomes 2426commonly deployed in BIOS code, the ability of disassemblers to correctly 2427disassemble AML code will be greatly improved. David Box. 2428 2429iASL: Implemented support for an optional cross-reference output file. 2430The -lx option will create a the cross-reference file with the suffix 2431"xrf". Three different types of cross-reference are created in this file: 2432- List of object references made from within each control method 2433- Invocation (caller) list for each user-defined control method 2434- List of references to each non-method object in the namespace 2435 2436iASL: Method invocations as ASL Target operands are now disallowed and 2437flagged as errors in preparation for ACPI 6.2 (see the description of the 2438problem above). 2439 2440---------------------------------------- 24418 January 2016. Summary of changes for version 20160108: 2442 24431) ACPICA kernel-resident subsystem: 2444 2445Updated all ACPICA copyrights and signons to 2016: Added the 2016 2446copyright to all source code module headers and utility/tool signons. 2447This includes the standard Linux dual-license header. This affects 2448virtually every file in the ACPICA core subsystem, iASL compiler, all 2449ACPICA utilities, and the ACPICA test suite. 2450 2451Fixed a regression introduced in version 20151218 concerning the 2452execution of so-called module-level ASL/AML code. Namespace objects 2453created under a module-level If() construct were not properly/fully 2454entered into the namespace and could cause an interpreter fault when 2455accessed. 2456 2457Example Code and Data Size: These are the sizes for the OS-independent 2458acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2459debug version of the code includes the debug output trace mechanism and 2460has a much larger code and data size. 2461 2462Current Release: 2463 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2464 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2465 Previous Release: 2466 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2467 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2468 2469 24702) iASL Compiler/Disassembler and Tools: 2471 2472Fixed a problem with the compilation of the GpioIo and GpioInt resource 2473descriptors. The _PIN field name was incorrectly defined to be an array 2474of 32-bit values, but the _PIN values are in fact 16 bits each. This 2475would cause incorrect bit width warnings when using Word (16-bit) fields 2476to access the descriptors. 2477 2478 2479---------------------------------------- 248018 December 2015. Summary of changes for version 20151218: 2481 24821) ACPICA kernel-resident subsystem: 2483 2484Implemented per-AML-table execution of "module-level code" as individual 2485ACPI tables are loaded into the namespace during ACPICA initialization. 2486In other words, any module-level code within an AML table is executed 2487immediately after the table is loaded, instead of batched and executed 2488after all of the tables have been loaded. This provides compatibility 2489with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2490David Box. 2491 2492To fully support the feature above, the default operation region handlers 2493for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2494installed before any ACPI tables are loaded. This enables module-level 2495code to access these address spaces during the table load and module- 2496level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2497Box. 2498 2499Implemented several changes to the internal _REG support in conjunction 2500with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2501utilities for the changes above. Although these tools were changed, host 2502operating systems that simply use the default handlers for SystemMemory, 2503SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2504 2505For example, in the code below, DEV1 is conditionally added to the 2506namespace by the DSDT via module-level code that accesses an operation 2507region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2508created immediately after the DSDT is loaded in order for the SSDT to 2509successfully reference DEV1. Previously, this code would cause an 2510AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2511fully supported by ACPICA. 2512 2513 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2514 { 2515 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2516 Field (OPR1, AnyAcc, NoLock, Preserve) 2517 { 2518 FLD1, 1 2519 } 2520 If (FLD1) 2521 { 2522 Device (\DEV1) 2523 { 2524 } 2525 } 2526 } 2527 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2528 { 2529 External (\DEV1, DeviceObj) 2530 Scope (\DEV1) 2531 { 2532 } 2533 } 2534 2535Fixed an AML interpreter problem where control method invocations were 2536not handled correctly when the invocation was itself a SuperName argument 2537to another ASL operator. In these cases, the method was not invoked. 2538ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 2539argument: 2540 Store 2541 Acquire, Wait 2542 CondRefOf, RefOf 2543 Decrement, Increment 2544 Load, Unload 2545 Notify 2546 Signal, Release, Reset 2547 SizeOf 2548 2549Implemented automatic String-to-ObjectReference conversion support for 2550packages returned by predefined names (such as _DEP). A common BIOS error 2551is to add double quotes around an ObjectReference namepath, which turns 2552the reference into an unexpected string object. This support detects the 2553problem and corrects it before the package is returned to the caller that 2554invoked the method. Lv Zheng. 2555 2556Implemented extensions to the Concatenate operator. Concatenate now 2557accepts any type of object, it is not restricted to simply 2558Integer/String/Buffer. For objects other than these 3 basic data types, 2559the argument is treated as a string containing the name of the object 2560type. This expands the utility of Concatenate and the Printf/Fprintf 2561macros. ACPICA BZ 1222. 2562 2563Cleaned up the output of the ASL Debug object. The timer() value is now 2564optional and no longer emitted by default. Also, the basic data types of 2565Integer/String/Buffer are simply emitted as their values, without a data 2566type string -- since the data type is obvious from the output. ACPICA BZ 25671221. 2568 2569Example Code and Data Size: These are the sizes for the OS-independent 2570acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2571debug version of the code includes the debug output trace mechanism and 2572has a much larger code and data size. 2573 2574 Current Release: 2575 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2576 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2577 Previous Release: 2578 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2579 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2580 2581 25822) iASL Compiler/Disassembler and Tools: 2583 2584iASL: Fixed some issues with the ASL Include() operator. This operator 2585was incorrectly defined in the iASL parser rules, causing a new scope to 2586be opened for the code within the include file. This could lead to 2587several issues, including allowing ASL code that is technically illegal 2588and not supported by AML interpreters. Note, this does not affect the 2589related #include preprocessor operator. ACPICA BZ 1212. 2590 2591iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 2592operator is essentially an ASL macro since there is no AML opcode 2593associated with it. The code emitted by the iASL compiler for ElseIf is 2594an Else opcode followed immediately by an If opcode. The disassembler 2595will now emit an ElseIf if it finds an Else immediately followed by an 2596If. This simplifies the decoded ASL, especially for deeply nested 2597If..Else and large Switch constructs. Thus, the disassembled code more 2598closely follows the original source ASL. ACPICA BZ 1211. Example: 2599 2600 Old disassembly: 2601 Else 2602 { 2603 If (Arg0 == 0x02) 2604 { 2605 Local0 = 0x05 2606 } 2607 } 2608 2609 New disassembly: 2610 ElseIf (Arg0 == 0x02) 2611 { 2612 Local0 = 0x05 2613 } 2614 2615AcpiExec: Added support for the new module level code behavior and the 2616early region installation. This required a small change to the 2617initialization, since AcpiExec must install its own operation region 2618handlers. 2619 2620AcpiExec: Added support to make the debug object timer optional. Default 2621is timer disabled. This cleans up the debug object output -- the timer 2622data is rarely used. 2623 2624AcpiExec: Multiple ACPI tables are now loaded in the order that they 2625appear on the command line. This can be important when there are 2626interdependencies/references between the tables. 2627 2628iASL/Templates. Add support to generate template files with multiple 2629SSDTs within a single output file. Also added ommand line support to 2630specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 26311223, 1225. 2632 2633 2634---------------------------------------- 263524 November 2015. Summary of changes for version 20151124: 2636 26371) ACPICA kernel-resident subsystem: 2638 2639Fixed a possible regression for a previous update to FADT handling. The 2640FADT no longer has a fixed table ID, causing some issues with code that 2641was hardwired to a specific ID. Lv Zheng. 2642 2643Fixed a problem where the method auto-serialization could interfere with 2644the current SyncLevel. This change makes the auto-serialization support 2645transparent to the SyncLevel support and management. 2646 2647Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2648interface is intended for early access to the namespace during the 2649initial namespace device discovery walk. The _SUB method has been seen to 2650access operation regions in some cases, causing errors because the 2651operation regions are not fully initialized. 2652 2653AML Debugger: Fixed some issues with the terminate/quit/exit commands 2654that can cause faults. Lv Zheng. 2655 2656AML Debugger: Add thread ID support so that single-step mode only applies 2657to the AML Debugger thread. This prevents runtime errors within some 2658kernels. Lv Zheng. 2659 2660Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2661methods that are invoked by this interface are optional, removed warnings 2662emitted for the case where one or more of these methods do not exist. 2663ACPICA BZ 1208, original change by Prarit Bhargava. 2664 2665Made a major pass through the entire ACPICA source code base to 2666standardize formatting that has diverged a bit over time. There are no 2667functional changes, but this will of course cause quite a few code 2668differences from the previous ACPICA release. 2669 2670Example Code and Data Size: These are the sizes for the OS-independent 2671acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2672debug version of the code includes the debug output trace mechanism and 2673has a much larger code and data size. 2674 2675 Current Release: 2676 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2677 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2678 Previous Release: 2679 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2680 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2681 2682 26832) iASL Compiler/Disassembler and Tools: 2684 2685iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2686definition blocks within a single ASL file and the resulting AML file. 2687Support for this type of file was also added to the various tools that 2688use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2689example code below shows two definition blocks within the same file: 2690 2691 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 26920x12345678) 2693 { 2694 } 2695 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2696 { 2697 } 2698 2699iASL: Enhanced typechecking for the Name() operator. All expressions for 2700the value of the named object must be reduced/folded to a single constant 2701at compile time, as per the ACPI specification (the AML definition of 2702Name()). 2703 2704iASL: Fixed some code indentation issues for the -ic and -ia options (C 2705and assembly headers). Now all emitted code correctly begins in column 1. 2706 2707iASL: Added an error message for an attempt to open a Scope() on an 2708object defined in an SSDT. The DSDT is always loaded into the namespace 2709first, so any attempt to open a Scope on an SSDT object will fail at 2710runtime. 2711 2712 2713---------------------------------------- 271430 September 2015. Summary of changes for version 20150930: 2715 27161) ACPICA kernel-resident subsystem: 2717 2718Debugger: Implemented several changes and bug fixes to assist support for 2719the in-kernel version of the AML debugger. Lv Zheng. 2720- Fix the "predefined" command for in-kernel debugger. 2721- Do not enter debug command loop for the help and version commands. 2722- Disallow "execute" command during execution/single-step of a method. 2723 2724Interpreter: Updated runtime typechecking for all operators that have 2725target operands. The operand is resolved and validated that it is legal. 2726For example, the target cannot be a non-data object such as a Device, 2727Mutex, ThermalZone, etc., as per the ACPI specification. 2728 2729Debugger: Fixed the double-mutex user I/O handshake to work when local 2730deadlock detection is enabled. 2731 2732Debugger: limited display of method locals and arguments (LocalX and 2733ArgX) to only those that have actually been initialized. This prevents 2734lines of extraneous output. 2735 2736Updated the definition of the NFIT table to correct the bit polarity of 2737one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2738 2739Example Code and Data Size: These are the sizes for the OS-independent 2740acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2741debug version of the code includes the debug output trace mechanism and 2742has a much larger code and data size. 2743 2744 Current Release: 2745 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2746 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2747 Previous Release: 2748 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2749 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2750 2751 27522) iASL Compiler/Disassembler and Tools: 2753 2754iASL: Improved the compile-time typechecking for operands of many of the 2755ASL operators: 2756 2757-- Added an option to disable compiler operand/operator typechecking (- 2758ot). 2759 2760-- For the following operators, the TermArg operands are now validated 2761when possible to be Integer data objects: BankField, OperationRegion, 2762DataTableRegion, Buffer, and Package. 2763 2764-- Store (Source, Target): Both the source and target operands are 2765resolved and checked that the operands are both legal. For example, 2766neither operand can be a non-data object such as a Device, Mutex, 2767ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2768operator can be used to store an object to any type of target object. 2769 2770-- Store (Source, Target): If the source is a Package object, the target 2771must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2772is a Package, the source must also be a Package. 2773 2774-- Store (Source, Target): A warning is issued if the source and target 2775resolve to the identical named object. 2776 2777-- Store (Source, <method invocation>): An error is generated for the 2778target method invocation, as this construct is not supported by the AML 2779interpreter. 2780 2781-- For all ASL math and logic operators, the target operand must be a 2782data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2783includes the function return value also. 2784 2785-- External declarations are also included in the typechecking where 2786possible. External objects defined using the UnknownObj keyword cannot be 2787typechecked, however. 2788 2789iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2790operator: 2791- Legacy code: Index(PKG1, 3) 2792- New ASL+ code: PKG1[3] 2793This completes the ACPI 6.0 ASL+ support as it was the only operator not 2794supported. 2795 2796iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2797spaces were inadvertently appended to the filename, causing file access 2798and deletion problems on some systems. 2799 2800ASL Test Suite (ASLTS): Updated the master makefile to generate all 2801possible compiler output files when building the test suite -- thus 2802exercising these features of the compiler. These files are automatically 2803deleted when the test suite exits. 2804 2805 2806---------------------------------------- 280718 August 2015. Summary of changes for version 20150818: 2808 28091) ACPICA kernel-resident subsystem: 2810 2811Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2812Zheng. ACPICA BZ 1186. 2813 2814Completed development to ensure that the ACPICA Disassembler and Debugger 2815are fully standalone components of ACPICA. Removed cross-component 2816dependences. Lv Zheng. 2817 2818The max-number-of-AML-loops is now runtime configurable (previously was 2819compile-time only). This is essentially a loop timeout to force-abort 2820infinite AML loops. ACPCIA BZ 1192. 2821 2822Debugger: Cleanup output to dump ACPI names and namepaths without any 2823trailing underscores. Lv Zheng. ACPICA BZ 1135. 2824 2825Removed unnecessary conditional compilations across the Debugger and 2826Disassembler components where entire modules could be left uncompiled. 2827 2828The aapits test is deprecated and has been removed from the ACPICA git 2829tree. The test has never been completed and has not been maintained, thus 2830becoming rather useless. ACPICA BZ 1015, 794. 2831 2832A batch of small changes to close bugzilla and other reports: 2833- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2834- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2835- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2836- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2837Moore. 2838- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2839ACPICA BZ 1184. 2840- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2841operators. 2842- Debugger: Split debugger initialization/termination interfaces. Lv 2843Zheng. 2844- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2845identification. 2846- AcpiExec: Add debug message during _REG method phase during table 2847load/init. 2848- AcpiNames: Fix a regression where some output was missing and no longer 2849emitted. 2850- Debugger: General cleanup and simplification. Lv Zheng. 2851- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2852 2853Example Code and Data Size: These are the sizes for the OS-independent 2854acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2855debug version of the code includes the debug output trace mechanism and 2856has a much larger code and data size. 2857 2858 Current Release: 2859 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2860 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2861 Previous Release: 2862 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2863 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2864 2865 28662) iASL Compiler/Disassembler and Tools: 2867 2868AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2869were not handled properly and caused load errors. Now, properly invoke 2870and use the ACPICA auto-reallocate mechanism for ACPI table data 2871structures. ACPICA BZ 1188 2872 2873AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2874BZ 1190. 2875 2876AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2877AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2878executed during initialization. ACPICA BZ 1187, 1189. 2879 2880iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2881that corresponds to each disassembled ASL statement, to simplify 2882debugging. ACPICA BZ 1191. 2883 2884Debugger: Add option to the "objects" command to display a summary of the 2885current namespace objects (Object type and count). This is displayed if 2886the command is entered with no arguments. 2887 2888AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2889 2890 2891---------------------------------------- 289217 July 2015. Summary of changes for version 20150717: 2893 28941) ACPICA kernel-resident subsystem: 2895 2896Improved the partitioning between the Debugger and Disassembler 2897components. This allows the Debugger to be used standalone within kernel 2898code without the Disassembler (which is used for single stepping also). 2899This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2900 2901Debugger: Implemented a new command to trace the execution of control 2902methods (Trace). This is especially useful for the in-kernel version of 2903the debugger when file I/O may not be available for method trace output. 2904See the ACPICA reference for more information. Lv Zheng. 2905 2906Moved all C library prototypes (used for the local versions of these 2907functions when requested) to a new header, acclib.h 2908Cleaned up the use of non-ANSI C library functions. These functions are 2909implemented locally in ACPICA. Moved all such functions to a common 2910source file, utnonansi.c 2911 2912Debugger: Fixed a problem with the "!!" command (get last command 2913executed) where the debugger could enter an infinite loop and eventually 2914crash. 2915 2916Removed the use of local macros that were used for some of the standard C 2917library functions to automatically cast input parameters. This mostly 2918affected the is* functions where the input parameter is defined to be an 2919int. This required a few modifications to the main ACPICA source code to 2920provide casting for these functions and eliminate possible compiler 2921warnings for these parameters. 2922 2923Across the source code, added additional status/error checking to resolve 2924issues discovered by static source code analysis tools such as Coverity. 2925 2926Example Code and Data Size: These are the sizes for the OS-independent 2927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2928debug version of the code includes the debug output trace mechanism and 2929has a much larger code and data size. 2930 2931 Current Release: 2932 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2933 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2934 Previous Release: 2935 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2936 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2937 2938 29392) iASL Compiler/Disassembler and Tools: 2940 2941iASL: Fixed a regression where the device map file feature no longer 2942worked properly when used in conjunction with the disassembler. It only 2943worked properly with the compiler itself. 2944 2945iASL: Implemented a new warning for method LocalX variables that are set 2946but never used (similar to a C compiler such as gcc). This also applies 2947to ArgX variables that are not defined by the parent method, and are 2948instead (legally) used as local variables. 2949 2950iASL/Preprocessor: Finished the pass-through of line numbers from the 2951preprocessor to the compiler. This ensures that compiler errors/warnings 2952have the correct original line numbers and filenames, regardless of any 2953#include files. 2954 2955iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2956pass-through of comments to the preprocessor output file (which becomes 2957the compiler input file). Also fixed a problem with // comments that 2958appear after a math expression. 2959 2960iASL: Added support for the TCPA server table to the table compiler and 2961template generator. (The client table was already previously supported) 2962 2963iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2964identify the iASL compiler. 2965 2966Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2967multiple times. The new names are ACPI_SIGN_NEGATIVE and 2968ACPI_SIGN_POSITIVE. 2969 2970AcpiHelp: Update to expand help messages for the iASL preprocessor 2971directives. 2972 2973 2974---------------------------------------- 297519 June 2015. Summary of changes for version 20150619: 2976 2977Two regressions in version 20150616 have been addressed: 2978 2979Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2980etc.) This update changes ACPICA to only use the standard headers for 2981functions, or the prototypes for the local versions of the C library 2982functions. Across the source code, this required some additional casts 2983for some Clib invocations for portability. Moved all local prototypes to 2984a new file, acclib.h 2985 2986Fixes several problems with recent changes to the handling of the FACS 2987table that could cause some systems not to boot. 2988 2989 2990---------------------------------------- 299116 June 2015. Summary of changes for version 20150616: 2992 2993 29941) ACPICA kernel-resident subsystem: 2995 2996Across the entire ACPICA source code base, the various macros for the C 2997library functions (such as ACPI_STRLEN, etc.) have been removed and 2998replaced by the standard C library names (strlen, etc.) The original 2999purpose for these macros is no longer applicable. This simplification 3000reduces the number of macros used in the ACPICA source code 3001significantly, improving readability and maintainability. 3002 3003Implemented support for a new ACPI table, the OSDT. This table, the 3004"override" SDT, can be loaded directly by the host OS at boot time. It 3005enables the replacement of existing namespace objects that were installed 3006via the DSDT and/or SSDTs. The primary purpose for this is to replace 3007buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 3008for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 3009Moore. 3010 3011Added support for systems with (improperly) two FACS tables -- a "32-bit" 3012table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 3013X field). This change will support both automatically. There continues to 3014be systems found with this issue. This support requires a change to the 3015AcpiSetFirmwareWakingVector interface. Also, a public global variable has 3016been added to allow the host to select which FACS is desired 3017(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 3018details Lv Zheng. 3019 3020Added a new feature to allow for systems that do not contain an FACS. 3021Although this is already supported on hardware-reduced platforms, the 3022feature has been extended for all platforms. The reasoning is that we do 3023not want to abort the entire ACPICA initialization just because the 3024system is seriously buggy and has no FACS. 3025 3026Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 3027not correctly transcribed from the ACPI specification in ACPICA version 302820150515. 3029 3030Implemented support for the _CLS object in the AcpiGetObjectInfo external 3031interface. 3032 3033Updated the definitions of the TCPA and TPM2 ACPI tables to the more 3034recent TCG ACPI Specification, December 14, 2014. Table disassembler and 3035compiler also updated. Note: The TCPA "server" table is not supported by 3036the disassembler/table-compiler at this time. 3037 3038ACPI 6.0: Added definitions for the new GIC version field in the MADT. 3039 3040Example Code and Data Size: These are the sizes for the OS-independent 3041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3042debug version of the code includes the debug output trace mechanism and 3043has a much larger code and data size. 3044 3045 Current Release: 3046 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 3047 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 3048 Previous Release: 3049 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3050 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3051 3052 30532) iASL Compiler/Disassembler and Tools: 3054 3055Disassembler: Fixed a problem with the new symbolic operator disassembler 3056where incorrect ASL code could be emitted in some cases for the "non- 3057commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 3058ShiftRight. The actual problem cases seem to be rather unusual in common 3059ASL code, however. David Box. 3060 3061Modified the linux version of acpidump to obtain ACPI tables from not 3062just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 3063Zheng. 3064 3065iASL: Fixed a problem where the user preprocessor output file (.i) 3066contained extra data that was not expected. The compiler was using this 3067file as a temporary file and passed through #line directives in order to 3068keep compiler error messages in sync with the input file and line number 3069across multiple include files. The (.i) is no longer a temporary file as 3070the compiler uses a new, different file for the original purpose. 3071 3072iASL: Fixed a problem where comments within the original ASL source code 3073file were not passed through to the preprocessor output file, nor any 3074listing files. 3075 3076iASL: Fixed some issues for the handling of the "#include" preprocessor 3077directive and the similar (but not the same) "Include" ASL operator. 3078 3079iASL: Add support for the new OSDT in both the disassembler and compiler. 3080 3081iASL: Fixed a problem with the constant folding support where a Buffer 3082object could be incorrectly generated (incorrectly formed) during a 3083conversion to a Store() operator. 3084 3085AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 3086description text for the _REV predefined name. _REV now permanently 3087returns 2, as per the ACPI 6.0 specification. 3088 3089Debugger: Enhanced the output of the Debug ASL object for references 3090produced by the Index operator. For Buffers and strings, only output the 3091actual byte pointed to by the index. For packages, only print the single 3092package element decoded by the index. Previously, the entire 3093buffer/string/package was emitted. 3094 3095iASL/Table-compiler: Fixed a regression where the "generic" data types 3096were no longer recognized, causing errors. 3097 3098 3099---------------------------------------- 310015 May 2015. Summary of changes for version 20150515: 3101 3102This release implements most of ACPI 6.0 as described below. 3103 31041) ACPICA kernel-resident subsystem: 3105 3106Implemented runtime argument checking and return value checking for all 3107new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 3108_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 3109 3110Example Code and Data Size: These are the sizes for the OS-independent 3111acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3112debug version of the code includes the debug output trace mechanism and 3113has a much larger code and data size. 3114 3115 Current Release: 3116 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 3117 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 3118 Previous Release: 3119 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3120 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3121 3122 31232) iASL Compiler/Disassembler and Tools: 3124 3125iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 3126names (argument count validation and return value typechecking.) 3127 3128iASL disassembler and table compiler: implemented support for all new 3129ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 3130 3131iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 3132tables: FADT, MADT. 3133 3134iASL preprocessor: Added a new directive to enable inclusion of binary 3135blobs into ASL code. The new directive is #includebuffer. It takes a 3136binary file as input and emits a named ascii buffer object into the ASL 3137code. 3138 3139AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3140 3141AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3142directives. 3143 3144AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3145tables. 3146 3147 3148---------------------------------------- 314910 April 2015. Summary of changes for version 20150410: 3150 3151Reverted a change introduced in version 20150408 that caused 3152a regression in the disassembler where incorrect operator 3153symbols could be emitted. 3154 3155 3156---------------------------------------- 315708 April 2015. Summary of changes for version 20150408: 3158 3159 31601) ACPICA kernel-resident subsystem: 3161 3162Permanently set the return value for the _REV predefined name. It now 3163returns 2 (was 5). This matches other ACPI implementations. _REV will be 3164deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3165for ACPI 2.0 and later. It should never be used to differentiate or 3166identify operating systems. 3167 3168Added the "Windows 2015" string to the _OSI support. ACPICA will now 3169return TRUE to a query with this string. 3170 3171Fixed several issues with the local version of the printf function. 3172 3173Added the C99 compiler option (-std=c99) to the Unix makefiles. 3174 3175 Current Release: 3176 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3177 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3178 Previous Release: 3179 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3180 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3181 3182 31832) iASL Compiler/Disassembler and Tools: 3184 3185iASL: Implemented an enhancement to the constant folding feature to 3186transform the parse tree to a simple Store operation whenever possible: 3187 Add (2, 3, X) ==> is converted to: Store (5, X) 3188 X = 2 + 3 ==> is converted to: Store (5, X) 3189 3190Updated support for the SLIC table (Software Licensing Description Table) 3191in both the Data Table compiler and the disassembler. The SLIC table 3192support now conforms to "Microsoft Software Licensing Tables (SLIC and 3193MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3194following the ACPI header is now defined to be "Proprietary Data", and as 3195such, can only be entered or displayed as a hex data block. 3196 3197Implemented full support for the MSDM table as described in the document 3198above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3199following the ACPI header is defined to be "Proprietary Data", and can 3200only be entered or displayed as a hex data block. 3201 3202Implemented the -Pn option for the iASL Table Compiler (was only 3203implemented for the ASL compiler). This option disables the iASL 3204preprocessor. 3205 3206Disassembler: For disassembly of Data Tables, added a comment field 3207around the Ascii equivalent data that is emitted as part of the "Raw 3208Table Data" block. This prevents the iASL Preprocessor from possible 3209confusion if/when the table is compiled. 3210 3211Disassembler: Added an option (-df) to force the disassembler to assume 3212that the table being disassembled contains valid AML. This feature is 3213useful for disassembling AML files that contain ACPI signatures other 3214than DSDT or SSDT (such as OEMx or other signatures). 3215 3216Changes for the EFI version of the tools: 32171) Fixed a build error/issue 32182) Fixed a cast warning 3219 3220iASL: Fixed a path issue with the __FILE__ operator by making the 3221directory prefix optional within the internal SplitInputFilename 3222function. 3223 3224Debugger: Removed some unused global variables. 3225 3226Tests: Updated the makefile for proper generation of the AAPITS suite. 3227 3228 3229---------------------------------------- 323004 February 2015. Summary of changes for version 20150204: 3231 3232ACPICA kernel-resident subsystem: 3233 3234Updated all ACPICA copyrights and signons to 2014. Added the 2014 3235copyright to all module headers and signons, including the standard Linux 3236header. This affects virtually every file in the ACPICA core subsystem, 3237iASL compiler, all ACPICA utilities, and the test suites. 3238 3239Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3240A raw gpe handling mechanism was created to allow better handling of GPE 3241storms that aren't easily managed by the normal handler. The raw handler 3242allows disabling/renabling of the the GPE so that interrupt storms can be 3243avoided in cases where events cannot be timely serviced. In this 3244scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3245GPE. This API will leave the reference counts undisturbed, thereby 3246preventing unintentional clearing of the GPE when the intent in only to 3247temporarily disable it. Raw handlers allow enabling and disabling of a 3248GPE by removing GPE register locking. As such, raw handlers much provide 3249their own locks while using GPE API's to protect access to GPE data 3250structures. 3251Lv Zheng 3252 3253Events: Always modify GPE registers under the GPE lock. 3254Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3255values. Reported as bug by joe.liu@apple.com. 3256 3257Unix makefiles: Separate option to disable optimizations and 3258_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3259NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3260purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3261errors when building ACPICA. This allows disabling the option without 3262also having to disable optimazations. 3263David Box 3264 3265 Current Release: 3266 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3267 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3268 3269-- 3270-------------------------------------- 327107 November 2014. Summary of changes for version 20141107: 3272 3273This release is available at https://acpica.org/downloads 3274 3275This release introduces and implements language extensions to ASL that 3276provide support for symbolic ("C-style") operators and expressions. These 3277language extensions are known collectively as ASL+. 3278 3279 32801) iASL Compiler/Disassembler and Tools: 3281 3282Disassembler: Fixed a problem with disassembly of the UartSerialBus 3283macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3284Box. 3285 3286Disassembler: Fixed the Unicode macro support to add escape sequences. 3287All non-printable ASCII values are emitted as escape sequences, as well 3288as the standard escapes for quote and backslash. Ensures that the 3289disassembled macro can be correctly recompiled. 3290 3291iASL: Added Printf/Fprintf macros for formatted output. These macros are 3292translated to existing AML Concatenate and Store operations. Printf 3293writes to the ASL Debug object. Fprintf allows the specification of an 3294ASL name as the target. Only a single format specifier is required, %o, 3295since the AML interpreter dynamically converts objects to the required 3296type. David E. Box. 3297 3298 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3299 (Concatenate (Concatenate (Concatenate ("", Arg0), 3300 ": Unexpected value for "), Arg1), ", "), Arg2), 3301 " at line "), Arg3), Debug) 3302 3303 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3304 Arg0, Arg1, Arg2, Arg3) 3305 3306 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3307 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3308 3309 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3310 3311iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3312ASL parse tree before the AML code is generated. This allows blocks of 3313ASL code to be removed in order to help locate and identify problem 3314devices and/or code. David E. Box. 3315 3316AcpiExec: Added support (-fi) for an optional namespace object 3317initialization file. This file specifies initial values for namespace 3318objects as necessary for debugging and testing different ASL code paths 3319that may be taken as a result of BIOS options. 3320 3321 33222) Overview of symbolic operator support for ASL (ASL+) 3323------------------------------------------------------- 3324 3325As an extension to the ASL language, iASL implements support for symbolic 3326(C-style) operators for math and logical expressions. This can greatly 3327simplify ASL code as well as improve both readability and 3328maintainability. These language extensions can exist concurrently with 3329all legacy ASL code and expressions. 3330 3331The symbolic extensions are 100% compatible with existing AML 3332interpreters, since no new AML opcodes are created. To implement the 3333extensions, the iASL compiler transforms the symbolic expressions into 3334the legacy ASL/AML equivalents at compile time. 3335 3336Full symbolic expressions are supported, along with the standard C 3337precedence and associativity rules. 3338 3339Full disassembler support for the symbolic expressions is provided, and 3340creates an automatic migration path for existing ASL code to ASL+ code 3341via the disassembly process. By default, the disassembler now emits ASL+ 3342code with symbolic expressions. An option (-dl) is provided to force the 3343disassembler to emit legacy ASL code if desired. 3344 3345Below is the complete list of the currently supported symbolic operators 3346with examples. See the iASL User Guide for additional information. 3347 3348 3349ASL+ Syntax Legacy ASL Equivalent 3350----------- --------------------- 3351 3352 // Math operators 3353 3354Z = X + Y Add (X, Y, Z) 3355Z = X - Y Subtract (X, Y, Z) 3356Z = X * Y Multiply (X, Y, Z) 3357Z = X / Y Divide (X, Y, , Z) 3358Z = X % Y Mod (X, Y, Z) 3359Z = X << Y ShiftLeft (X, Y, Z) 3360Z = X >> Y ShiftRight (X, Y, Z) 3361Z = X & Y And (X, Y, Z) 3362Z = X | Y Or (X, Y, Z) 3363Z = X ^ Y Xor (X, Y, Z) 3364Z = ~X Not (X, Z) 3365X++ Increment (X) 3366X-- Decrement (X) 3367 3368 // Logical operators 3369 3370(X == Y) LEqual (X, Y) 3371(X != Y) LNotEqual (X, Y) 3372(X < Y) LLess (X, Y) 3373(X > Y) LGreater (X, Y) 3374(X <= Y) LLessEqual (X, Y) 3375(X >= Y) LGreaterEqual (X, Y) 3376(X && Y) LAnd (X, Y) 3377(X || Y) LOr (X, Y) 3378(!X) LNot (X) 3379 3380 // Assignment and compound assignment operations 3381 3382X = Y Store (Y, X) 3383X += Y Add (X, Y, X) 3384X -= Y Subtract (X, Y, X) 3385X *= Y Multiply (X, Y, X) 3386X /= Y Divide (X, Y, , X) 3387X %= Y Mod (X, Y, X) 3388X <<= Y ShiftLeft (X, Y, X) 3389X >>= Y ShiftRight (X, Y, X) 3390X &= Y And (X, Y, X) 3391X |= Y Or (X, Y, X) 3392X ^= Y Xor (X, Y, X) 3393 3394 33953) ASL+ Examples: 3396----------------- 3397 3398Legacy ASL: 3399 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3400 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 34010x03FB), 3402 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3403 { 3404 And (MEMB, 0xFFFFFFF0, SRMB) 3405 Store (MEMB, Local2) 3406 Store (PDBM, Local1) 3407 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3408 Store (SRMB, MEMB) 3409 Or (PDBM, 0x02, PDBM) 3410 } 3411 3412ASL+ version: 3413 If (((R510 & 0x03FB) == 0x02E0) || 3414 ((R520 & 0x03FB) == 0x02E0) || 3415 ((R530 & 0x03FB) == 0x02E0) || 3416 ((R540 & 0x03FB) == 0x02E0)) 3417 { 3418 SRMB = (MEMB & 0xFFFFFFF0) 3419 Local2 = MEMB 3420 Local1 = PDBM 3421 PDBM &= 0xFFFFFFFFFFFFFFF9 3422 MEMB = SRMB 3423 PDBM |= 0x02 3424 } 3425 3426Legacy ASL: 3427 Store (0x1234, Local1) 3428 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3429 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3430 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3431 Store (Index (PKG1, 0x03), Local6) 3432 Store (Add (Local3, Local2), Debug) 3433 Add (Local1, 0x0F, Local2) 3434 Add (Local1, Multiply (Local2, Local3), Local2) 3435 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3436 3437ASL+ version: 3438 Local1 = 0x1234 3439 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3440 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3441 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3442 Local6 = Index (PKG1, 0x03) 3443 Debug = (Local3 + Local2) 3444 Local2 = (Local1 + 0x0F) 3445 Local2 = (Local1 + (Local2 * Local3)) 3446 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3447 3448 3449---------------------------------------- 345026 September 2014. Summary of changes for version 20140926: 3451 34521) ACPICA kernel-resident subsystem: 3453 3454Updated the GPIO operation region handler interface (GeneralPurposeIo). 3455In order to support GPIO Connection objects with multiple pins, along 3456with the related Field objects, the following changes to the interface 3457have been made: The Address is now defined to be the offset in bits of 3458the field unit from the previous invocation of a Connection. It can be 3459viewed as a "Pin Number Index" into the connection resource descriptor. 3460The BitWidth is the exact bit width of the field. It is usually one bit, 3461but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3462additional information and examples. 3463 3464GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3465corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3466by the firmware), so that they cannot fire until they are enabled via 3467AcpiUpdateAllGpes. Rafael J. Wysocki. 3468 3469Added a new return flag for the Event/GPE status interfaces -- 3470AcpiGetEventStatus and AcpiGetGpeStatus. The new 3471ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3472GPE currently has a handler associated with it, and can thus actually 3473affect the system. Lv Zheng. 3474 3475Example Code and Data Size: These are the sizes for the OS-independent 3476acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3477debug version of the code includes the debug output trace mechanism and 3478has a much larger code and data size. 3479 3480 Current Release: 3481 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3482 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3483 Previous Release: 3484 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3485 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3486 34872) iASL Compiler/Disassembler and Tools: 3488 3489iASL: Fixed a memory allocation/free regression introduced in 20140828 3490that could cause the compiler to crash. This was introduced inadvertently 3491during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 34921113. 3493 3494iASL: Removed two error messages that have been found to create false 3495positives, until they can be fixed and fully validated (ACPICA BZ 1112): 34961) Illegal forward reference within a method 34972) Illegal reference across two methods 3498 3499iASL: Implemented a new option (-lm) to create a hardware mapping file 3500that summarizes all GPIO, I2C, SPI, and UART connections. This option 3501works for both the compiler and disassembler. See the iASL compiler user 3502guide for additional information and examples (section 6.4.6). 3503 3504AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3505version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3506a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3507 3508AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3509unless STDIN is actually a terminal. Assists with batch-mode processing. 3510ACPICA BZ 1114. 3511 3512Disassembler/AcpiHelp: Added another large group of recognized _HID 3513values. 3514 3515 3516---------------------------------------- 351728 August 2014. Summary of changes for version 20140828: 3518 35191) ACPICA kernel-resident subsystem: 3520 3521Fixed a problem related to the internal use of the Timer() operator where 3522a 64-bit divide could cause an attempted link to a double-precision math 3523library. This divide is not actually necessary, so the code was 3524restructured to eliminate it. Lv Zheng. 3525 3526ACPI 5.1: Added support for the runtime validation of the _DSD package 3527(similar to the iASL support). 3528 3529ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3530SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3531 3532Example Code and Data Size: These are the sizes for the OS-independent 3533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3534debug version of the code includes the debug output trace mechanism and 3535has a much larger code and data size. 3536 3537 Current Release: 3538 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3539 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3540 Previous Release: 3541 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 3542 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3543 35442) iASL Compiler/Disassembler and Tools: 3545 3546AcpiExec: Fixed a problem on unix systems where the original terminal 3547state was not always properly restored upon exit. Seen when using the -v 3548option. ACPICA BZ 1104. 3549 3550iASL: Fixed a problem with the validation of the ranges/length within the 3551Memory24 resource descriptor. There was a boundary condition when the 3552range was equal to the (length -1) caused by the fact that these values 3553are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 3554 3555Disassembler: Fixed a problem with the GpioInt descriptor interrupt 3556polarity 3557flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 3558is 3559now supported properly. 3560 3561ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 3562in the disassembler, data table compiler, and table template generator. 3563 3564iASL: Added a requirement for Device() objects that one of either a _HID 3565or _ADR must exist within the scope of a Device, as per the ACPI 3566specification. Remove a similar requirement that was incorrectly in place 3567for the _DSD object. 3568 3569iASL: Added error detection for illegal named references within control 3570methods that would cause runtime failures. Now trapped as errors are: 1) 3571References to objects within a non-parent control method. 2) Forward 3572references (within a method) -- for control methods, AML interpreters use 3573a one-pass parse of control methods. ACPICA BZ 1008. 3574 3575iASL: Added error checking for dependencies related to the _PSx power 3576methods. ACPICA BZ 1029. 35771) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 3578_PS3. 35792) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 3580scope. 3581 3582iASL and table compiler: Cleanup miscellaneous memory leaks by fully 3583deploying the existing object and string caches and adding new caches for 3584the table compiler. 3585 3586iASL: Split the huge parser source file into multiple subfiles to improve 3587manageability. Generation now requires the M4 macro preprocessor, which 3588is part of the Bison distribution on both unix and windows platforms. 3589 3590AcpiSrc: Fixed and removed all extraneous warnings generated during 3591entire ACPICA source code scan and/or conversion. 3592 3593 3594---------------------------------------- 3595 359624 July 2014. Summary of changes for version 20140724: 3597 3598The ACPI 5.1 specification has been released and is available at: 3599http://uefi.org/specs/access 3600 3601 36020) ACPI 5.1 support in ACPICA: 3603 3604ACPI 5.1 is fully supported in ACPICA as of this release. 3605 3606New predefined names. Support includes iASL and runtime ACPICA 3607validation. 3608 _CCA (Cache Coherency Attribute). 3609 _DSD (Device-Specific Data). David Box. 3610 3611Modifications to existing ACPI tables. Support includes headers, iASL 3612Data Table compiler, disassembler, and the template generator. 3613 FADT - New fields and flags. Graeme Gregory. 3614 GTDT - One new subtable and new fields. Tomasz Nowicki. 3615 MADT - Two new subtables. Tomasz Nowicki. 3616 PCCT - One new subtable. 3617 3618Miscellaneous. 3619 New notification type for System Resource Affinity change events. 3620 3621 36221) ACPICA kernel-resident subsystem: 3623 3624Fixed a regression introduced in 20140627 where a fault can happen during 3625the deletion of Alias AML namespace objects. The problem affected both 3626the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3627 3628Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3629simple mechanism to enable wake GPEs that have no associated handler or 3630control method. Rafael Wysocki. 3631 3632Updated the AcpiEnableGpe interface to disallow the enable if there is no 3633handler or control method associated with the particular GPE. This will 3634help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3635 3636Updated GPE handling and dispatch by disabling the GPE before clearing 3637the status bit for edge-triggered GPEs. Lv Zheng. 3638 3639Added Timer() support to the AML Debug object. The current timer value is 3640now displayed with each invocation of (Store to) the debug object to 3641enable simple generation of execution times for AML code (method 3642execution for example.) ACPICA BZ 1093. 3643 3644Example Code and Data Size: These are the sizes for the OS-independent 3645acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3646debug version of the code includes the debug output trace mechanism and 3647has a much larger code and data size. 3648 3649 Current Release: 3650 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3651 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3652 Previous Release: 3653 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3654 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3655 3656 36572) iASL Compiler/Disassembler and Tools: 3658 3659Fixed an issue with the recently added local printf implementation, 3660concerning width/precision specifiers that could cause incorrect output. 3661Lv Zheng. ACPICA BZ 1094. 3662 3663Disassembler: Added support to detect buffers that contain UUIDs and 3664disassemble them to an invocation of the ToUUID operator. Also emit 3665commented descriptions of known ACPI-related UUIDs. 3666 3667AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3668-u. Adds three new files. 3669 3670iASL: Update table compiler and disassembler for DMAR table changes that 3671were introduced in September 2013. With assistance by David Woodhouse. 3672 3673---------------------------------------- 367427 June 2014. Summary of changes for version 20140627: 3675 36761) ACPICA kernel-resident subsystem: 3677 3678Formatted Output: Implemented local versions of standard formatted output 3679utilities such as printf, etc. Over time, it has been discovered that 3680there are in fact many portability issues with printf, and the addition 3681of this feature will fix/prevent these issues once and for all. Some 3682known issues are summarized below: 3683 36841) Output of 64-bit values is not portable. For example, UINT64 is %ull 3685for the Linux kernel and is %uI64 for some MSVC versions. 36862) Invoking printf consistently in a manner that is portable across both 368732-bit and 64-bit platforms is difficult at best in many situations. 36883) The output format for pointers varies from system to system (leading 3689zeros especially), and leads to inconsistent output from ACPICA across 3690platforms. 36914) Certain platform-specific printf formats may conflict with ACPICA use. 36925) If there is no local C library available, ACPICA now has local support 3693for printf. 3694 3695-- To address these printf issues in a complete manner, ACPICA now 3696directly implements a small subset of printf format specifiers, only 3697those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3698 3699Implemented support for ACPICA generation within the EFI environment. 3700Initially, the AcpiDump utility is supported in the UEFI shell 3701environment. Lv Zheng. 3702 3703Added a new external interface, AcpiLogError, to improve ACPICA 3704portability. This allows the host to redirect error messages from the 3705ACPICA utilities. Lv Zheng. 3706 3707Added and deployed new OSL file I/O interfaces to improve ACPICA 3708portability: 3709 AcpiOsOpenFile 3710 AcpiOsCloseFile 3711 AcpiOsReadFile 3712 AcpiOsWriteFile 3713 AcpiOsGetFileOffset 3714 AcpiOsSetFileOffset 3715There are C library implementations of these functions in the new file 3716service_layers/oslibcfs.c -- however, the functions can be implemented by 3717the local host in any way necessary. Lv Zheng. 3718 3719Implemented a mechanism to disable/enable ACPI table checksum validation 3720at runtime. This can be useful when loading tables very early during OS 3721initialization when it may not be possible to map the entire table in 3722order to compute the checksum. Lv Zheng. 3723 3724Fixed a buffer allocation issue for the Generic Serial Bus support. 3725Originally, a fixed buffer length was used. This change allows for 3726variable-length buffers based upon the protocol indicated by the field 3727access attributes. Reported by Lan Tianyu. Lv Zheng. 3728 3729Fixed a problem where an object detached from a namespace node was not 3730properly terminated/cleared and could cause a circular list problem if 3731reattached. ACPICA BZ 1063. David Box. 3732 3733Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3734 3735Fixed a possible memory leak in an error return path within the function 3736AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3737 3738Example Code and Data Size: These are the sizes for the OS-independent 3739acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3740debug version of the code includes the debug output trace mechanism and 3741has a much larger code and data size. 3742 3743 Current Release: 3744 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3745 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3746 Previous Release: 3747 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3748 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3749 3750 37512) iASL Compiler/Disassembler and Tools: 3752 3753Disassembler: Add dump of ASCII equivalent text within a comment at the 3754end of each line of the output for the Buffer() ASL operator. 3755 3756AcpiDump: Miscellaneous changes: 3757 Fixed repetitive table dump in -n mode. 3758 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3759the ACPI 2.0 GUID fails. 3760 3761iASL: Fixed a problem where the compiler could fault if incorrectly given 3762an acpidump output file as input. ACPICA BZ 1088. David Box. 3763 3764AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3765they are invoked without any arguments. 3766 3767Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 37681086. Colin Ian King. 3769 3770Disassembler: Cleaned up a block of code that extracts a parent Op 3771object. Added a comment that explains that the parent is guaranteed to be 3772valid in this case. ACPICA BZ 1069. 3773 3774 3775---------------------------------------- 377624 April 2014. Summary of changes for version 20140424: 3777 37781) ACPICA kernel-resident subsystem: 3779 3780Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3781Some of these tables are known to contain a trailing NULL entry. Lv 3782Zheng. 3783 3784Removed an extraneous error message for the case where there are a large 3785number of system GPEs (> 124). This was the "32-bit FADT register is too 3786long to convert to GAS struct" message, which is irrelevant for GPEs 3787since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3788(limited capacity) GAS bit length. Also, several changes to ensure proper 3789support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3790internally. 3791 3792Implemented and deployed additional configuration support for the public 3793ACPICA external interfaces. Entire classes of interfaces can now be 3794easily modified or configured out, replaced by stubbed inline functions 3795by default. Lv Zheng. 3796 3797Moved all public ACPICA runtime configuration globals to the public 3798ACPICA external interface file for convenience. Also, removed some 3799obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3800 3801Documentation: Added a new section to the ACPICA reference describing the 3802maximum number of GPEs that can be supported by the FADT-defined GPEs in 3803block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3804reference. 3805 3806Example Code and Data Size: These are the sizes for the OS-independent 3807acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3808debug version of the code includes the debug output trace mechanism and 3809has a much larger code and data size. 3810 3811 Current Release: 3812 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3813 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3814 Previous Release: 3815 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3816 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3817 3818 38192) iASL Compiler/Disassembler and Tools: 3820 3821iASL and disassembler: Add full support for the LPIT table (Low Power 3822Idle Table). Includes support in the disassembler, data table compiler, 3823and template generator. 3824 3825AcpiDump utility: 38261) Add option to force the use of the RSDT (over the XSDT). 38272) Improve validation of the RSDP signature (use 8 chars instead of 4). 3828 3829iASL: Add check for predefined packages that are too large. For 3830predefined names that contain subpackages, check if each subpackage is 3831too large. (Check for too small already exists.) 3832 3833Debugger: Updated the GPE command (which simulates a GPE by executing the 3834GPE code paths in ACPICA). The GPE device is now optional, and defaults 3835to the GPE 0/1 FADT-defined blocks. 3836 3837Unix application OSL: Update line-editing support. Add additional error 3838checking and take care not to reset terminal attributes on exit if they 3839were never set. This should help guarantee that the terminal is always 3840left in the previous state on program exit. 3841 3842 3843---------------------------------------- 384425 March 2014. Summary of changes for version 20140325: 3845 38461) ACPICA kernel-resident subsystem: 3847 3848Updated the auto-serialize feature for control methods. This feature 3849automatically serializes all methods that create named objects in order 3850to prevent runtime errors. The update adds support to ignore the 3851currently executing AML SyncLevel when invoking such a method, in order 3852to prevent disruption of any existing SyncLevel priorities that may exist 3853in the AML code. Although the use of SyncLevels is relatively rare, this 3854change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3855appear on some machines starting with the 20140214 release. 3856 3857Added a new external interface to allow the host to install ACPI tables 3858very early, before the namespace is even created. AcpiInstallTable gives 3859the host additional flexibility for ACPI table management. Tables can be 3860installed directly by the host as if they had originally appeared in the 3861XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3862(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3863with additional internal restructuring and cleanup. See the ACPICA 3864Reference for interface details. Lv Zheng. 3865 3866Added validation of the checksum for all incoming dynamically loaded 3867tables (via external interfaces or via AML Load/LoadTable operators). Lv 3868Zheng. 3869 3870Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3871and GPE handler removal. Restructured calls to eliminate possible race 3872conditions. Lv Zheng. 3873 3874Added a warning for the use/execution of the ASL/AML Unload (table) 3875operator. This will help detect and identify machines that use this 3876operator if and when it is ever used. This operator has never been seen 3877in the field and the usage model and possible side-effects of the drastic 3878runtime action of a full table removal are unknown. 3879 3880Reverted the use of #pragma push/pop which was introduced in the 20140214 3881release. It appears that push and pop are not implemented by enough 3882compilers to make the use of this feature feasible for ACPICA at this 3883time. However, these operators may be deployed in a future ACPICA 3884release. 3885 3886Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3887handler interfaces. 3888 3889Source code generation: 38901) Disabled the use of the "strchr" macro for the gcc-specific 3891generation. For some versions of gcc, this macro can periodically expose 3892a compiler bug which in turn causes compile-time error(s). 38932) Added support for PPC64 compilation. Colin Ian King. 3894 3895Example Code and Data Size: These are the sizes for the OS-independent 3896acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3897debug version of the code includes the debug output trace mechanism and 3898has a much larger code and data size. 3899 3900 Current Release: 3901 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3902 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3903 Previous Release: 3904 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3905 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3906 3907 39082) iASL Compiler/Disassembler and Tools: 3909 3910Disassembler: Added several new features to improve the readability of 3911the resulting ASL code. Extra information is emitted within comment 3912fields in the ASL code: 39131) Known _HID/_CID values are decoded to descriptive text. 39142) Standard values for the Notify() operator are decoded to descriptive 3915text. 39163) Target operands are expanded to full pathnames (in a comment) when 3917possible. 3918 3919Disassembler: Miscellaneous updates for extern() handling: 39201) Abort compiler if file specified by -fe option does not exist. 39212) Silence unnecessary warnings about argument count mismatches. 39223) Update warning messages concerning unresolved method externals. 39234) Emit "UnknownObj" keyword for externals whose type cannot be 3924determined. 3925 3926AcpiHelp utility: 39271) Added the -a option to display both the ASL syntax and the AML 3928encoding for an input ASL operator. This effectively displays all known 3929information about an ASL operator with one AcpiHelp invocation. 39302) Added substring match support (similar to a wildcard) for the -i 3931(_HID/PNP IDs) option. 3932 3933iASL/Disassembler: Since this tool does not yet support execution on big- 3934endian machines, added detection of endianness and an error message if 3935execution is attempted on big-endian. Support for big-endian within iASL 3936is a feature that is on the ACPICA to-be-done list. 3937 3938AcpiBin utility: 39391) Remove option to extract binary files from an acpidump; this function 3940is made obsolete by the AcpiXtract utility. 39412) General cleanup of open files and allocated buffers. 3942 3943 3944---------------------------------------- 394514 February 2014. Summary of changes for version 20140214: 3946 39471) ACPICA kernel-resident subsystem: 3948 3949Implemented a new mechanism to proactively prevent problems with ill- 3950behaved reentrant control methods that create named ACPI objects. This 3951behavior is illegal as per the ACPI specification, but is nonetheless 3952frequently seen in the field. Previously, this could lead to an 3953AE_ALREADY_EXISTS exception if the method was actually entered by more 3954than one thread. This new mechanism detects such methods at table load 3955time and marks them "serialized" to prevent reentrancy. A new global 3956option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3957feature if desired. This mechanism and global option obsoletes and 3958supersedes the previous AcpiGbl_SerializeAllMethods option. 3959 3960Added the "Windows 2013" string to the _OSI support. ACPICA will now 3961respond TRUE to _OSI queries with this string. It is the stated policy of 3962ACPICA to add new strings to the _OSI support as soon as possible after 3963they are defined. See the full ACPICA _OSI policy which has been added to 3964the utilities/utosi.c file. 3965 3966Hardened/updated the _PRT return value auto-repair code: 39671) Do not abort the repair on a single subpackage failure, continue to 3968check all subpackages. 39692) Add check for the minimum subpackage length (4). 39703) Properly handle extraneous NULL package elements. 3971 3972Added support to avoid the possibility of infinite loops when traversing 3973object linked lists. Never allow an infinite loop, even in the face of 3974corrupted object lists. 3975 3976ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3977pack(pop) directives to ensure that the ACPICA headers are independent of 3978compiler settings or other host headers. 3979 3980Example Code and Data Size: These are the sizes for the OS-independent 3981acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3982debug version of the code includes the debug output trace mechanism and 3983has a much larger code and data size. 3984 3985 Current Release: 3986 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3987 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3988 Previous Release: 3989 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3990 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3991 3992 39932) iASL Compiler/Disassembler and Tools: 3994 3995iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3996first reserved field was incorrectly forced to have a value of zero. This 3997change correctly forces the field to have a value of one. ACPICA BZ 1081. 3998 3999Debugger: Added missing support for the "Extra" and "Data" subobjects 4000when displaying object data. 4001 4002Debugger: Added support to display entire object linked lists when 4003displaying object data. 4004 4005iASL: Removed the obsolete -g option to obtain ACPI tables from the 4006Windows registry. This feature has been superseded by the acpidump 4007utility. 4008 4009 4010---------------------------------------- 401114 January 2014. Summary of changes for version 20140114: 4012 40131) ACPICA kernel-resident subsystem: 4014 4015Updated all ACPICA copyrights and signons to 2014. Added the 2014 4016copyright to all module headers and signons, including the standard Linux 4017header. This affects virtually every file in the ACPICA core subsystem, 4018iASL compiler, all ACPICA utilities, and the test suites. 4019 4020Improved parameter validation for AcpiInstallGpeBlock. Added the 4021following checks: 40221) The incoming device handle refers to type ACPI_TYPE_DEVICE. 40232) There is not already a GPE block attached to the device. 4024Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 4025device. 4026 4027Correctly support "references" in the ACPI_OBJECT. This change fixes the 4028support to allow references (namespace nodes) to be passed as arguments 4029to control methods via the evaluate object interface. This is probably 4030most useful for testing purposes, however. 4031 4032Improved support for 32/64 bit physical addresses in printf()-like 4033output. This change improves the support for physical addresses in printf 4034debug statements and other output on both 32-bit and 64-bit hosts. It 4035consistently outputs the appropriate number of bytes for each host. The 4036%p specifier is unsatisfactory since it does not emit uniform output on 4037all hosts/clib implementations (on some, leading zeros are not supported, 4038leading to difficult-to-read output). 4039 4040Example Code and Data Size: These are the sizes for the OS-independent 4041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4042debug version of the code includes the debug output trace mechanism and 4043has a much larger code and data size. 4044 4045 Current Release: 4046 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 4047 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 4048 Previous Release: 4049 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4050 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4051 4052 40532) iASL Compiler/Disassembler and Tools: 4054 4055iASL: Fix a possible fault when using the Connection() operator. Fixes a 4056problem if the parent Field definition for the Connection operator refers 4057to an operation region that does not exist. ACPICA BZ 1064. 4058 4059AcpiExec: Load of local test tables is now optional. The utility has the 4060capability to load some various tables to test features of ACPICA. 4061However, there are enough of them that the output of the utility became 4062confusing. With this change, only the required local tables are displayed 4063(RSDP, XSDT, etc.) along with the actual tables loaded via the command 4064line specification. This makes the default output simler and easier to 4065understand. The -el command line option restores the original behavior 4066for testing purposes. 4067 4068AcpiExec: Added support for overlapping operation regions. This change 4069expands the simulation of operation regions by supporting regions that 4070overlap within the given address space. Supports SystemMemory and 4071SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 4072 4073AcpiExec: Added region handler support for PCI_Config and EC spaces. This 4074allows AcpiExec to simulate these address spaces, similar to the current 4075support for SystemMemory and SystemIO. 4076 4077Debugger: Added new command to read/write/compare all namespace objects. 4078The command "test objects" will exercise the entire namespace by writing 4079new values to each data object, and ensuring that the write was 4080successful. The original value is then restored and verified. 4081 4082Debugger: Added the "test predefined" command. This change makes this 4083test public and puts it under the new "test" command. The test executes 4084each and every predefined name within the current namespace. 4085 4086 4087---------------------------------------- 408818 December 2013. Summary of changes for version 20131218: 4089 4090Global note: The ACPI 5.0A specification was released this month. There 4091are no changes needed for ACPICA since this release of ACPI is an 4092errata/clarification release. The specification is available at 4093acpi.info. 4094 4095 40961) ACPICA kernel-resident subsystem: 4097 4098Added validation of the XSDT root table if it is present. Some older 4099platforms contain an XSDT that is ill-formed or otherwise invalid (such 4100as containing some or all entries that are NULL pointers). This change 4101adds a new function to validate the XSDT before actually using it. If the 4102XSDT is found to be invalid, ACPICA will now automatically fall back to 4103using the RSDT instead. Original implementation by Zhao Yakui. Ported to 4104ACPICA and enhanced by Lv Zheng and Bob Moore. 4105 4106Added a runtime option to ignore the XSDT and force the use of the RSDT. 4107This change adds a runtime option that will force ACPICA to use the RSDT 4108instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 4109requires that an XSDT be used instead of the RSDT, the XSDT has been 4110found to be corrupt or ill-formed on some machines. Lv Zheng. 4111 4112Added a runtime option to favor 32-bit FADT register addresses over the 411364-bit addresses. This change adds an option to favor 32-bit FADT 4114addresses when there is a conflict between the 32-bit and 64-bit versions 4115of the same register. The default behavior is to use the 64-bit version 4116in accordance with the ACPI specification. This can now be overridden via 4117the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 4118 4119During the change above, the internal "Convert FADT" and "Verify FADT" 4120functions have been merged to simplify the code, making it easier to 4121understand and maintain. ACPICA BZ 933. 4122 4123Improve exception reporting and handling for GPE block installation. 4124Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 4125status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 4126 4127Added helper macros to extract bus/segment numbers from the HEST table. 4128This change adds two macros to extract the encoded bus and segment 4129numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 4130Betty Dall <betty.dall@hp.com> 4131 4132Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 4133by ACPICA. It is not a public macro, so it should have no effect on 4134existing OSV code. Lv Zheng. 4135 4136Example Code and Data Size: These are the sizes for the OS-independent 4137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4138debug version of the code includes the debug output trace mechanism and 4139has a much larger code and data size. 4140 4141 Current Release: 4142 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4143 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4144 Previous Release: 4145 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4146 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4147 4148 41492) iASL Compiler/Disassembler and Tools: 4150 4151Disassembler: Improved pathname support for emitted External() 4152statements. This change adds full pathname support for external names 4153that have been resolved internally by the inclusion of additional ACPI 4154tables (via the iASL -e option). Without this change, the disassembler 4155can emit multiple externals for the same object, or it become confused 4156when the Scope() operator is used on an external object. Overall, greatly 4157improves the ability to actually recompile the emitted ASL code when 4158objects a referenced across multiple ACPI tables. Reported by Michael 4159Tsirkin (mst@redhat.com). 4160 4161Tests/ASLTS: Updated functional control suite to execute with no errors. 4162David Box. Fixed several errors related to the testing of the interpreter 4163slack mode. Lv Zheng. 4164 4165iASL: Added support to detect names that are declared within a control 4166method, but are unused (these are temporary names that are only valid 4167during the time the method is executing). A remark is issued for these 4168cases. ACPICA BZ 1022. 4169 4170iASL: Added full support for the DBG2 table. Adds full disassembler, 4171table compiler, and template generator support for the DBG2 table (Debug 4172Port 2 table). 4173 4174iASL: Added full support for the PCCT table, update the table definition. 4175Updates the PCCT table definition in the actbl3.h header and adds table 4176compiler and template generator support. 4177 4178iASL: Added an option to emit only error messages (no warnings/remarks). 4179The -ve option will enable only error messages, warnings and remarks are 4180suppressed. This can simplify debugging when only the errors are 4181important, such as when an ACPI table is disassembled and there are many 4182warnings and remarks -- but only the actual errors are of real interest. 4183 4184Example ACPICA code (source/tools/examples): Updated the example code so 4185that it builds to an actual working program, not just example code. Added 4186ACPI tables and execution of an example control method in the DSDT. Added 4187makefile support for Unix generation. 4188 4189 4190---------------------------------------- 419115 November 2013. Summary of changes for version 20131115: 4192 4193This release is available at https://acpica.org/downloads 4194 4195 41961) ACPICA kernel-resident subsystem: 4197 4198Resource Manager: Fixed loop termination for the "get AML length" 4199function. The loop previously had an error termination on a NULL resource 4200pointer, which can never happen since the loop simply increments a valid 4201resource pointer. This fix changes the loop to terminate with an error on 4202an invalid end-of-buffer condition. The problem can be seen as an 4203infinite loop by callers to AcpiSetCurrentResources with an invalid or 4204corrupted resource descriptor, or a resource descriptor that is missing 4205an END_TAG descriptor. Reported by Dan Carpenter 4206<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4207 4208Table unload and ACPICA termination: Delete all attached data objects 4209during namespace node deletion. This fix updates namespace node deletion 4210to delete the entire list of attached objects (attached via 4211AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 42121024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4213 4214ACPICA termination: Added support to delete all objects attached to the 4215root namespace node. This fix deletes any and all objects that have been 4216attached to the root node via AcpiAttachData. Previously, none of these 4217objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4218 4219Debug output: Do not emit the function nesting level for the in-kernel 4220build. The nesting level is really only useful during a single-thread 4221execution. Therefore, only enable this output for the AcpiExec utility. 4222Also, only emit the thread ID when executing under AcpiExec (Context 4223switches are still always detected and a message is emitted). ACPICA BZ 4224972. 4225 4226Example Code and Data Size: These are the sizes for the OS-independent 4227acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4228debug version of the code includes the debug output trace mechanism and 4229has a much larger code and data size. 4230 4231 Current Release: 4232 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4233 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4234 Previous Release: 4235 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4236 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4237 4238 42392) iASL Compiler/Disassembler and Tools: 4240 4241AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4242correct portable POSIX header for terminal control functions. 4243 4244Disassembler: Fixed control method invocation issues related to the use 4245of the CondRefOf() operator. The problem is seen in the disassembly where 4246control method invocations may not be disassembled properly if the 4247control method name has been used previously as an argument to CondRefOf. 4248The solution is to not attempt to emit an external declaration for the 4249CondRefOf target (it is not necessary in the first place). This prevents 4250disassembler object type confusion. ACPICA BZ 988. 4251 4252Unix Makefiles: Added an option to disable compiler optimizations and the 4253_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4254with optimizations (reportedly, gcc 4.4 for example). This change adds a 4255command line option for make (NOOPT) that disables all compiler 4256optimizations and the _FORTIFY_SOURCE compiler flag. The default 4257optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 42581034. Lv Zheng, Bob Moore. 4259 4260Tests/ASLTS: Added options to specify individual test cases and modes. 4261This allows testers running aslts.sh to optionally specify individual 4262test modes and test cases. Also added an option to disable the forced 4263generation of the ACPICA tools from source if desired. Lv Zheng. 4264 4265---------------------------------------- 426627 September 2013. Summary of changes for version 20130927: 4267 4268This release is available at https://acpica.org/downloads 4269 4270 42711) ACPICA kernel-resident subsystem: 4272 4273Fixed a problem with store operations to reference objects. This change 4274fixes a problem where a Store operation to an ArgX object that contained 4275a 4276reference to a field object did not complete the automatic dereference 4277and 4278then write to the actual field object. Instead, the object type of the 4279field object was inadvertently changed to match the type of the source 4280operand. The new behavior will actually write to the field object (buffer 4281field or field unit), thus matching the correct ACPI-defined behavior. 4282 4283Implemented support to allow the host to redefine individual OSL 4284prototypes. This change enables the host to redefine OSL prototypes found 4285in the acpiosxf.h file. This allows the host to implement OSL interfaces 4286with a macro or inlined function. Further, it allows the host to add any 4287additional required modifiers such as __iomem, __init, __exit, etc., as 4288necessary on a per-interface basis. Enables maximum flexibility for the 4289OSL interfaces. Lv Zheng. 4290 4291Hardcoded the access width for the FADT-defined reset register. The ACPI 4292specification requires the reset register width to be 8 bits. ACPICA now 4293hardcodes the width to 8 and ignores the FADT width value. This provides 4294compatibility with other ACPI implementations that have allowed BIOS code 4295with bad register width values to go unnoticed. Matthew Garett, Bob 4296Moore, 4297Lv Zheng. 4298 4299Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4300used 4301in the OSL header (acpiosxf). The change modifies the position of this 4302macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4303build issues if the OSL defines the implementation of the interface to be 4304an inline stub function. Lv Zheng. 4305 4306Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4307initialization interfaces. This change adds a new macro for the main init 4308and terminate external interfaces in order to support hosts that require 4309additional or different processing for these functions. Changed from 4310ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4311Zheng, Bob Moore. 4312 4313Cleaned up the memory allocation macros for configurability. In the 4314common 4315case, the ACPI_ALLOCATE and related macros now resolve directly to their 4316respective AcpiOs* OSL interfaces. Two options: 43171) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4318default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 43192) For AcpiExec (and for debugging), the macros can optionally be 4320resolved 4321to the local ACPICA interfaces that track each allocation (local tracking 4322is used to immediately detect memory leaks). 4323Lv Zheng. 4324 4325Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4326to predefine this macro to either TRUE or FALSE during the system build. 4327 4328Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4329 4330Example Code and Data Size: These are the sizes for the OS-independent 4331acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4332debug version of the code includes the debug output trace mechanism and 4333has a much larger code and data size. 4334 4335 Current Release: 4336 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4337 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4338 Previous Release: 4339 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4340 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4341 4342 43432) iASL Compiler/Disassembler and Tools: 4344 4345iASL: Implemented wildcard support for the -e option. This simplifies use 4346when there are many SSDTs that must be included to resolve external 4347method 4348declarations. ACPICA BZ 1041. Example: 4349 iasl -e ssdt*.dat -d dsdt.dat 4350 4351AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4352adds a portable module that implements full history and limited line 4353editing for Unix and Linux systems. It does not use readline() due to 4354portability issues. Instead it uses the POSIX termio interface to put the 4355terminal in raw input mode so that the various special keys can be 4356trapped 4357(such as up/down-arrow for history support and left/right-arrow for line 4358editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4359 4360AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4361one or more spaces. This provides compatible with early or different 4362versions of the AcpiDump utility. ACPICA BZ 1044. 4363 4364AcpiDump: Do not ignore tables that contain only an ACPI table header. 4365Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4366no other data. This change adds support to dump these tables. Any tables 4367shorter than the length of an ACPI table header remain in error (an error 4368message is emitted). Reported by Yi Li. 4369 4370Debugger: Echo actual command along with the "unknown command" message. 4371 4372---------------------------------------- 437323 August 2013. Summary of changes for version 20130823: 4374 43751) ACPICA kernel-resident subsystem: 4376 4377Implemented support for host-installed System Control Interrupt (SCI) 4378handlers. Certain ACPI functionality requires the host to handle raw 4379SCIs. For example, the "SCI Doorbell" that is defined for memory power 4380state support requires the host device driver to handle SCIs to examine 4381if the doorbell has been activated. Multiple SCI handlers can be 4382installed to allow for future expansion. New external interfaces are 4383AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4384details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4385 4386Operation region support: Never locally free the handler "context" 4387pointer. This change removes some dangerous code that attempts to free 4388the handler context pointer in some (rare) circumstances. The owner of 4389the handler owns this pointer and the ACPICA code should never touch it. 4390Although not seen to be an issue in any kernel, it did show up as a 4391problem (fault) under AcpiExec. Also, set the internal storage field for 4392the context pointer to zero when the region is deactivated, simply for 4393sanity. David Box. ACPICA BZ 1039. 4394 4395AcpiRead: On error, do not modify the return value target location. If an 4396error happens in the middle of a split 32/32 64-bit I/O operation, do not 4397modify the target of the return value pointer. Makes the code consistent 4398with the rest of ACPICA. Bjorn Helgaas. 4399 4400Example Code and Data Size: These are the sizes for the OS-independent 4401acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4402debug version of the code includes the debug output trace mechanism and 4403has a much larger code and data size. 4404 4405 Current Release: 4406 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4407 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4408 Previous Release: 4409 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4410 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4411 4412 44132) iASL Compiler/Disassembler and Tools: 4414 4415AcpiDump: Implemented several new features and fixed some problems: 44161) Added support to dump the RSDP, RSDT, and XSDT tables. 44172) Added support for multiple table instances (SSDT, UEFI). 44183) Added option to dump "customized" (overridden) tables (-c). 44194) Fixed a problem where some table filenames were improperly 4420constructed. 44215) Improved some error messages, removed some unnecessary messages. 4422 4423iASL: Implemented additional support for disassembly of ACPI tables that 4424contain invocations of external control methods. The -fe<file> option 4425allows the import of a file that specifies the external methods along 4426with the required number of arguments for each -- allowing for the 4427correct disassembly of the table. This is a workaround for a limitation 4428of AML code where the disassembler often cannot determine the number of 4429arguments required for an external control method and generates incorrect 4430ASL code. See the iASL reference for details. ACPICA BZ 1030. 4431 4432Debugger: Implemented a new command (paths) that displays the full 4433pathnames (namepaths) and object types of all objects in the namespace. 4434This is an alternative to the namespace command. 4435 4436Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4437mechanism and any installed handlers. 4438 4439iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4440This can occur if there are too many parent prefixes in a namepath (for 4441example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4442 4443Application OSLs: Set the return value for the PCI read functions. These 4444functions simply return AE_OK, but should set the return value to zero 4445also. This change implements this. ACPICA BZ 1038. 4446 4447Debugger: Prevent possible command line buffer overflow. Increase the 4448size of a couple of the debugger line buffers, and ensure that overflow 4449cannot happen. ACPICA BZ 1037. 4450 4451iASL: Changed to abort immediately on serious errors during the parsing 4452phase. Due to the nature of ASL, there is no point in attempting to 4453compile these types of errors, and they typically end up causing a 4454cascade of hundreds of errors which obscure the original problem. 4455 4456---------------------------------------- 445725 July 2013. Summary of changes for version 20130725: 4458 44591) ACPICA kernel-resident subsystem: 4460 4461Fixed a problem with the DerefOf operator where references to FieldUnits 4462and BufferFields incorrectly returned the parent object, not the actual 4463value of the object. After this change, a dereference of a FieldUnit 4464reference results in a read operation on the field to get the value, and 4465likewise, the appropriate BufferField value is extracted from the target 4466buffer. 4467 4468Fixed a problem where the _WAK method could cause a fault under these 4469circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4470method returned no value. The problem is rarely seen because most kernels 4471run ACPICA in slack mode. 4472 4473For the DerefOf operator, a fatal error now results if an attempt is made 4474to dereference a reference (created by the Index operator) to a NULL 4475package element. Provides compatibility with other ACPI implementations, 4476and this behavior will be added to a future version of the ACPI 4477specification. 4478 4479The ACPI Power Management Timer (defined in the FADT) is now optional. 4480This provides compatibility with other ACPI implementations and will 4481appear in the next version of the ACPI specification. If there is no PM 4482Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4483zero in the FADT indicates no PM timer. 4484 4485Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4486allows the host to globally enable/disable all vendor strings, all 4487feature strings, or both. Intended to be primarily used for debugging 4488purposes only. Lv Zheng. 4489 4490Expose the collected _OSI data to the host via a global variable. This 4491data tracks the highest level vendor ID that has been invoked by the BIOS 4492so that the host (and potentially ACPICA itself) can change behaviors 4493based upon the age of the BIOS. 4494 4495Example Code and Data Size: These are the sizes for the OS-independent 4496acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4497debug version of the code includes the debug output trace mechanism and 4498has a much larger code and data size. 4499 4500 Current Release: 4501 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4502 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4503 Previous Release: 4504 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4505 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4506 4507 45082) iASL Compiler/Disassembler and Tools: 4509 4510iASL: Created the following enhancements for the -so option (create 4511offset table): 45121)Add offsets for the last nameseg in each namepath for every supported 4513object type 45142)Add support for Processor, Device, Thermal Zone, and Scope objects 45153)Add the actual AML opcode for the parent object of every supported 4516object type 45174)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4518 4519Disassembler: Emit all unresolved external symbols in a single block. 4520These are external references to control methods that could not be 4521resolved, and thus, the disassembler had to make a guess at the number of 4522arguments to parse. 4523 4524iASL: The argument to the -T option (create table template) is now 4525optional. If not specified, the default table is a DSDT, typically the 4526most common case. 4527 4528---------------------------------------- 452926 June 2013. Summary of changes for version 20130626: 4530 45311) ACPICA kernel-resident subsystem: 4532 4533Fixed an issue with runtime repair of the _CST object. Null or invalid 4534elements were not always removed properly. Lv Zheng. 4535 4536Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 4537FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 4538the maximum number of GPEs is 1016. Use of multiple GPE block devices 4539makes the system-wide number of GPEs essentially unlimited. 4540 4541Example Code and Data Size: These are the sizes for the OS-independent 4542acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4543debug version of the code includes the debug output trace mechanism and 4544has a much larger code and data size. 4545 4546 Current Release: 4547 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4548 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4549 Previous Release: 4550 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4551 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4552 4553 45542) iASL Compiler/Disassembler and Tools: 4555 4556Portable AcpiDump: Implemented full support for the Linux and FreeBSD 4557hosts. Now supports Linux, FreeBSD, and Windows. 4558 4559Disassembler: Added some missing types for the HEST and EINJ tables: "Set 4560Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 4561 4562iASL/Preprocessor: Implemented full support for nested 4563#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 4564 4565Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 4566max. The original purpose of this constraint was to limit the amount of 4567debug output. However, the string function in question (UtPrintString) is 4568now used for the disassembler also, where 256 bytes is insufficient. 4569Reported by RehabMan@GitHub. 4570 4571iASL/DataTables: Fixed some problems and issues with compilation of DMAR 4572tables. ACPICA BZ 999. Lv Zheng. 4573 4574iASL: Fixed a couple of error exit issues that could result in a "Could 4575not delete <file>" message during ASL compilation. 4576 4577AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 4578the actual signatures for these tables are "FACP" and "APIC", 4579respectively. 4580 4581AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 4582tables are allowed to have multiple instances. 4583 4584---------------------------------------- 458517 May 2013. Summary of changes for version 20130517: 4586 45871) ACPICA kernel-resident subsystem: 4588 4589Fixed a regression introduced in version 20130328 for _INI methods. This 4590change fixes a problem introduced in 20130328 where _INI methods are no 4591longer executed properly because of a memory block that was not 4592initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 4593<tomasz.nowicki@linaro.org>. 4594 4595Fixed a possible problem with the new extended sleep registers in the 4596ACPI 45975.0 FADT. Do not use these registers (even if populated) unless the HW- 4598reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 45991020. Lv Zheng. 4600 4601Implemented return value repair code for _CST predefined objects: Sort 4602the 4603list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4604 4605Implemented a debug-only option to disable loading of SSDTs from the 4606RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4607ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4608acglobal.h - ACPICA BZ 1005. Lv Zheng. 4609 4610Fixed some issues in the ACPICA initialization and termination code: 4611Tomasz Nowicki <tomasz.nowicki@linaro.org> 46121) Clear events initialized flag upon event component termination. ACPICA 4613BZ 1013. 46142) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 46153) Delete global lock pending lock during termination. ACPICA BZ 1012. 46164) Clear debug buffer global on termination to prevent possible multiple 4617delete. ACPICA BZ 1010. 4618 4619Standardized all switch() blocks across the entire source base. After 4620many 4621years, different formatting for switch() had crept in. This change makes 4622the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4623 4624Split some files to enhance ACPICA modularity and configurability: 46251) Split buffer dump routines into utilities/utbuffer.c 46262) Split internal error message routines into utilities/uterror.c 46273) Split table print utilities into tables/tbprint.c 46284) Split iASL command-line option processing into asloptions.c 4629 4630Makefile enhancements: 46311) Support for all new files above. 46322) Abort make on errors from any subcomponent. Chao Guan. 46333) Add build support for Apple Mac OS X. Liang Qi. 4634 4635Example Code and Data Size: These are the sizes for the OS-independent 4636acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4637debug version of the code includes the debug output trace mechanism and 4638has a much larger code and data size. 4639 4640 Current Release: 4641 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4642 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4643 Previous Release: 4644 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4645 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4646 4647 46482) iASL Compiler/Disassembler and Tools: 4649 4650New utility: Implemented an easily portable version of the acpidump 4651utility to extract ACPI tables from the system (or a file) in an ASCII 4652hex 4653dump format. The top-level code implements the various command line 4654options, file I/O, and table dump routines. To port to a new host, only 4655three functions need to be implemented to get tables -- since this 4656functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4657the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 46581) The Windows version obtains the ACPI tables from the Registry. 46592) The Linux version is under development. 46603) Other hosts - If an OS-dependent module is submitted, it will be 4661distributed with ACPICA. 4662 4663iASL: Fixed a regression for -D preprocessor option (define symbol). A 4664restructuring/change to the initialization sequence caused this option to 4665no longer work properly. 4666 4667iASL: Implemented a mechanism to disable specific warnings and remarks. 4668Adds a new command line option, "-vw <messageid> as well as "#pragma 4669disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4670 4671iASL: Fix for too-strict package object validation. The package object 4672validation for return values from the predefined names is a bit too 4673strict, it does not allow names references within the package (which will 4674be resolved at runtime.) These types of references cannot be validated at 4675compile time. This change ignores named references within package objects 4676for names that return or define static packages. 4677 4678Debugger: Fixed the 80-character command line limitation for the History 4679command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4680 4681iASL: Added control method and package support for the -so option 4682(generates AML offset table for BIOS support.) 4683 4684iASL: issue a remark if a non-serialized method creates named objects. If 4685a thread blocks within the method for any reason, and another thread 4686enters the method, the method will fail because an attempt will be made 4687to 4688create the same (named) object twice. In this case, issue a remark that 4689the method should be marked serialized. NOTE: may become a warning later. 4690ACPICA BZ 909. 4691 4692---------------------------------------- 469318 April 2013. Summary of changes for version 20130418: 4694 46951) ACPICA kernel-resident subsystem: 4696 4697Fixed a possible buffer overrun during some rare but specific field unit 4698read operations. This overrun can only happen if the DSDT version is 1 -- 4699meaning that all AML integers are 32 bits -- and the field length is 4700between 33 and 55 bits long. During the read, an internal buffer object 4701is 4702created for the field unit because the field is larger than an integer 4703(32 4704bits). However, in this case, the buffer will be incorrectly written 4705beyond the end because the buffer length is less than the internal 4706minimum 4707of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4708long, but a full 8 bytes will be written. 4709 4710Updated the Embedded Controller "orphan" _REG method support. This refers 4711to _REG methods under the EC device that have no corresponding operation 4712region. This is allowed by the ACPI specification. This update removes a 4713dependency on the existence an ECDT table. It will execute an orphan _REG 4714method as long as the operation region handler for the EC is installed at 4715the EC device node and not the namespace root. Rui Zhang (original 4716update), Bob Moore (update/integrate). 4717 4718Implemented run-time argument typechecking for all predefined ACPI names 4719(_STA, _BIF, etc.) This change performs object typechecking on all 4720incoming arguments for all predefined names executed via 4721AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4722passing correct object types as well as the correct number of arguments 4723(therefore identifying any issues immediately). Also, the ASL/namespace 4724definition of the predefined name is checked against the ACPI 4725specification for the proper argument count. Adds one new file, 4726nsarguments.c 4727 4728Changed an exception code for the ASL UnLoad() operator. Changed the 4729exception code for the case where the input DdbHandle is invalid, from 4730AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4731 4732Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4733global makefile. The use of this flag causes compiler errors on earlier 4734versions of GCC, so it has been removed for compatibility. 4735 4736Miscellaneous cleanup: 47371) Removed some unused/obsolete macros 47382) Fixed a possible memory leak in the _OSI support 47393) Removed an unused variable in the predefined name support 47404) Windows OSL: remove obsolete reference to a memory list field 4741 4742Example Code and Data Size: These are the sizes for the OS-independent 4743acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4744debug version of the code includes the debug output trace mechanism and 4745has a much larger code and data size. 4746 4747 Current Release: 4748 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4749 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4750 Previous Release: 4751 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4752 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4753 4754 47552) iASL Compiler/Disassembler and Tools: 4756 4757AcpiExec: Added installation of a handler for the SystemCMOS address 4758space. This prevents control method abort if a method accesses this 4759space. 4760 4761AcpiExec: Added support for multiple EC devices, and now install EC 4762operation region handler(s) at the actual EC device instead of the 4763namespace root. This reflects the typical behavior of host operating 4764systems. 4765 4766AcpiExec: Updated to ensure that all operation region handlers are 4767installed before the _REG methods are executed. This prevents a _REG 4768method from aborting if it accesses an address space has no handler. 4769AcpiExec installs a handler for every possible address space. 4770 4771Debugger: Enhanced the "handlers" command to display non-root handlers. 4772This change enhances the handlers command to display handlers associated 4773with individual devices throughout the namespace, in addition to the 4774currently supported display of handlers associated with the root 4775namespace 4776node. 4777 4778ASL Test Suite: Several test suite errors have been identified and 4779resolved, reducing the total error count during execution. Chao Guan. 4780 4781---------------------------------------- 478228 March 2013. Summary of changes for version 20130328: 4783 47841) ACPICA kernel-resident subsystem: 4785 4786Fixed several possible race conditions with the internal object reference 4787counting mechanism. Some of the external ACPICA interfaces update object 4788reference counts without holding the interpreter or namespace lock. This 4789change adds a spinlock to protect reference count updates on the internal 4790ACPICA objects. Reported by and with assistance from Andriy Gapon 4791(avg@FreeBSD.org). 4792 4793FADT support: Removed an extraneous warning for very large GPE register 4794sets. This change removes a size mismatch warning if the legacy length 4795field for a GPE register set is larger than the 64-bit GAS structure can 4796accommodate. GPE register sets can be larger than the 255-bit width 4797limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4798 4799_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4800return from this interface. Handles a possible timeout case if 4801ACPI_WAIT_FOREVER is modified by the host to be a value less than 4802"forever". Jung-uk Kim. 4803 4804Predefined name support: Add allowed/required argument type information 4805to 4806the master predefined info table. This change adds the infrastructure to 4807enable typechecking on incoming arguments for all predefined 4808methods/objects. It does not actually contain the code that will fully 4809utilize this information, this is still under development. Also condenses 4810some duplicate code for the predefined names into a new module, 4811utilities/utpredef.c 4812 4813Example Code and Data Size: These are the sizes for the OS-independent 4814acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4815debug version of the code includes the debug output trace mechanism and 4816has a much larger code and data size. 4817 4818 Previous Release: 4819 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4820 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4821 Current Release: 4822 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4823 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4824 4825 48262) iASL Compiler/Disassembler and Tools: 4827 4828iASL: Implemented a new option to simplify the development of ACPI- 4829related 4830BIOS code. Adds support for a new "offset table" output file. The -so 4831option will create a C table containing the AML table offsets of various 4832named objects in the namespace so that BIOS code can modify them easily 4833at 4834boot time. This can simplify BIOS runtime code by eliminating expensive 4835searches for "magic values", enhancing boot times and adding greater 4836reliability. With assistance from Lee Hamel. 4837 4838iASL: Allow additional predefined names to return zero-length packages. 4839Now, all predefined names that are defined by the ACPI specification to 4840return a "variable-length package of packages" are allowed to return a 4841zero length top-level package. This allows the BIOS to tell the host that 4842the requested feature is not supported, and supports existing BIOS/ASL 4843code and practices. 4844 4845iASL: Changed the "result not used" warning to an error. This is the case 4846where an ASL operator is effectively a NOOP because the result of the 4847operation is not stored anywhere. For example: 4848 Add (4, Local0) 4849There is no target (missing 3rd argument), nor is the function return 4850value used. This is potentially a very serious problem -- since the code 4851was probably intended to do something, but for whatever reason, the value 4852was not stored. Therefore, this issue has been upgraded from a warning to 4853an error. 4854 4855AcpiHelp: Added allowable/required argument types to the predefined names 4856info display. This feature utilizes the recent update to the predefined 4857names table (above). 4858 4859---------------------------------------- 486014 February 2013. Summary of changes for version 20130214: 4861 48621) ACPICA Kernel-resident Subsystem: 4863 4864Fixed a possible regression on some hosts: Reinstated the safe return 4865macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4866evaluated only once. Although these macros are not needed for the ACPICA 4867code itself, they are often used by ACPI-related host device drivers 4868where 4869the safe feature may be necessary. 4870 4871Fixed several issues related to the ACPI 5.0 reduced hardware support 4872(SOC): Now ensure that if the platform declares itself as hardware- 4873reduced 4874via the FADT, the following functions become NOOPs (and always return 4875AE_OK) because ACPI is always enabled by definition on these machines: 4876 AcpiEnable 4877 AcpiDisable 4878 AcpiHwGetMode 4879 AcpiHwSetMode 4880 4881Dynamic Object Repair: Implemented additional runtime repairs for 4882predefined name return values. Both of these repairs can simplify code in 4883the related device drivers that invoke these methods: 48841) For the _STR and _MLS names, automatically repair/convert an ASCII 4885string to a Unicode buffer. 48862) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4887a 4888lone end tag descriptor in the following cases: A Return(0) was executed, 4889a null buffer was returned, or no object at all was returned (non-slack 4890mode only). Adds a new file, nsconvert.c 4891ACPICA BZ 998. Bob Moore, Lv Zheng. 4892 4893Resource Manager: Added additional code to prevent possible infinite 4894loops 4895while traversing corrupted or ill-formed resource template buffers. Check 4896for zero-length resource descriptors in all code that loops through 4897resource templates (the length field is used to index through the 4898template). This change also hardens the external AcpiWalkResources and 4899AcpiWalkResourceBuffer interfaces. 4900 4901Local Cache Manager: Enhanced the main data structure to eliminate an 4902unnecessary mechanism to access the next object in the list. Actually 4903provides a small performance enhancement for hosts that use the local 4904ACPICA cache manager. Jung-uk Kim. 4905 4906Example Code and Data Size: These are the sizes for the OS-independent 4907acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4908debug version of the code includes the debug output trace mechanism and 4909has a much larger code and data size. 4910 4911 Previous Release: 4912 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4913 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4914 Current Release: 4915 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4916 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4917 4918 49192) iASL Compiler/Disassembler and Tools: 4920 4921iASL/Disassembler: Fixed several issues with the definition of the ACPI 49225.0 RASF table (RAS Feature Table). This change incorporates late changes 4923that were made to the ACPI 5.0 specification. 4924 4925iASL/Disassembler: Added full support for the following new ACPI tables: 4926 1) The MTMR table (MID Timer Table) 4927 2) The VRTC table (Virtual Real Time Clock Table). 4928Includes header file, disassembler, table compiler, and template support 4929for both tables. 4930 4931iASL: Implemented compile-time validation of package objects returned by 4932predefined names. This new feature validates static package objects 4933returned by the various predefined names defined to return packages. Both 4934object types and package lengths are validated, for both parent packages 4935and sub-packages, if any. The code is similar in structure and behavior 4936to 4937the runtime repair mechanism within the AML interpreter and uses the 4938existing predefined name information table. Adds a new file, aslprepkg.c. 4939ACPICA BZ 938. 4940 4941iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4942This feature detects a binary file with a valid ACPI table header and 4943invokes the disassembler automatically. Eliminates the need to 4944specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4945 4946iASL/Disassembler: Added several warnings for the case where there are 4947unresolved control methods during the disassembly. This can potentially 4948cause errors when the output file is compiled, because the disassembler 4949assumes zero method arguments in these cases (it cannot determine the 4950actual number of arguments without resolution/definition of the method). 4951 4952Debugger: Added support to display all resources with a single command. 4953Invocation of the resources command with no arguments will now display 4954all 4955resources within the current namespace. 4956 4957AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4958via the -e option. 4959 4960---------------------------------------- 496117 January 2013. Summary of changes for version 20130117: 4962 49631) ACPICA Kernel-resident Subsystem: 4964 4965Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4966return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4967objects to return a package containing one integer, most BIOS code 4968returns 4969two integers and the previous code reflects that. However, we also need 4970to 4971support BIOS code that actually implements to the ACPI spec, and this 4972change reflects this. 4973 4974Fixed two issues with the ACPI_DEBUG_PRINT macros: 49751) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4976C compilers that require this support. 49772) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4978ACPI_DEBUG is already used by many of the various hosts. 4979 4980Updated all ACPICA copyrights and signons to 2013. Added the 2013 4981copyright to all module headers and signons, including the standard Linux 4982header. This affects virtually every file in the ACPICA core subsystem, 4983iASL compiler, all ACPICA utilities, and the test suites. 4984 4985Example Code and Data Size: These are the sizes for the OS-independent 4986acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4987debug version of the code includes the debug output trace mechanism and 4988has a much larger code and data size. 4989 4990 Previous Release: 4991 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4992 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4993 Current Release: 4994 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4995 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4996 4997 49982) iASL Compiler/Disassembler and Tools: 4999 5000Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 5001prevent a possible fault on some hosts. Some C libraries modify the arg 5002pointer parameter to vfprintf making it difficult to call it twice in the 5003AcpiOsVprintf function. Use a local buffer to workaround this issue. This 5004does not affect the Windows OSL since the Win C library does not modify 5005the arg pointer. Chao Guan, Bob Moore. 5006 5007iASL: Fixed a possible infinite loop when the maximum error count is 5008reached. If an output file other than the .AML file is specified (such as 5009a listing file), and the maximum number of errors is reached, do not 5010attempt to flush data to the output file(s) as the compiler is aborting. 5011This can cause an infinite loop as the max error count code essentially 5012keeps calling itself. 5013 5014iASL/Disassembler: Added an option (-in) to ignore NOOP 5015opcodes/operators. 5016Implemented for both the compiler and the disassembler. Often, the NOOP 5017opcode is used as padding for packages that are changed dynamically by 5018the 5019BIOS. When disassembled and recompiled, these NOOPs will cause syntax 5020errors. This option causes the disassembler to ignore all NOOP opcodes 5021(0xA3), and it also causes the compiler to ignore all ASL source code 5022NOOP 5023statements as well. 5024 5025Debugger: Enhanced the Sleep command to execute all sleep states. This 5026change allows Sleep to be invoked with no arguments and causes the 5027debugger to execute all of the sleep states, 0-5, automatically. 5028 5029---------------------------------------- 503020 December 2012. Summary of changes for version 20121220: 5031 50321) ACPICA Kernel-resident Subsystem: 5033 5034Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 5035alternate entry point for AcpiWalkResources and improves the usability of 5036the resource manager by accepting as input a buffer containing the output 5037of either a _CRS, _PRS, or _AEI method. The key functionality is that the 5038input buffer is not deleted by this interface so that it can be used by 5039the host later. See the ACPICA reference for details. 5040 5041Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 5042(DSDT version < 2). The constant will be truncated and this warning 5043reflects that behavior. 5044 5045Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 5046ExtendedInterrupt, and GpioInt descriptors. This change adds support to 5047both get and set the new wake bit in these descriptors, separately from 5048the existing share bit. Reported by Aaron Lu. 5049 5050Interpreter: Fix Store() when an implicit conversion is not possible. For 5051example, in the cases such as a store of a string to an existing package 5052object, implement the store as a CopyObject(). This is a small departure 5053from the ACPI specification which states that the control method should 5054be 5055aborted in this case. However, the ASLTS suite depends on this behavior. 5056 5057Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 5058macros: check if debug output is currently enabled as soon as possible to 5059minimize performance impact if debug is in fact not enabled. 5060 5061Source code restructuring: Cleanup to improve modularity. The following 5062new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 5063psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 5064Associated makefiles and project files have been updated. 5065 5066Changed an exception code for LoadTable operator. For the case where one 5067of the input strings is too long, change the returned exception code from 5068AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 5069 5070Fixed a possible memory leak in dispatcher error path. On error, delete 5071the mutex object created during method mutex creation. Reported by 5072tim.gardner@canonical.com. 5073 5074Example Code and Data Size: These are the sizes for the OS-independent 5075acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5076debug version of the code includes the debug output trace mechanism and 5077has a much larger code and data size. 5078 5079 Previous Release: 5080 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5081 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5082 Current Release: 5083 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 5084 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 5085 5086 50872) iASL Compiler/Disassembler and Tools: 5088 5089iASL: Disallow a method call as argument to the ObjectType ASL operator. 5090This change tracks an errata to the ACPI 5.0 document. The AML grammar 5091will not allow the interpreter to differentiate between a method and a 5092method invocation when these are used as an argument to the ObjectType 5093operator. The ACPI specification change is to disallow a method 5094invocation 5095(UserTerm) for the ObjectType operator. 5096 5097Finish support for the TPM2 and CSRT tables in the headers, table 5098compiler, and disassembler. 5099 5100Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 5101always expires immediately if the semaphore is not available. The 5102original 5103code was using a relative-time timeout, but sem_timedwait requires the 5104use 5105of an absolute time. 5106 5107iASL: Added a remark if the Timer() operator is used within a 32-bit 5108table. This operator returns a 64-bit time value that will be truncated 5109within a 32-bit table. 5110 5111iASL Source code restructuring: Cleanup to improve modularity. The 5112following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 5113aslmethod.c, and aslfileio.c. Associated makefiles and project files have 5114been updated. 5115 5116 5117---------------------------------------- 511814 November 2012. Summary of changes for version 20121114: 5119 51201) ACPICA Kernel-resident Subsystem: 5121 5122Implemented a performance enhancement for ACPI/AML Package objects. This 5123change greatly increases the performance of Package objects within the 5124interpreter. It changes the processing of reference counts for packages 5125by 5126optimizing for the most common case where the package sub-objects are 5127either Integers, Strings, or Buffers. Increases the overall performance 5128of 5129the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 51302X.) 5131Chao Guan. ACPICA BZ 943. 5132 5133Implemented and deployed common macros to extract flag bits from resource 5134descriptors. Improves readability and maintainability of the code. Fixes 5135a 5136problem with the UART serial bus descriptor for the number of data bits 5137flags (was incorrectly 2 bits, should be 3). 5138 5139Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5140of the macros and changed the SETx macros to the style of (destination, 5141source). Also added ACPI_CASTx companion macros. Lv Zheng. 5142 5143Example Code and Data Size: These are the sizes for the OS-independent 5144acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5145debug version of the code includes the debug output trace mechanism and 5146has a much larger code and data size. 5147 5148 Previous Release: 5149 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5150 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5151 Current Release: 5152 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5153 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5154 5155 51562) iASL Compiler/Disassembler and Tools: 5157 5158Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5159adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5160Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5161 5162Disassembler: Fixed a problem with external declaration generation. Fixes 5163a problem where an incorrect pathname could be generated for an external 5164declaration if the original reference to the object includes leading 5165carats (^). ACPICA BZ 984. 5166 5167Debugger: Completed a major update for the Disassemble<method> command. 5168This command was out-of-date and did not properly disassemble control 5169methods that had any reasonable complexity. This fix brings the command 5170up 5171to the same level as the rest of the disassembler. Adds one new file, 5172dmdeferred.c, which is existing code that is now common with the main 5173disassembler and the debugger disassemble command. ACPICA MZ 978. 5174 5175iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5176Newer versions of Bison emit this prototype, so moved the prototype out 5177of 5178the iASL header to where it is actually used in order to avoid a 5179duplicate 5180declaration. 5181 5182iASL/Tools: Standardized use of the stream I/O functions: 5183 1) Ensure check for I/O error after every fopen/fread/fwrite 5184 2) Ensure proper order of size/count arguments for fread/fwrite 5185 3) Use test of (Actual != Requested) after all fwrite, and most fread 5186 4) Standardize I/O error messages 5187Improves reliability and maintainability of the code. Bob Moore, Lv 5188Zheng. 5189ACPICA BZ 981. 5190 5191Disassembler: Prevent duplicate External() statements. During generation 5192of external statements, detect similar pathnames that are actually 5193duplicates such as these: 5194 External (\ABCD) 5195 External (ABCD) 5196Remove all leading '\' characters from pathnames during the external 5197statement generation so that duplicates will be detected and tossed. 5198ACPICA BZ 985. 5199 5200Tools: Replace low-level I/O with stream I/O functions. Replace 5201open/read/write/close with the stream I/O equivalents 5202fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5203Moore. 5204 5205AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5206name header so that AcpiXtract recognizes the output file/table. 5207 5208iASL: Remove obsolete -2 option flag. Originally intended to force the 5209compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5210and the entire concept is now obsolete. 5211 5212---------------------------------------- 521318 October 2012. Summary of changes for version 20121018: 5214 5215 52161) ACPICA Kernel-resident Subsystem: 5217 5218Updated support for the ACPI 5.0 MPST table. Fixes some problems 5219introduced by late changes to the table as it was added to the ACPI 5.0 5220specification. Includes header, disassembler, and data table compiler 5221support as well as a new version of the MPST template. 5222 5223AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 52245.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5225methods: _HID, _CID, and _UID. 5226 5227Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5228ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5229name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5230names for their various drivers. Affects the AcpiGetObjectInfo external 5231interface, and other internal interfaces as well. 5232 5233Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5234This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5235on machines that support non-aligned transfers. Optimizes for this case 5236rather than using a strncpy. With assistance from Zheng Lv. 5237 5238Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5239error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5240 5241Added a new debug print message for AML mutex objects that are force- 5242released. At control method termination, any currently acquired mutex 5243objects are force-released. Adds a new debug-only message for each one 5244that is released. 5245 5246Audited/updated all ACPICA return macros and the function debug depth 5247counter: 1) Ensure that all functions that use the various TRACE macros 5248also use the appropriate ACPICA return macros. 2) Ensure that all normal 5249return statements surround the return expression (value) with parens to 5250ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5251Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5252 5253Global source code changes/maintenance: All extra lines at the start and 5254end of each source file have been removed for consistency. Also, within 5255comments, all new sentences start with a single space instead of a double 5256space, again for consistency across the code base. 5257 5258Example Code and Data Size: These are the sizes for the OS-independent 5259acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5260debug version of the code includes the debug output trace mechanism and 5261has a much larger code and data size. 5262 5263 Previous Release: 5264 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5265 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5266 Current Release: 5267 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5268 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5269 5270 52712) iASL Compiler/Disassembler and Tools: 5272 5273AcpiExec: Improved the algorithm used for memory leak/corruption 5274detection. Added some intelligence to the code that maintains the global 5275list of allocated memory. The list is now ordered by allocated memory 5276address, significantly improving performance. When running AcpiExec on 5277the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5278on the platform and/or the environment. Note, this performance 5279enhancement affects the AcpiExec utility only, not the kernel-resident 5280ACPICA code. 5281 5282Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5283the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5284incorrect table offset reported for invalid opcodes. Report the original 528532-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5286 5287Disassembler: Enhanced the -vt option to emit the binary table data in 5288hex format to assist with debugging. 5289 5290Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5291size of file structure. Colin Ian King. 5292 5293---------------------------------------- 529413 September 2012. Summary of changes for version 20120913: 5295 5296 52971) ACPICA Kernel-resident Subsystem: 5298 5299ACPI 5.0: Added two new notify types for the Hardware Error Notification 5300Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5301and 5302MCE(6). 5303 5304Table Manager: Merged/removed duplicate code in the root table resize 5305functions. One function is external, the other is internal. Lv Zheng, 5306ACPICA 5307BZ 846. 5308 5309Makefiles: Completely removed the obsolete "Linux" makefiles under 5310acpica/generate/linux. These makefiles are obsolete and have been 5311replaced 5312by 5313the generic unix makefiles under acpica/generate/unix. 5314 5315Makefiles: Ensure that binary files always copied properly. Minor rule 5316change 5317to ensure that the final binary output files are always copied up to the 5318appropriate binary directory (bin32 or bin64.) 5319 5320Example Code and Data Size: These are the sizes for the OS-independent 5321acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5322debug 5323version of the code includes the debug output trace mechanism and has a 5324much 5325larger code and data size. 5326 5327 Previous Release: 5328 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5329 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5330 Current Release: 5331 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5332 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5333 5334 53352) iASL Compiler/Disassembler and Tools: 5336 5337Disassembler: Fixed a possible fault during the disassembly of resource 5338descriptors when a second parse is required because of the invocation of 5339external control methods within the table. With assistance from 5340adq@lidskialf.net. ACPICA BZ 976. 5341 5342iASL: Fixed a namepath optimization problem. An error can occur if the 5343parse 5344node that contains the namepath to be optimized does not have a parent 5345node 5346that is a named object. This change fixes the problem. 5347 5348iASL: Fixed a regression where the AML file is not deleted on errors. The 5349AML 5350output file should be deleted if there are any errors during the 5351compiler. 5352The 5353only exception is if the -f (force output) option is used. ACPICA BZ 974. 5354 5355iASL: Added a feature to automatically increase internal line buffer 5356sizes. 5357Via realloc(), automatically increase the internal line buffer sizes as 5358necessary to support very long source code lines. The current version of 5359the 5360preprocessor requires a buffer long enough to contain full source code 5361lines. 5362This change increases the line buffer(s) if the input lines go beyond the 5363current buffer size. This eliminates errors that occurred when a source 5364code 5365line was longer than the buffer. 5366 5367iASL: Fixed a problem with constant folding in method declarations. The 5368SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5369if a 5370Type3 opcode was used. 5371 5372Debugger: Improved command help support. For incorrect argument count, 5373display 5374full help for the command. For help command itself, allow an argument to 5375specify a command. 5376 5377Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5378errors during execution of the suite. Guan Chao. 5379 5380---------------------------------------- 538116 August 2012. Summary of changes for version 20120816: 5382 5383 53841) ACPICA Kernel-resident Subsystem: 5385 5386Removed all use of the deprecated _GTS and _BFS predefined methods. The 5387_GTS 5388(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5389deprecated and will probably be removed from the ACPI specification. 5390Windows 5391does not invoke them, and reportedly never will. The final nail in the 5392coffin 5393is that the ACPI specification states that these methods must be run with 5394interrupts off, which is not going to happen in a kernel interpreter. 5395Note: 5396Linux has removed all use of the methods also. It was discovered that 5397invoking these functions caused failures on some machines, probably 5398because 5399they were never tested since Windows does not call them. Affects two 5400external 5401interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5402ACPICA BZ 969. 5403 5404Implemented support for complex bit-packed buffers returned from the _PLD 5405(Physical Location of Device) predefined method. Adds a new external 5406interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5407C 5408structure. Note: C Bitfields cannot be used for this type of predefined 5409structure since the memory layout of individual bitfields is not defined 5410by 5411the C language. In addition, there are endian concerns where a compiler 5412will 5413change the bitfield ordering based on the machine type. The new ACPICA 5414interface eliminates these issues, and should be called after _PLD is 5415executed. ACPICA BZ 954. 5416 5417Implemented a change to allow a scope change to root (via "Scope (\)") 5418during 5419execution of module-level ASL code (code that is executed at table load 5420time.) Lin Ming. 5421 5422Added the Windows8/Server2012 string for the _OSI method. This change 5423adds 5424a 5425new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 54262012. 5427 5428Added header support for the new ACPI tables DBG2 (Debug Port Table Type 54292) 5430and CSRT (Core System Resource Table). 5431 5432Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5433names. This simplifies access to the buffers returned by these predefined 5434names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5435 5436GPE support: Removed an extraneous parameter from the various low-level 5437internal GPE functions. Tang Feng. 5438 5439Removed the linux makefiles from the unix packages. The generate/linux 5440makefiles are obsolete and have been removed from the unix tarball 5441release 5442packages. The replacement makefiles are under generate/unix, and there is 5443a 5444top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5445 5446Updates for Unix makefiles: 54471) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 54482) Update linker flags (move to end of command line) for AcpiExec 5449utility. 5450Guan Chao. 5451 5452Split ACPICA initialization functions to new file, utxfinit.c. Split from 5453utxface.c to improve modularity and reduce file size. 5454 5455Example Code and Data Size: These are the sizes for the OS-independent 5456acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5457debug version of the code includes the debug output trace mechanism and 5458has a 5459much larger code and data size. 5460 5461 Previous Release: 5462 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5463 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5464 Current Release: 5465 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5466 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5467 5468 54692) iASL Compiler/Disassembler and Tools: 5470 5471iASL: Fixed a problem with constant folding for fixed-length constant 5472expressions. The constant-folding code was not being invoked for constant 5473expressions that allow the use of type 3/4/5 opcodes to generate 5474constants 5475for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5476result 5477in the generation of invalid AML bytecode. ACPICA BZ 970. 5478 5479iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5480apparently automatically emit some of the necessary externals. This 5481change 5482handles these versions in order to eliminate generation warnings. 5483 5484Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5485 5486Disassembler: Add support to decode _PLD buffers. The decoded buffer 5487appears 5488within comments in the output file. 5489 5490Debugger: Fixed a regression with the "Threads" command where 5491AE_BAD_PARAMETER was always returned. 5492 5493---------------------------------------- 549411 July 2012. Summary of changes for version 20120711: 5495 54961) ACPICA Kernel-resident Subsystem: 5497 5498Fixed a possible fault in the return package object repair code. Fixes a 5499problem that can occur when a lone package object is wrapped with an 5500outer 5501package object in order to force conformance to the ACPI specification. 5502Can 5503affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5504_DLM, 5505_CSD, _PSD, _TSD. 5506 5507Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5508PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5509ARB_DIS bit must be implemented in the host-dependent C3 processor power 5510state 5511support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5512both 5513Intel and other vendors. (for Intel: ICH4-M and earlier) 5514 5515This change removes the code to disable/enable bus master arbitration 5516during 5517suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5518causes 5519resume problems on some machines. The change has been in use for over 5520seven 5521years within Linux. 5522 5523Implemented two new external interfaces to support host-directed dynamic 5524ACPI 5525table load and unload. They are intended to simplify the host 5526implementation 5527of hot-plug support: 5528 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5529 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5530table. 5531See the ACPICA reference for additional details. Adds one new file, 5532components/tables/tbxfload.c 5533 5534Implemented and deployed two new interfaces for errors and warnings that 5535are 5536known to be caused by BIOS/firmware issues: 5537 AcpiBiosError: Prints "ACPI Firmware Error" message. 5538 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 5539Deployed these new interfaces in the ACPICA Table Manager code for ACPI 5540table 5541and FADT errors. Additional deployment to be completed as appropriate in 5542the 5543future. The associated conditional macros are ACPI_BIOS_ERROR and 5544ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 5545ACPICA 5546BZ 5547843. 5548 5549Implicit notify support: ensure that no memory allocation occurs within a 5550critical region. This fix moves a memory allocation outside of the time 5551that a 5552spinlock is held. Fixes issues on systems that do not allow this 5553behavior. 5554Jung-uk Kim. 5555 5556Split exception code utilities and tables into a new file, 5557utilities/utexcep.c 5558 5559Example Code and Data Size: These are the sizes for the OS-independent 5560acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5561debug 5562version of the code includes the debug output trace mechanism and has a 5563much 5564larger code and data size. 5565 5566 Previous Release: 5567 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5568 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5569 Current Release: 5570 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5571 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5572 5573 55742) iASL Compiler/Disassembler and Tools: 5575 5576iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 5577of 55780. Jung-uk Kim. 5579 5580Debugger: Enhanced the "tables" command to emit additional information 5581about 5582the current set of ACPI tables, including the owner ID and flags decode. 5583 5584Debugger: Reimplemented the "unload" command to use the new 5585AcpiUnloadParentTable external interface. This command was disable 5586previously 5587due to need for an unload interface. 5588 5589AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 5590option 5591will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 5592 5593---------------------------------------- 559420 June 2012. Summary of changes for version 20120620: 5595 5596 55971) ACPICA Kernel-resident Subsystem: 5598 5599Implemented support to expand the "implicit notify" feature to allow 5600multiple 5601devices to be notified by a single GPE. This feature automatically 5602generates a 5603runtime device notification in the absence of a BIOS-provided GPE control 5604method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5605notify is 5606provided by ACPICA for Windows compatibility, and is a workaround for 5607BIOS 5608AML 5609code errors. See the description of the AcpiSetupGpeForWake interface in 5610the 5611APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5612 5613Changed some comments and internal function names to simplify and ensure 5614correctness of the Linux code translation. No functional changes. 5615 5616Example Code and Data Size: These are the sizes for the OS-independent 5617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5618debug 5619version of the code includes the debug output trace mechanism and has a 5620much 5621larger code and data size. 5622 5623 Previous Release: 5624 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5625 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5626 Current Release: 5627 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5628 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5629 5630 56312) iASL Compiler/Disassembler and Tools: 5632 5633Disassembler: Added support to emit short, commented descriptions for the 5634ACPI 5635predefined names in order to improve the readability of the disassembled 5636output. ACPICA BZ 959. Changes include: 5637 1) Emit descriptions for all standard predefined names (_INI, _STA, 5638_PRW, 5639etc.) 5640 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5641 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5642etc.) 5643 5644AcpiSrc: Fixed several long-standing Linux code translation issues. 5645Argument 5646descriptions in function headers are now translated properly to lower 5647case 5648and 5649underscores. ACPICA BZ 961. Also fixes translation problems such as 5650these: 5651(old -> new) 5652 i_aSL -> iASL 5653 00-7_f -> 00-7F 5654 16_k -> 16K 5655 local_fADT -> local_FADT 5656 execute_oSI -> execute_OSI 5657 5658iASL: Fixed a problem where null bytes were inadvertently emitted into 5659some 5660listing files. 5661 5662iASL: Added the existing debug options to the standard help screen. There 5663are 5664no longer two different help screens. ACPICA BZ 957. 5665 5666AcpiHelp: Fixed some typos in the various predefined name descriptions. 5667Also 5668expand some of the descriptions where appropriate. 5669 5670iASL: Fixed the -ot option (display compile times/statistics). Was not 5671working 5672properly for standard output; only worked for the debug file case. 5673 5674---------------------------------------- 567518 May 2012. Summary of changes for version 20120518: 5676 5677 56781) ACPICA Core Subsystem: 5679 5680Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5681defined 5682to block until asynchronous events such as notifies and GPEs have 5683completed. 5684Within ACPICA, it is only called before a notify or GPE handler is 5685removed/uninstalled. It also may be useful for the host OS within related 5686drivers such as the Embedded Controller driver. See the ACPICA reference 5687for 5688additional information. ACPICA BZ 868. 5689 5690ACPI Tables: Added a new error message for a possible overflow failure 5691during 5692the conversion of FADT 32-bit legacy register addresses to internal 5693common 569464- 5695bit GAS structure representation. The GAS has a one-byte "bit length" 5696field, 5697thus limiting the register length to 255 bits. ACPICA BZ 953. 5698 5699Example Code and Data Size: These are the sizes for the OS-independent 5700acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5701debug 5702version of the code includes the debug output trace mechanism and has a 5703much 5704larger code and data size. 5705 5706 Previous Release: 5707 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5708 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5709 Current Release: 5710 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5711 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5712 5713 57142) iASL Compiler/Disassembler and Tools: 5715 5716iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5717macro. 5718This keyword was added late in the ACPI 5.0 release cycle and was not 5719implemented until now. 5720 5721Disassembler: Added support for Operation Region externals. Adds missing 5722support for operation regions that are defined in another table, and 5723referenced locally via a Field or BankField ASL operator. Now generates 5724the 5725correct External statement. 5726 5727Disassembler: Several additional fixes for the External() statement 5728generation 5729related to some ASL operators. Also, order the External() statements 5730alphabetically in the disassembler output. Fixes the External() 5731generation 5732for 5733the Create* field, Alias, and Scope operators: 5734 1) Create* buffer field operators - fix type mismatch warning on 5735disassembly 5736 2) Alias - implement missing External support 5737 3) Scope - fix to make sure all necessary externals are emitted. 5738 5739iASL: Improved pathname support. For include files, merge the prefix 5740pathname 5741with the file pathname and eliminate unnecessary components. Convert 5742backslashes in all pathnames to forward slashes, for readability. Include 5743file 5744pathname changes affect both #include and Include() type operators. 5745 5746iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5747end 5748of a valid line by inserting a newline and then returning the EOF during 5749the 5750next call to GetNextLine. Prevents the line from being ignored due to EOF 5751condition. 5752 5753iASL: Implemented some changes to enhance the IDE support (-vi option.) 5754Error 5755and Warning messages are now correctly recognized for both the source 5756code 5757browser and the global error and warning counts. 5758 5759---------------------------------------- 576020 April 2012. Summary of changes for version 20120420: 5761 5762 57631) ACPICA Core Subsystem: 5764 5765Implemented support for multiple notify handlers. This change adds 5766support 5767to 5768allow multiple system and device notify handlers on Device, Thermal Zone, 5769and 5770Processor objects. This can simplify the host OS notification 5771implementation. 5772Also re-worked and restructured the entire notify support code to 5773simplify 5774handler installation, handler removal, notify event queuing, and notify 5775dispatch to handler(s). Note: there can still only be two global notify 5776handlers - one for system notifies and one for device notifies. There are 5777no 5778changes to the existing handler install/remove interfaces. Lin Ming, Bob 5779Moore, Rafael Wysocki. 5780 5781Fixed a regression in the package repair code where the object reference 5782count was calculated incorrectly. Regression was introduced in the commit 5783"Support to add Package wrappers". 5784 5785Fixed a couple possible memory leaks in the AML parser, in the error 5786recovery 5787path. Jesper Juhl, Lin Ming. 5788 5789Example Code and Data Size: These are the sizes for the OS-independent 5790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5791debug version of the code includes the debug output trace mechanism and 5792has a 5793much larger code and data size. 5794 5795 Previous Release: 5796 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5797 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5798 Current Release: 5799 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5800 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5801 5802 58032) iASL Compiler/Disassembler and Tools: 5804 5805iASL: Fixed a problem with the resource descriptor support where the 5806length 5807of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5808included in cumulative descriptor offset, resulting in incorrect values 5809for 5810resource tags within resource descriptors appearing after a 5811StartDependent* 5812descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5813 5814iASL and Preprocessor: Implemented full support for the #line directive 5815to 5816correctly track original source file line numbers through the .i 5817preprocessor 5818output file - for error and warning messages. 5819 5820iASL: Expand the allowable byte constants for address space IDs. 5821Previously, 5822the allowable range was 0x80-0xFF (user-defined spaces), now the range is 58230x0A-0xFF to allow for custom and new IDs without changing the compiler. 5824 5825iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5826 5827iASL: Add option to completely disable the preprocessor (-Pn). 5828 5829iASL: Now emit all error/warning messages to standard error (stderr) by 5830default (instead of the previous stdout). 5831 5832ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5833Update 5834for resource descriptor offset fix above. Update/cleanup error output 5835routines. Enable and send iASL errors/warnings to an error logfile 5836(error.txt). Send all other iASL output to a logfile (compiler.txt). 5837Fixed 5838several extraneous "unrecognized operator" messages. 5839 5840---------------------------------------- 584120 March 2012. Summary of changes for version 20120320: 5842 5843 58441) ACPICA Core Subsystem: 5845 5846Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5847(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5848apparently 5849does not execute these methods, and therefore these methods are often 5850untested. It has been seen on some systems where the execution of these 5851methods causes errors and also prevents the machine from entering S5. It 5852is 5853therefore suggested that host operating systems do not execute these 5854methods 5855by default. In the future, perhaps these methods can be optionally 5856executed 5857based on the age of the system and/or what is the newest version of 5858Windows 5859that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5860and 5861AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5862Ming. 5863 5864Fixed a problem where the length of the local/common FADT was set too 5865early. 5866The local FADT table length cannot be set to the common length until the 5867original length has been examined. There is code that checks the table 5868length 5869and sets various fields appropriately. This can affect older machines 5870with 5871early FADT versions. For example, this can cause inadvertent writes to 5872the 5873CST_CNT register. Julian Anastasov. 5874 5875Fixed a mapping issue related to a physical table override. Use the 5876deferred 5877mapping mechanism for tables loaded via the physical override OSL 5878interface. 5879This allows for early mapping before the virtual memory manager is 5880available. 5881Thomas Renninger, Bob Moore. 5882 5883Enhanced the automatic return-object repair code: Repair a common problem 5884with 5885predefined methods that are defined to return a variable-length Package 5886of 5887sub-objects. If there is only one sub-object, some BIOS ASL code 5888mistakenly 5889simply returns the single object instead of a Package with one sub- 5890object. 5891This new support will repair this error by wrapping a Package object 5892around 5893the original object, creating the correct and expected Package with one 5894sub- 5895object. Names that can be repaired in this manner include: _ALR, _CSD, 5896_HPX, 5897_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5898939. 5899 5900Changed the exception code returned for invalid ACPI paths passed as 5901parameters to external interfaces such as AcpiEvaluateObject. Was 5902AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5903 5904Example Code and Data Size: These are the sizes for the OS-independent 5905acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5906debug 5907version of the code includes the debug output trace mechanism and has a 5908much 5909larger code and data size. 5910 5911 Previous Release: 5912 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5913 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5914 Current Release: 5915 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5916 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5917 5918 59192) iASL Compiler/Disassembler and Tools: 5920 5921iASL: Added the infrastructure and initial implementation of a integrated 5922C- 5923like preprocessor. This will simplify BIOS development process by 5924eliminating 5925the need for a separate preprocessing step during builds. On Windows, it 5926also 5927eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5928features including full #define() macro support are still under 5929development. 5930These preprocessor directives are supported: 5931 #define 5932 #elif 5933 #else 5934 #endif 5935 #error 5936 #if 5937 #ifdef 5938 #ifndef 5939 #include 5940 #pragma message 5941 #undef 5942 #warning 5943In addition, these new command line options are supported: 5944 -D <symbol> Define symbol for preprocessor use 5945 -li Create preprocessed output file (*.i) 5946 -P Preprocess only and create preprocessor output file (*.i) 5947 5948Table Compiler: Fixed a problem where the equals operator within an 5949expression 5950did not work properly. 5951 5952Updated iASL to use the current versions of Bison/Flex. Updated the 5953Windows 5954project file to invoke these tools from the standard location. ACPICA BZ 5955904. 5956Versions supported: 5957 Flex for Windows: V2.5.4 5958 Bison for Windows: V2.4.1 5959 5960---------------------------------------- 596115 February 2012. Summary of changes for version 20120215: 5962 5963 59641) ACPICA Core Subsystem: 5965 5966There have been some major changes to the sleep/wake support code, as 5967described below (a - e). 5968 5969a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5970AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5971AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5972the 5973time the _BFS method is called and the _WAK method is called. NOTE: all 5974hosts 5975must update their wake/resume code or else sleep/wake will not work 5976properly. 5977Rafael Wysocki. 5978 5979b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5980_WAK 5981method. Some machines require that the GPEs are enabled before the _WAK 5982method 5983is executed. Thomas Renninger. 5984 5985c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5986bit. 5987Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5988to 5989determine whether the system is rebooting or resuming. Matthew Garrett. 5990 5991d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5992Sleep) to 5993match the ACPI specification requirement. Rafael Wysocki. 5994 5995e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5996registers within the V5 FADT. This support adds two new files: 5997hardware/hwesleep.c implements the support for the new registers. Moved 5998all 5999sleep/wake external interfaces to hardware/hwxfsleep.c. 6000 6001 6002Added a new OSL interface for ACPI table overrides, 6003AcpiOsPhysicalTableOverride. This interface allows the host to override a 6004table via a physical address, instead of the logical address required by 6005AcpiOsTableOverride. This simplifies the host implementation. Initial 6006implementation by Thomas Renninger. The ACPICA implementation creates a 6007single 6008shared function for table overrides that attempts both a logical and a 6009physical override. 6010 6011Expanded the OSL memory read/write interfaces to 64-bit data 6012(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 6013transfer support for GAS register structures passed to AcpiRead and 6014AcpiWrite. 6015 6016Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 6017custom 6018build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 6019model. 6020See the ACPICA reference for details. ACPICA BZ 942. This option removes 6021about 602210% of the code and 5% of the static data, and the following hardware 6023ACPI 6024features become unavailable: 6025 PM Event and Control registers 6026 SCI interrupt (and handler) 6027 Fixed Events 6028 General Purpose Events (GPEs) 6029 Global Lock 6030 ACPI PM timer 6031 FACS table (Waking vectors and Global Lock) 6032 6033Updated the unix tarball directory structure to match the ACPICA git 6034source 6035tree. This ensures that the generic unix makefiles work properly (in 6036generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 6037867. 6038 6039Updated the return value of the _REV predefined method to integer value 5 6040to 6041reflect ACPI 5.0 support. 6042 6043Moved the external ACPI PM timer interface prototypes to the public 6044acpixf.h 6045file where they belong. 6046 6047Example Code and Data Size: These are the sizes for the OS-independent 6048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6049debug 6050version of the code includes the debug output trace mechanism and has a 6051much 6052larger code and data size. 6053 6054 Previous Release: 6055 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6056 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6057 Current Release: 6058 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 6059 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 6060 6061 60622) iASL Compiler/Disassembler and Tools: 6063 6064Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 6065descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 6066incorrectly displayed. 6067 6068AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 6069specification. 6070 6071---------------------------------------- 607211 January 2012. Summary of changes for version 20120111: 6073 6074 60751) ACPICA Core Subsystem: 6076 6077Implemented a new mechanism to allow host device drivers to check for 6078address 6079range conflicts with ACPI Operation Regions. Both SystemMemory and 6080SystemIO 6081address spaces are supported. A new external interface, 6082AcpiCheckAddressRange, 6083allows drivers to check an address range against the ACPI namespace. See 6084the 6085ACPICA reference for additional details. Adds one new file, 6086utilities/utaddress.c. Lin Ming, Bob Moore. 6087 6088Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 6089Control 6090and 6091Status registers, update the ACPI 5.0 flags, and update internal data 6092structures to handle an FADT larger than 256 bytes. The size of the ACPI 60935.0 6094FADT is 268 bytes. 6095 6096Updated all ACPICA copyrights and signons to 2012. Added the 2012 6097copyright to 6098all module headers and signons, including the standard Linux header. This 6099affects virtually every file in the ACPICA core subsystem, iASL compiler, 6100and 6101all ACPICA utilities. 6102 6103Example Code and Data Size: These are the sizes for the OS-independent 6104acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6105debug 6106version of the code includes the debug output trace mechanism and has a 6107much 6108larger code and data size. 6109 6110 Previous Release: 6111 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6112 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6113 Current Release: 6114 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 6115 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 6116 6117 61182) iASL Compiler/Disassembler and Tools: 6119 6120Disassembler: fixed a problem with the automatic resource tag generation 6121support. Fixes a problem where the resource tags are inadvertently not 6122constructed if the table being disassembled contains external references 6123to 6124control methods. Moved the actual construction of the tags to after the 6125final 6126namespace is constructed (after 2nd parse is invoked due to external 6127control 6128method references.) ACPICA BZ 941. 6129 6130Table Compiler: Make all "generic" operators caseless. These are the 6131operators 6132like UINT8, String, etc. Making these caseless improves ease-of-use. 6133ACPICA BZ 6134934. 6135 6136---------------------------------------- 613723 November 2011. Summary of changes for version 20111123: 6138 61390) ACPI 5.0 Support: 6140 6141This release contains full support for the ACPI 5.0 specification, as 6142summarized below. 6143 6144Reduced Hardware Support: 6145------------------------- 6146 6147This support allows for ACPI systems without the usual ACPI hardware. 6148This 6149support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6150will 6151not attempt to initialize or use any of the usual ACPI hardware. Note, 6152when 6153this flag is set, all of the following ACPI hardware is assumed to be not 6154present and is not initialized or accessed: 6155 6156 General Purpose Events (GPEs) 6157 Fixed Events (PM1a/PM1b and PM Control) 6158 Power Management Timer and Console Buttons (power/sleep) 6159 Real-time Clock Alarm 6160 Global Lock 6161 System Control Interrupt (SCI) 6162 The FACS is assumed to be non-existent 6163 6164ACPI Tables: 6165------------ 6166 6167All new tables and updates to existing tables are fully supported in the 6168ACPICA headers (for use by device drivers), the disassembler, and the 6169iASL 6170Data Table Compiler. ACPI 5.0 defines these new tables: 6171 6172 BGRT /* Boot Graphics Resource Table */ 6173 DRTM /* Dynamic Root of Trust for Measurement table */ 6174 FPDT /* Firmware Performance Data Table */ 6175 GTDT /* Generic Timer Description Table */ 6176 MPST /* Memory Power State Table */ 6177 PCCT /* Platform Communications Channel Table */ 6178 PMTT /* Platform Memory Topology Table */ 6179 RASF /* RAS Feature table */ 6180 6181Operation Regions/SpaceIDs: 6182--------------------------- 6183 6184All new operation regions are fully supported by the iASL compiler, the 6185disassembler, and the ACPICA runtime code (for dispatch to region 6186handlers.) 6187The new operation region Space IDs are: 6188 6189 GeneralPurposeIo 6190 GenericSerialBus 6191 6192Resource Descriptors: 6193--------------------- 6194 6195All new ASL resource descriptors are fully supported by the iASL 6196compiler, 6197the 6198ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6199(including 6200all new predefined resource tags). New descriptors are: 6201 6202 FixedDma 6203 GpioIo 6204 GpioInt 6205 I2cSerialBus 6206 SpiSerialBus 6207 UartSerialBus 6208 6209ASL/AML Operators, New and Modified: 6210------------------------------------ 6211 6212One new operator is added, the Connection operator, which is used to 6213associate 6214a GeneralPurposeIo or GenericSerialBus resource descriptor with 6215individual 6216field objects within an operation region. Several new protocols are 6217associated 6218with the AccessAs operator. All are fully supported by the iASL compiler, 6219disassembler, and runtime ACPICA AML interpreter: 6220 6221 Connection // Declare Field Connection 6222attributes 6223 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6224 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6225Protocol 6226 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6227 RawDataBuffer // Data type for Vendor Data 6228fields 6229 6230Predefined ASL/AML Objects: 6231--------------------------- 6232 6233All new predefined objects/control-methods are supported by the iASL 6234compiler 6235and the ACPICA runtime validation/repair (arguments and return values.) 6236New 6237predefined names include the following: 6238 6239Standard Predefined Names (Objects or Control Methods): 6240 _AEI, _CLS, _CPC, _CWS, _DEP, 6241 _DLM, _EVT, _GCP, _CRT, _GWS, 6242 _HRV, _PRE, _PSE, _SRT, _SUB. 6243 6244Resource Tags (Names used to access individual fields within resource 6245descriptors): 6246 _DBT, _DPL, _DRS, _END, _FLC, 6247 _IOR, _LIN, _MOD, _PAR, _PHA, 6248 _PIN, _PPI, _POL, _RXL, _SLV, 6249 _SPE, _STB, _TXL, _VEN. 6250 6251ACPICA External Interfaces: 6252--------------------------- 6253 6254Several new interfaces have been defined for use by ACPI-related device 6255drivers and other host OS services: 6256 6257AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6258to 6259acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6260provided by the BIOS. They are intended to be used in conjunction with 6261the 6262ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6263mutual exclusion with the AML code/interpreter. 6264 6265AcpiGetEventResources: Returns the (formatted) resource descriptors as 6266defined 6267by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6268provides 6269resource descriptors associated with hardware-reduced platform events, 6270similar 6271to the AcpiGetCurrentResources interface. 6272 6273Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6274operation regions, information about the Connection() object and any 6275optional 6276length information is passed to the region handler within the Context 6277parameter. 6278 6279AcpiBufferToResource: This interface converts a raw AML buffer containing 6280a 6281resource template or resource descriptor to the ACPI_RESOURCE internal 6282format 6283suitable for use by device drivers. Can be used by an operation region 6284handler 6285to convert the Connection() buffer object into a ACPI_RESOURCE. 6286 6287Miscellaneous/Tools/TestSuites: 6288------------------------------- 6289 6290Support for extended _HID names (Four alpha characters instead of three). 6291Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6292Support for ACPI 5.0 features in the ASLTS test suite. 6293Fully updated documentation (ACPICA and iASL reference documents.) 6294 6295ACPI Table Definition Language: 6296------------------------------- 6297 6298Support for this language was implemented and released as a subsystem of 6299the 6300iASL compiler in 2010. (See the iASL compiler User Guide.) 6301 6302 6303Non-ACPI 5.0 changes for this release: 6304-------------------------------------- 6305 63061) ACPICA Core Subsystem: 6307 6308Fix a problem with operation region declarations where a failure can 6309occur 6310if 6311the region name and an argument that evaluates to an object (such as the 6312region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6313937. 6314 6315Do not abort an ACPI table load if an invalid space ID is found within. 6316This 6317will be caught later if the offending method is executed. ACPICA BZ 925. 6318 6319Fixed an issue with the FFixedHW space ID where the ID was not always 6320recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6321 6322Fixed a problem with the 32-bit generation of the unix-specific OSL 6323(osunixxf.c). Lin Ming, ACPICA BZ 936. 6324 6325Several changes made to enable generation with the GCC 4.6 compiler. 6326ACPICA BZ 6327935. 6328 6329New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6330Index/Bank 6331field registers out-of-range. 6332 63332) iASL Compiler/Disassembler and Tools: 6334 6335iASL: Implemented the __PATH__ operator, which returns the full pathname 6336of 6337the current source file. 6338 6339AcpiHelp: Automatically display expanded keyword information for all ASL 6340operators. 6341 6342Debugger: Add "Template" command to disassemble/dump resource template 6343buffers. 6344 6345Added a new master script to generate and execute the ASLTS test suite. 6346Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6347 6348iASL: Fix problem with listing generation during processing of the 6349Switch() 6350operator where AML listing was disabled until the entire Switch block was 6351completed. 6352 6353iASL: Improve support for semicolon statement terminators. Fix "invalid 6354character" message for some cases when the semicolon is used. Semicolons 6355are 6356now allowed after every <Term> grammar element. ACPICA BZ 927. 6357 6358iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6359923. 6360 6361Disassembler: Fix problem with disassembly of the DataTableRegion 6362operator 6363where an inadvertent "Unhandled deferred opcode" message could be 6364generated. 6365 63663) Example Code and Data Size 6367 6368These are the sizes for the OS-independent acpica.lib produced by the 6369Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6370includes the debug output trace mechanism and has a much larger code and 6371data 6372size. 6373 6374 Previous Release: 6375 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6376 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6377 Current Release: 6378 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6379 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6380 6381---------------------------------------- 638222 September 2011. Summary of changes for version 20110922: 6383 63840) ACPI 5.0 News: 6385 6386Support for ACPI 5.0 in ACPICA has been underway for several months and 6387will 6388be released at the same time that ACPI 5.0 is officially released. 6389 6390The ACPI 5.0 specification is on track for release in the next few 6391months. 6392 63931) ACPICA Core Subsystem: 6394 6395Fixed a problem where the maximum sleep time for the Sleep() operator was 6396intended to be limited to two seconds, but was inadvertently limited to 639720 6398seconds instead. 6399 6400Linux and Unix makefiles: Added header file dependencies to ensure 6401correct 6402generation of ACPICA core code and utilities. Also simplified the 6403makefiles 6404considerably through the use of the vpath variable to specify search 6405paths. 6406ACPICA BZ 924. 6407 64082) iASL Compiler/Disassembler and Tools: 6409 6410iASL: Implemented support to check the access length for all fields 6411created to 6412access named Resource Descriptor fields. For example, if a resource field 6413is 6414defined to be two bits, a warning is issued if a CreateXxxxField() is 6415used 6416with an incorrect bit length. This is implemented for all current 6417resource 6418descriptor names. ACPICA BZ 930. 6419 6420Disassembler: Fixed a byte ordering problem with the output of 24-bit and 642156- 6422bit integers. 6423 6424iASL: Fixed a couple of issues associated with variable-length package 6425objects. 1) properly handle constants like One, Ones, Zero -- do not make 6426a 6427VAR_PACKAGE when these are used as a package length. 2) Allow the 6428VAR_PACKAGE 6429opcode (in addition to PACKAGE) when validating object types for 6430predefined 6431names. 6432 6433iASL: Emit statistics for all output files (instead of just the ASL input 6434and 6435AML output). Includes listings, hex files, etc. 6436 6437iASL: Added -G option to the table compiler to allow the compilation of 6438custom 6439ACPI tables. The only part of a table that is required is the standard 644036- 6441byte 6442ACPI header. 6443 6444AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6445headers), 6446which also adds correct 64-bit support. Also, now all output filenames 6447are 6448completely lower case. 6449 6450AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6451loading table files. A warning is issued for any such tables. The only 6452exception is an FADT. This also fixes a possible fault when attempting to 6453load 6454non-AML tables. ACPICA BZ 932. 6455 6456AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6457a 6458missing table terminator could cause a fault when using the -p option. 6459 6460AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6461statistics. 6462 64633) Example Code and Data Size 6464 6465These are the sizes for the OS-independent acpica.lib produced by the 6466Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6467includes the debug output trace mechanism and has a much larger code and 6468data 6469size. 6470 6471 Previous Release (VC 9.0): 6472 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6473 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6474 Current Release (VC 9.0): 6475 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6476 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6477 6478 6479---------------------------------------- 648023 June 2011. Summary of changes for version 20110623: 6481 64821) ACPI CA Core Subsystem: 6483 6484Updated the predefined name repair mechanism to not attempt repair of a 6485_TSS 6486return object if a _PSS object is present. We can only sort the _TSS 6487return 6488package if there is no _PSS within the same scope. This is because if 6489_PSS 6490is 6491present, the ACPI specification dictates that the _TSS Power Dissipation 6492field 6493is to be ignored, and therefore some BIOSs leave garbage values in the 6494_TSS 6495Power field(s). In this case, it is best to just return the _TSS package 6496as- 6497is. Reported by, and fixed with assistance from Fenghua Yu. 6498 6499Added an option to globally disable the control method return value 6500validation 6501and repair. This runtime option can be used to disable return value 6502repair 6503if 6504this is causing a problem on a particular machine. Also added an option 6505to 6506AcpiExec (-dr) to set this disable flag. 6507 6508All makefiles and project files: Major changes to improve generation of 6509ACPICA 6510tools. ACPICA BZ 912: 6511 Reduce default optimization levels to improve compatibility 6512 For Linux, add strict-aliasing=0 for gcc 4 6513 Cleanup and simplify use of command line defines 6514 Cleanup multithread library support 6515 Improve usage messages 6516 6517Linux-specific header: update handling of THREAD_ID and pthread. For the 651832- 6519bit case, improve casting to eliminate possible warnings, especially with 6520the 6521acpica tools. 6522 6523Example Code and Data Size: These are the sizes for the OS-independent 6524acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6525debug 6526version of the code includes the debug output trace mechanism and has a 6527much 6528larger code and data size. 6529 6530 Previous Release (VC 9.0): 6531 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6532 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6533 Current Release (VC 9.0): 6534 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6535 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6536 65372) iASL Compiler/Disassembler and Tools: 6538 6539With this release, a new utility named "acpihelp" has been added to the 6540ACPICA 6541package. This utility summarizes the ACPI specification chapters for the 6542ASL 6543and AML languages. It generates under Linux/Unix as well as Windows, and 6544provides the following functionality: 6545 Find/display ASL operator(s) -- with description and syntax. 6546 Find/display ASL keyword(s) -- with exact spelling and descriptions. 6547 Find/display ACPI predefined name(s) -- with description, number 6548 of arguments, and the return value data type. 6549 Find/display AML opcode name(s) -- with opcode, arguments, and 6550grammar. 6551 Decode/display AML opcode -- with opcode name, arguments, and 6552grammar. 6553 6554Service Layers: Make multi-thread support configurable. Conditionally 6555compile 6556the multi-thread support so that threading libraries will not be linked 6557if 6558not 6559necessary. The only tool that requires multi-thread support is AcpiExec. 6560 6561iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 6562of 6563Bison appear to want the interface to yyerror to be a const char * (or at 6564least this is a problem when generating iASL on some systems.) ACPICA BZ 6565923 6566Pierre Lejeune. 6567 6568Tools: Fix for systems where O_BINARY is not defined. Only used for 6569Windows 6570versions of the tools. 6571 6572---------------------------------------- 657327 May 2011. Summary of changes for version 20110527: 6574 65751) ACPI CA Core Subsystem: 6576 6577ASL Load() operator: Reinstate most restrictions on the incoming ACPI 6578table 6579signature. Now, only allow SSDT, OEMx, and a null signature. History: 6580 1) Originally, we checked the table signature for "SSDT" or "PSDT". 6581 (PSDT is now obsolete.) 6582 2) We added support for OEMx tables, signature "OEM" plus a fourth 6583 "don't care" character. 6584 3) Valid tables were encountered with a null signature, so we just 6585 gave up on validating the signature, (05/2008). 6586 4) We encountered non-AML tables such as the MADT, which caused 6587 interpreter errors and kernel faults. So now, we once again allow 6588 only SSDT, OEMx, and now, also a null signature. (05/2011). 6589 6590Added the missing _TDL predefined name to the global name list in order 6591to 6592enable validation. Affects both the core ACPICA code and the iASL 6593compiler. 6594 6595Example Code and Data Size: These are the sizes for the OS-independent 6596acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6597debug 6598version of the code includes the debug output trace mechanism and has a 6599much 6600larger code and data size. 6601 6602 Previous Release (VC 9.0): 6603 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6604 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6605 Current Release (VC 9.0): 6606 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6607 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6608 66092) iASL Compiler/Disassembler and Tools: 6610 6611Debugger/AcpiExec: Implemented support for "complex" method arguments on 6612the 6613debugger command line. This adds support beyond simple integers -- 6614including 6615Strings, Buffers, and Packages. Includes support for nested packages. 6616Increased the default command line buffer size to accommodate these 6617arguments. 6618See the ACPICA reference for details and syntax. ACPICA BZ 917. 6619 6620Debugger/AcpiExec: Implemented support for "default" method arguments for 6621the 6622Execute/Debug command. Now, the debugger will always invoke a control 6623method 6624with the required number of arguments -- even if the command line 6625specifies 6626none or insufficient arguments. It uses default integer values for any 6627missing 6628arguments. Also fixes a bug where only six method arguments maximum were 6629supported instead of the required seven. 6630 6631Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6632and 6633also return status in order to prevent buffer overruns. See the ACPICA 6634reference for details and syntax. ACPICA BZ 921 6635 6636iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6637makefiles to simplify support for the two different but similar parser 6638generators, bison and yacc. 6639 6640Updated the generic unix makefile for gcc 4. The default gcc version is 6641now 6642expected to be 4 or greater, since options specific to gcc 4 are used. 6643 6644---------------------------------------- 664513 April 2011. Summary of changes for version 20110413: 6646 66471) ACPI CA Core Subsystem: 6648 6649Implemented support to execute a so-called "orphan" _REG method under the 6650EC 6651device. This change will force the execution of a _REG method underneath 6652the 6653EC 6654device even if there is no corresponding operation region of type 6655EmbeddedControl. Fixes a problem seen on some machines and apparently is 6656compatible with Windows behavior. ACPICA BZ 875. 6657 6658Added more predefined methods that are eligible for automatic NULL 6659package 6660element removal. This change adds another group of predefined names to 6661the 6662list 6663of names that can be repaired by having NULL package elements dynamically 6664removed. This group are those methods that return a single variable- 6665length 6666package containing simple data types such as integers, buffers, strings. 6667This 6668includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6669_PSL, 6670_Sx, 6671and _TZD. ACPICA BZ 914. 6672 6673Split and segregated all internal global lock functions to a new file, 6674evglock.c. 6675 6676Updated internal address SpaceID for DataTable regions. Moved this 6677internal 6678space 6679id in preparation for ACPI 5.0 changes that will include some new space 6680IDs. 6681This 6682change should not affect user/host code. 6683 6684Example Code and Data Size: These are the sizes for the OS-independent 6685acpica.lib 6686produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6687version of 6688the code includes the debug output trace mechanism and has a much larger 6689code 6690and 6691data size. 6692 6693 Previous Release (VC 9.0): 6694 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6695 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6696 Current Release (VC 9.0): 6697 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6698 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6699 67002) iASL Compiler/Disassembler and Tools: 6701 6702iASL/DTC: Major update for new grammar features. Allow generic data types 6703in 6704custom ACPI tables. Field names are now optional. Any line can be split 6705to 6706multiple lines using the continuation char (\). Large buffers now use 6707line- 6708continuation character(s) and no colon on the continuation lines. See the 6709grammar 6710update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6711Moore. 6712 6713iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6714statements. 6715Since the parser stuffs a "zero" as the return value for these statements 6716(due 6717to 6718the underlying AML grammar), they were seen as "return with value" by the 6719iASL 6720semantic checking. They are now seen correctly as "null" return 6721statements. 6722 6723iASL: Check if a_REG declaration has a corresponding Operation Region. 6724Adds a 6725check for each _REG to ensure that there is in fact a corresponding 6726operation 6727region declaration in the same scope. If not, the _REG method is not very 6728useful 6729since it probably won't be executed. ACPICA BZ 915. 6730 6731iASL/DTC: Finish support for expression evaluation. Added a new 6732expression 6733parser 6734that implements c-style operator precedence and parenthesization. ACPICA 6735bugzilla 6736908. 6737 6738Disassembler/DTC: Remove support for () and <> style comments in data 6739tables. 6740Now 6741that DTC has full expression support, we don't want to have comment 6742strings 6743that 6744start with a parentheses or a less-than symbol. Now, only the standard /* 6745and 6746// 6747comments are supported, as well as the bracket [] comments. 6748 6749AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6750"unusual" 6751headers in the acpidump file. Update the header validation to support 6752these 6753tables. Problem introduced in previous AcpiXtract version in the change 6754to 6755support "wrong checksum" error messages emitted by acpidump utility. 6756 6757iASL: Add a * option to generate all template files (as a synonym for 6758ALL) 6759as 6760in 6761"iasl -T *" or "iasl -T ALL". 6762 6763iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6764completely 6765abort the compiler on "fatal" errors, simply should abort the current 6766compile. 6767This allows multiple compiles with a single (possibly wildcard) compiler 6768invocation. 6769 6770---------------------------------------- 677116 March 2011. Summary of changes for version 20110316: 6772 67731) ACPI CA Core Subsystem: 6774 6775Fixed a problem caused by a _PRW method appearing at the namespace root 6776scope 6777during the setup of wake GPEs. A fault could occur if a _PRW directly 6778under 6779the 6780root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6781 6782Implemented support for "spurious" Global Lock interrupts. On some 6783systems, a 6784global lock interrupt can occur without the pending flag being set. Upon 6785a 6786GL 6787interrupt, we now ensure that a thread is actually waiting for the lock 6788before 6789signaling GL availability. Rafael Wysocki, Bob Moore. 6790 6791Example Code and Data Size: These are the sizes for the OS-independent 6792acpica.lib 6793produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6794version of 6795the code includes the debug output trace mechanism and has a much larger 6796code 6797and 6798data size. 6799 6800 Previous Release (VC 9.0): 6801 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6802 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6803 Current Release (VC 9.0): 6804 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6805 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6806 68072) iASL Compiler/Disassembler and Tools: 6808 6809Implemented full support for the "SLIC" ACPI table. Includes support in 6810the 6811header files, disassembler, table compiler, and template generator. Bob 6812Moore, 6813Lin Ming. 6814 6815AcpiXtract: Correctly handle embedded comments and messages from 6816AcpiDump. 6817Apparently some or all versions of acpidump will occasionally emit a 6818comment 6819like 6820"Wrong checksum", etc., into the dump file. This was causing problems for 6821AcpiXtract. ACPICA BZ 905. 6822 6823iASL: Fix the Linux makefile by removing an inadvertent double file 6824inclusion. 6825ACPICA BZ 913. 6826 6827AcpiExec: Update installation of operation region handlers. Install one 6828handler 6829for a user-defined address space. This is used by the ASL test suite 6830(ASLTS). 6831 6832---------------------------------------- 683311 February 2011. Summary of changes for version 20110211: 6834 68351) ACPI CA Core Subsystem: 6836 6837Added a mechanism to defer _REG methods for some early-installed 6838handlers. 6839Most user handlers should be installed before call to 6840AcpiEnableSubsystem. 6841However, Event handlers and region handlers should be installed after 6842AcpiInitializeObjects. Override handlers for the "default" regions should 6843be 6844installed early, however. This change executes all _REG methods for the 6845default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6846chicken/egg issues between them. ACPICA BZ 848. 6847 6848Implemented an optimization for GPE detection. This optimization will 6849simply 6850ignore GPE registers that contain no enabled GPEs -- there is no need to 6851read the register since this information is available internally. This 6852becomes more important on machines with a large GPE space. ACPICA 6853bugzilla 6854884. Lin Ming. Suggestion from Joe Liu. 6855 6856Removed all use of the highly unreliable FADT revision field. The 6857revision 6858number in the FADT has been found to be completely unreliable and cannot 6859be 6860trusted. Only the actual table length can be used to infer the version. 6861This 6862change updates the ACPICA core and the disassembler so that both no 6863longer 6864even look at the FADT version and instead depend solely upon the FADT 6865length. 6866 6867Fix an unresolved name issue for the no-debug and no-error-message source 6868generation cases. The _AcpiModuleName was left undefined in these cases, 6869but 6870it is actually needed as a parameter to some interfaces. Define 6871_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6872 6873Split several large files (makefiles and project files updated) 6874 utglobal.c -> utdecode.c 6875 dbcomds.c -> dbmethod.c dbnames.c 6876 dsopcode.c -> dsargs.c dscontrol.c 6877 dsload.c -> dsload2.c 6878 aslanalyze.c -> aslbtypes.c aslwalks.c 6879 6880Example Code and Data Size: These are the sizes for the OS-independent 6881acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6882debug version of the code includes the debug output trace mechanism and 6883has 6884a much larger code and data size. 6885 6886 Previous Release (VC 9.0): 6887 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6888 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6889 Current Release (VC 9.0): 6890 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6891 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6892 68932) iASL Compiler/Disassembler and Tools: 6894 6895iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6896These are useful C-style macros with the standard definitions. ACPICA 6897bugzilla 898. 6898 6899iASL/DTC: Added support for integer expressions and labels. Support for 6900full 6901expressions for all integer fields in all ACPI tables. Support for labels 6902in 6903"generic" portions of tables such as UEFI. See the iASL reference manual. 6904 6905Debugger: Added a command to display the status of global handlers. The 6906"handlers" command will display op region, fixed event, and miscellaneous 6907global handlers. installation status -- and for op regions, whether 6908default 6909or user-installed handler will be used. 6910 6911iASL: Warn if reserved method incorrectly returns a value. Many 6912predefined 6913names are defined such that they do not return a value. If implemented as 6914a 6915method, issue a warning if such a name explicitly returns a value. ACPICA 6916Bugzilla 855. 6917 6918iASL: Added detection of GPE method name conflicts. Detects a conflict 6919where 6920there are two GPE methods of the form _Lxy and _Exy in the same scope. 6921(For 6922example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6923 6924iASL/DTC: Fixed a couple input scanner issues with comments and line 6925numbers. Comment remover could get confused and miss a comment ending. 6926Fixed 6927a problem with line counter maintenance. 6928 6929iASL/DTC: Reduced the severity of some errors from fatal to error. There 6930is 6931no need to abort on simple errors within a field definition. 6932 6933Debugger: Simplified the output of the help command. All help output now 6934in 6935a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6936 6937---------------------------------------- 693812 January 2011. Summary of changes for version 20110112: 6939 69401) ACPI CA Core Subsystem: 6941 6942Fixed a race condition between method execution and namespace walks that 6943can 6944possibly cause a fault. The problem was apparently introduced in version 694520100528 as a result of a performance optimization that reduces the 6946number 6947of 6948namespace walks upon method exit by using the delete_namespace_subtree 6949function instead of the delete_namespace_by_owner function used 6950previously. 6951Bug is a missing namespace lock in the delete_namespace_subtree function. 6952dana.myers@oracle.com 6953 6954Fixed several issues and a possible fault with the automatic "serialized" 6955method support. History: This support changes a method to "serialized" on 6956the 6957fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6958possibility that it cannot handle reentrancy. This fix repairs a couple 6959of 6960issues seen in the field, especially on machines with many cores: 6961 6962 1) Delete method children only upon the exit of the last thread, 6963 so as to not delete objects out from under other running threads 6964 (and possibly causing a fault.) 6965 2) Set the "serialized" bit for the method only upon the exit of the 6966 Last thread, so as to not cause deadlock when running threads 6967 attempt to exit. 6968 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6969 so that there is no longer any confusion between the two. 6970 6971 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6972 6973Debugger: Now lock the namespace for duration of a namespace dump. 6974Prevents 6975issues if the namespace is changing dynamically underneath the debugger. 6976Especially affects temporary namespace nodes, since the debugger displays 6977these also. 6978 6979Updated the ordering of include files. The ACPICA headers should appear 6980before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6981set 6982any necessary compiler-specific defines, etc. Affects the ACPI-related 6983tools 6984and utilities. 6985 6986Updated all ACPICA copyrights and signons to 2011. Added the 2011 6987copyright 6988to all module headers and signons, including the Linux header. This 6989affects 6990virtually every file in the ACPICA core subsystem, iASL compiler, and all 6991utilities. 6992 6993Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6994project files for VC++ 6.0 are now obsolete. New project files can be 6995found 6996under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6997details. 6998 6999Example Code and Data Size: These are the sizes for the OS-independent 7000acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 7001debug version of the code includes the debug output trace mechanism and 7002has a 7003much larger code and data size. 7004 7005 Previous Release (VC 6.0): 7006 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7007 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7008 Current Release (VC 9.0): 7009 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 7010 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 7011 70122) iASL Compiler/Disassembler and Tools: 7013 7014iASL: Added generic data types to the Data Table compiler. Add "generic" 7015data 7016types such as UINT32, String, Unicode, etc., to simplify the generation 7017of 7018platform-defined tables such as UEFI. Lin Ming. 7019 7020iASL: Added listing support for the Data Table Compiler. Adds listing 7021support 7022(-l) to display actual binary output for each line of input code. 7023 7024---------------------------------------- 702509 December 2010. Summary of changes for version 20101209: 7026 70271) ACPI CA Core Subsystem: 7028 7029Completed the major overhaul of the GPE support code that was begun in 7030July 70312010. Major features include: removal of _PRW execution in ACPICA (host 7032executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 7033changes to existing interfaces, simplification of GPE handler operation, 7034and 7035a handful of new interfaces: 7036 7037 AcpiUpdateAllGpes 7038 AcpiFinishGpe 7039 AcpiSetupGpeForWake 7040 AcpiSetGpeWakeMask 7041 One new file, evxfgpe.c to consolidate all external GPE interfaces. 7042 7043See the ACPICA Programmer Reference for full details and programming 7044information. See the new section 4.4 "General Purpose Event (GPE) 7045Support" 7046for a full overview, and section 8.7 "ACPI General Purpose Event 7047Management" 7048for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 7049Ming, 7050Bob Moore, Rafael Wysocki. 7051 7052Implemented a new GPE feature for Windows compatibility, the "Implicit 7053Wake 7054GPE Notify". This feature will automatically issue a Notify(2) on a 7055device 7056when a Wake GPE is received if there is no corresponding GPE method or 7057handler. ACPICA BZ 870. 7058 7059Fixed a problem with the Scope() operator during table parse and load 7060phase. 7061During load phase (table load or method execution), the scope operator 7062should 7063not enter the target into the namespace. Instead, it should open a new 7064scope 7065at the target location. Linux BZ 19462, ACPICA BZ 882. 7066 7067Example Code and Data Size: These are the sizes for the OS-independent 7068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7069debug version of the code includes the debug output trace mechanism and 7070has a 7071much larger code and data size. 7072 7073 Previous Release: 7074 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 7075 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 7076 Current Release: 7077 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7078 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7079 70802) iASL Compiler/Disassembler and Tools: 7081 7082iASL: Relax the alphanumeric restriction on _CID strings. These strings 7083are 7084"bus-specific" per the ACPI specification, and therefore any characters 7085are 7086acceptable. The only checks that can be performed are for a null string 7087and 7088perhaps for a leading asterisk. ACPICA BZ 886. 7089 7090iASL: Fixed a problem where a syntax error that caused a premature EOF 7091condition on the source file emitted a very confusing error message. The 7092premature EOF is now detected correctly. ACPICA BZ 891. 7093 7094Disassembler: Decode the AccessSize within a Generic Address Structure 7095(byte 7096access, word access, etc.) Note, this field does not allow arbitrary bit 7097access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 7098 7099New: AcpiNames utility - Example namespace dump utility. Shows an example 7100of 7101ACPICA configuration for a minimal namespace dump utility. Uses table and 7102namespace managers, but no AML interpreter. Does not add any 7103functionality 7104over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 7105partition and configure ACPICA. ACPICA BZ 883. 7106 7107AML Debugger: Increased the debugger buffer size for method return 7108objects. 7109Was 4K, increased to 16K. Also enhanced error messages for debugger 7110method 7111execution, including the buffer overflow case. 7112 7113---------------------------------------- 711413 October 2010. Summary of changes for version 20101013: 7115 71161) ACPI CA Core Subsystem: 7117 7118Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 7119now 7120clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 7121HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 7122 7123Changed the type of the predefined namespace object _TZ from ThermalZone 7124to 7125Device. This was found to be confusing to the host software that 7126processes 7127the various thermal zones, since _TZ is not really a ThermalZone. 7128However, 7129a 7130Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 7131Zhang. 7132 7133Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7134string is "Windows 2006 SP2". 7135 7136Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7137nsrepair 7138code automatically repairs _HID-related strings, this type of code is no 7139longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7140878. 7141 7142Example Code and Data Size: These are the sizes for the OS-independent 7143acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7144debug version of the code includes the debug output trace mechanism and 7145has a 7146much larger code and data size. 7147 7148 Previous Release: 7149 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7150 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7151 Current Release: 7152 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7153 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7154 71552) iASL Compiler/Disassembler and Tools: 7156 7157iASL: Implemented additional compile-time validation for _HID strings. 7158The 7159non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7160length 7161of 7162the string must be exactly seven or eight characters. For both _HID and 7163_CID 7164strings, all characters must be alphanumeric. ACPICA BZ 874. 7165 7166iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7167descriptors that are mostly or all zeros, with the expectation that they 7168will 7169be filled in at runtime. iASL now allows this as long as there is a 7170"resource 7171tag" (name) associated with the descriptor, which gives the ASL a handle 7172needed to modify the descriptor. ACPICA BZ 873. 7173 7174Added single-thread support to the generic Unix application OSL. 7175Primarily 7176for iASL support, this change removes the use of semaphores in the 7177single- 7178threaded ACPICA tools/applications - increasing performance. The 7179_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7180option. ACPICA BZ 879. 7181 7182AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7183support 7184for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7185 7186iASL: Moved all compiler messages to a new file, aslmessages.h. 7187 7188---------------------------------------- 718915 September 2010. Summary of changes for version 20100915: 7190 71911) ACPI CA Core Subsystem: 7192 7193Removed the AcpiOsDerivePciId OSL interface. The various host 7194implementations 7195of this function were not OS-dependent and are now obsolete and can be 7196removed from all host OSLs. This function has been replaced by 7197AcpiHwDerivePciId, which is now part of the ACPICA core code. 7198AcpiHwDerivePciId has been implemented without recursion. Adds one new 7199module, hwpci.c. ACPICA BZ 857. 7200 7201Implemented a dynamic repair for _HID and _CID strings. The following 7202problems are now repaired at runtime: 1) Remove a leading asterisk in the 7203string, and 2) the entire string is uppercased. Both repairs are in 7204accordance with the ACPI specification and will simplify host driver 7205code. 7206ACPICA BZ 871. 7207 7208The ACPI_THREAD_ID type is no longer configurable, internally it is now 7209always UINT64. This simplifies the ACPICA code, especially any printf 7210output. 7211UINT64 is the only common data type for all thread_id types across all 7212operating systems. It is now up to the host OSL to cast the native 7213thread_id 7214type to UINT64 before returning the value to ACPICA (via 7215AcpiOsGetThreadId). 7216Lin Ming, Bob Moore. 7217 7218Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7219"inline" 7220keyword is not standard across compilers, and this type allows inline to 7221be 7222configured on a per-compiler basis. Lin Ming. 7223 7224Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7225available. 7226Added an extern for this boolean in acpixf.h. Some hosts utilize this 7227value 7228during suspend/restore operations. ACPICA BZ 869. 7229 7230All code that implements error/warning messages with the "ACPI:" prefix 7231has 7232been moved to a new module, utxferror.c. 7233 7234The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7235it 7236is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7237 7238Example Code and Data Size: These are the sizes for the OS-independent 7239acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7240debug version of the code includes the debug output trace mechanism and 7241has a 7242much larger code and data size. 7243 7244 Previous Release: 7245 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7246 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7247 Current Release: 7248 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7249 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7250 72512) iASL Compiler/Disassembler and Tools: 7252 7253iASL/Disassembler: Write ACPI errors to stderr instead of the output 7254file. 7255This keeps the output files free of random error messages that may 7256originate 7257from within the namespace/interpreter code. Used this opportunity to 7258merge 7259all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7260866. Lin Ming, Bob Moore. 7261 7262Tools: update some printfs for ansi warnings on size_t. Handle width 7263change 7264of size_t on 32-bit versus 64-bit generations. Lin Ming. 7265 7266---------------------------------------- 726706 August 2010. Summary of changes for version 20100806: 7268 72691) ACPI CA Core Subsystem: 7270 7271Designed and implemented a new host interface to the _OSI support code. 7272This 7273will allow the host to dynamically add or remove multiple _OSI strings, 7274as 7275well as install an optional handler that is called for each _OSI 7276invocation. 7277Also added a new AML debugger command, 'osi' to display and modify the 7278global 7279_OSI string table, and test support in the AcpiExec utility. See the 7280ACPICA 7281reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7282New Functions: 7283 AcpiInstallInterface - Add an _OSI string. 7284 AcpiRemoveInterface - Delete an _OSI string. 7285 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7286Obsolete Functions: 7287 AcpiOsValidateInterface - no longer used. 7288New Files: 7289 source/components/utilities/utosi.c 7290 7291Re-introduced the support to enable multi-byte transfers for Embedded 7292Controller (EC) operation regions. A reported problem was found to be a 7293bug 7294in the host OS, not in the multi-byte support. Previously, the maximum 7295data 7296size passed to the EC operation region handler was a single byte. There 7297are 7298often EC Fields larger than one byte that need to be transferred, and it 7299is 7300useful for the EC driver to lock these as a single transaction. This 7301change 7302enables single transfers larger than 8 bits. This effectively changes the 7303access to the EC space from ByteAcc to AnyAcc, and will probably require 7304changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7305bit 7306transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7307 7308Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7309prototype in acpiosxf.h had the output value pointer as a (void *). 7310It should be a (UINT64 *). This may affect some host OSL code. 7311 7312Fixed a couple problems with the recently modified Linux makefiles for 7313iASL 7314and AcpiExec. These new makefiles place the generated object files in the 7315local directory so that there can be no collisions between the files that 7316are 7317shared between them that are compiled with different options. 7318 7319Example Code and Data Size: These are the sizes for the OS-independent 7320acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7321debug version of the code includes the debug output trace mechanism and 7322has a 7323much larger code and data size. 7324 7325 Previous Release: 7326 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7327 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7328 Current Release: 7329 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7330 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7331 73322) iASL Compiler/Disassembler and Tools: 7333 7334iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7335the 7336namespace from and disassemble an entire group of AML files. Useful for 7337loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7338and 7339disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7340 7341iASL: Allow multiple invocations of -e option. This change allows 7342multiple 7343uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7344834. 7345Lin Ming. 7346 7347---------------------------------------- 734802 July 2010. Summary of changes for version 20100702: 7349 73501) ACPI CA Core Subsystem: 7351 7352Implemented several updates to the recently added GPE reference count 7353support. The model for "wake" GPEs is changing to give the host OS 7354complete 7355control of these GPEs. Eventually, the ACPICA core will not execute any 7356_PRW 7357methods, since the host already must execute them. Also, additional 7358changes 7359were made to help ensure that the reference counts are kept in proper 7360synchronization with reality. Rafael J. Wysocki. 7361 73621) Ensure that GPEs are not enabled twice during initialization. 73632) Ensure that GPE enable masks stay in sync with the reference count. 73643) Do not inadvertently enable GPEs when writing GPE registers. 73654) Remove the internal wake reference counter and add new AcpiGpeWakeup 7366interface. This interface will set or clear individual GPEs for wakeup. 73675) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7368interfaces 7369are now used for "runtime" GPEs only. 7370 7371Changed the behavior of the GPE install/remove handler interfaces. The 7372GPE 7373is 7374no longer disabled during this process, as it was found to cause problems 7375on 7376some machines. Rafael J. Wysocki. 7377 7378Reverted a change introduced in version 20100528 to enable Embedded 7379Controller multi-byte transfers. This change was found to cause problems 7380with 7381Index Fields and possibly Bank Fields. It will be reintroduced when these 7382problems have been resolved. 7383 7384Fixed a problem with references to Alias objects within Package Objects. 7385A 7386reference to an Alias within the definition of a Package was not always 7387resolved properly. Aliases to objects like Processors, Thermal zones, 7388etc. 7389were resolved to the actual object instead of a reference to the object 7390as 7391it 7392should be. Package objects are only allowed to contain integer, string, 7393buffer, package, and reference objects. Redhat bugzilla 608648. 7394 7395Example Code and Data Size: These are the sizes for the OS-independent 7396acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7397debug version of the code includes the debug output trace mechanism and 7398has a 7399much larger code and data size. 7400 7401 Previous Release: 7402 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7403 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7404 Current Release: 7405 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7406 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7407 74082) iASL Compiler/Disassembler and Tools: 7409 7410iASL: Implemented a new compiler subsystem to allow definition and 7411compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7412These 7413are called "ACPI Data Tables", and the new compiler is the "Data Table 7414Compiler". This compiler is intended to simplify the existing error-prone 7415process of creating these tables for the BIOS, as well as allowing the 7416disassembly, modification, recompilation, and override of existing ACPI 7417data 7418tables. See the iASL User Guide for detailed information. 7419 7420iASL: Implemented a new Template Generator option in support of the new 7421Data 7422Table Compiler. This option will create examples of all known ACPI tables 7423that can be used as the basis for table development. See the iASL 7424documentation and the -T option. 7425 7426Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7427Descriptor Table). 7428 7429Updated the Linux makefiles for iASL and AcpiExec to place the generated 7430object files in the local directory so that there can be no collisions 7431between the shared files between them that are generated with different 7432options. 7433 7434Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7435Use 7436the #define __APPLE__ to enable this support. 7437 7438---------------------------------------- 743928 May 2010. Summary of changes for version 20100528: 7440 7441Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7442available at www.acpi.info. This is primarily an errata release. 7443 74441) ACPI CA Core Subsystem: 7445 7446Undefined ACPI tables: We are looking for the definitions for the 7447following 7448ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7449 7450Implemented support to enable multi-byte transfers for Embedded 7451Controller 7452(EC) operation regions. Previously, the maximum data size passed to the 7453EC 7454operation region handler was a single byte. There are often EC Fields 7455larger 7456than one byte that need to be transferred, and it is useful for the EC 7457driver 7458to lock these as a single transaction. This change enables single 7459transfers 7460larger than 8 bits. This effectively changes the access to the EC space 7461from 7462ByteAcc to AnyAcc, and will probably require changes to the host OS 7463Embedded 7464Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7465bit 7466transfers. Alexey Starikovskiy, Lin Ming 7467 7468Implemented a performance enhancement for namespace search and access. 7469This 7470change enhances the performance of namespace searches and walks by adding 7471a 7472backpointer to the parent in each namespace node. On large namespaces, 7473this 7474change can improve overall ACPI performance by up to 9X. Adding a pointer 7475to 7476each namespace node increases the overall size of the internal namespace 7477by 7478about 5%, since each namespace entry usually consists of both a namespace 7479node and an ACPI operand object. However, this is the first growth of the 7480namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7481 7482Implemented a performance optimization that reduces the number of 7483namespace 7484walks. On control method exit, only walk the namespace if the method is 7485known 7486to have created namespace objects outside of its local scope. Previously, 7487the 7488entire namespace was traversed on each control method exit. This change 7489can 7490improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7491Moore. 7492 7493Added support to truncate I/O addresses to 16 bits for Windows 7494compatibility. 7495Some ASL code has been seen in the field that inadvertently has bits set 7496above bit 15. This feature is optional and is enabled if the BIOS 7497requests 7498any Windows OSI strings. It can also be enabled by the host OS. Matthew 7499Garrett, Bob Moore. 7500 7501Added support to limit the maximum time for the ASL Sleep() operator. To 7502prevent accidental deep sleeps, limit the maximum time that Sleep() will 7503actually sleep. Configurable, the default maximum is two seconds. ACPICA 7504bugzilla 854. 7505 7506Added run-time validation support for the _WDG and_WED Microsoft 7507predefined 7508methods. These objects are defined by "Windows Instrumentation", and are 7509not 7510part of the ACPI spec. ACPICA BZ 860. 7511 7512Expanded all statistic counters used during namespace and device 7513initialization from 16 to 32 bits in order to support very large 7514namespaces. 7515 7516Replaced all instances of %d in printf format specifiers with %u since 7517nearly 7518all integers in ACPICA are unsigned. 7519 7520Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7521returned 7522as AE_NO_HANDLER. 7523 7524Example Code and Data Size: These are the sizes for the OS-independent 7525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7526debug version of the code includes the debug output trace mechanism and 7527has a 7528much larger code and data size. 7529 7530 Previous Release: 7531 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7532 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7533 Current Release: 7534 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7535 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7536 75372) iASL Compiler/Disassembler and Tools: 7538 7539iASL: Added compiler support for the _WDG and_WED Microsoft predefined 7540methods. These objects are defined by "Windows Instrumentation", and are 7541not 7542part of the ACPI spec. ACPICA BZ 860. 7543 7544AcpiExec: added option to disable the memory tracking mechanism. The -dt 7545option will disable the tracking mechanism, which improves performance 7546considerably. 7547 7548AcpiExec: Restructured the command line options into -d (disable) and -e 7549(enable) options. 7550 7551---------------------------------------- 755228 April 2010. Summary of changes for version 20100428: 7553 75541) ACPI CA Core Subsystem: 7555 7556Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 7557including FADT-based and GPE Block Devices, execute any _PRW methods in 7558the 7559new table, and process any _Lxx/_Exx GPE methods in the new table. Any 7560runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 7561immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 7562Devices. Provides compatibility with other ACPI implementations. Two new 7563files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 7564Moore. 7565 7566Fixed a regression introduced in version 20100331 within the table 7567manager 7568where initial table loading could fail. This was introduced in the fix 7569for 7570AcpiReallocateRootTable. Also, renamed some of fields in the table 7571manager 7572data structures to clarify their meaning and use. 7573 7574Fixed a possible allocation overrun during internal object copy in 7575AcpiUtCopySimpleObject. The original code did not correctly handle the 7576case 7577where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 7578847. 7579 7580Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 7581possible access beyond end-of-allocation. Also, now fully validate 7582descriptor 7583(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 7584 7585Example Code and Data Size: These are the sizes for the OS-independent 7586acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7587debug version of the code includes the debug output trace mechanism and 7588has a 7589much larger code and data size. 7590 7591 Previous Release: 7592 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7593 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7594 Current Release: 7595 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7596 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7597 75982) iASL Compiler/Disassembler and Tools: 7599 7600iASL: Implemented Min/Max/Len/Gran validation for address resource 7601descriptors. This change implements validation for the address fields 7602that 7603are common to all address-type resource descriptors. These checks are 7604implemented: Checks for valid Min/Max, length within the Min/Max window, 7605valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7606per 7607table 6-40 in the ACPI 4.0a specification. Also split the large 7608aslrestype1.c 7609and aslrestype2.c files into five new files. ACPICA BZ 840. 7610 7611iASL: Added support for the _Wxx predefined names. This support was 7612missing 7613and these names were not recognized by the compiler as valid predefined 7614names. ACPICA BZ 851. 7615 7616iASL: Added an error for all predefined names that are defined to return 7617no 7618value and thus must be implemented as Control Methods. These include all 7619of 7620the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7621names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7622 7623iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7624an 7625ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7626be 7627dynamically loaded via the Load() operator. Also cleaned up output for 7628the 7629- 7630ta and -tc options. ACPICA BZ 853. 7631 7632Tests: Added a new file with examples of extended iASL error checking. 7633Demonstrates the advanced error checking ability of the iASL compiler. 7634Available at tests/misc/badcode.asl. 7635 7636---------------------------------------- 763731 March 2010. Summary of changes for version 20100331: 7638 76391) ACPI CA Core Subsystem: 7640 7641Completed a major update for the GPE support in order to improve support 7642for 7643shared GPEs and to simplify both host OS and ACPICA code. Added a 7644reference 7645count mechanism to support shared GPEs that require multiple device 7646drivers. 7647Several external interfaces have changed. One external interface has been 7648removed. One new external interface was added. Most of the GPE external 7649interfaces now use the GPE spinlock instead of the events mutex (and the 7650Flags parameter for many GPE interfaces has been removed.) See the 7651updated 7652ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7653Rafael 7654Wysocki. ACPICA BZ 831. 7655 7656Changed: 7657 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7658Removed: 7659 AcpiSetGpeType 7660New: 7661 AcpiSetGpe 7662 7663Implemented write support for DataTable operation regions. These regions 7664are 7665defined via the DataTableRegion() operator. Previously, only read support 7666was 7667implemented. The ACPI specification allows DataTableRegions to be 7668read/write, 7669however. 7670 7671Implemented a new subsystem option to force a copy of the DSDT to local 7672memory. Optionally copy the entire DSDT to local memory (instead of 7673simply 7674mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7675replace 7676the original DSDT, creating the need for this option. Default is FALSE, 7677do 7678not copy the DSDT. 7679 7680Implemented detection of a corrupted or replaced DSDT. This change adds 7681support to detect a DSDT that has been corrupted and/or replaced from 7682outside 7683the OS (by firmware). This is typically catastrophic for the system, but 7684has 7685been seen on some machines. Once this problem has been detected, the DSDT 7686copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7687 7688Fixed two problems with AcpiReallocateRootTable during the root table 7689copy. 7690When copying the root table to the new allocation, the length used was 7691incorrect. The new size was used instead of the current table size, 7692meaning 7693too much data was copied. Also, the count of available slots for ACPI 7694tables 7695was not set correctly. Alexey Starikovskiy, Bob Moore. 7696 7697Example Code and Data Size: These are the sizes for the OS-independent 7698acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7699debug version of the code includes the debug output trace mechanism and 7700has a 7701much larger code and data size. 7702 7703 Previous Release: 7704 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7705 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7706 Current Release: 7707 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7708 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7709 77102) iASL Compiler/Disassembler and Tools: 7711 7712iASL: Implement limited typechecking for values returned from predefined 7713control methods. The type of any returned static (unnamed) object is now 7714validated. For example, Return(1). ACPICA BZ 786. 7715 7716iASL: Fixed a predefined name object verification regression. Fixes a 7717problem 7718introduced in version 20100304. An error is incorrectly generated if a 7719predefined name is declared as a static named object with a value defined 7720using the keywords "Zero", "One", or "Ones". Lin Ming. 7721 7722iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7723by 7724reducing the requested registry access rights. ACPICA BZ 842. 7725 7726Disassembler: fixed a possible fault when generating External() 7727statements. 7728Introduced in commit ae7d6fd: Properly handle externals with parent- 7729prefix 7730(carat). Fixes a string length allocation calculation. Lin Ming. 7731 7732---------------------------------------- 773304 March 2010. Summary of changes for version 20100304: 7734 77351) ACPI CA Core Subsystem: 7736 7737Fixed a possible problem with the AML Mutex handling function 7738AcpiExReleaseMutex where the function could fault under the very rare 7739condition when the interpreter has blocked, the interpreter lock is 7740released, 7741the interpreter is then reentered via the same thread, and attempts to 7742acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7743Lin 7744Ming. 7745 7746Implemented additional configuration support for the AML "Debug Object". 7747Output from the debug object can now be enabled via a global variable, 7748AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7749debugging. 7750This debug output is now available in the release version of ACPICA 7751instead 7752of just the debug version. Also, the entire debug output module can now 7753be 7754configured out of the ACPICA build if desired. One new file added, 7755executer/exdebug.c. Lin Ming, Bob Moore. 7756 7757Added header support for the ACPI MCHI table (Management Controller Host 7758Interface Table). This table was added in ACPI 4.0, but the defining 7759document 7760has only recently become available. 7761 7762Standardized output of integer values for ACPICA warnings/errors. Always 7763use 77640x prefix for hex output, always use %u for unsigned integer decimal 7765output. 7766Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7767400 7768invocations.) These invocations were converted from the original 7769ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7770 7771Example Code and Data Size: These are the sizes for the OS-independent 7772acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7773debug version of the code includes the debug output trace mechanism and 7774has a 7775much larger code and data size. 7776 7777 Previous Release: 7778 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7779 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7780 Current Release: 7781 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7782 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7783 77842) iASL Compiler/Disassembler and Tools: 7785 7786iASL: Implemented typechecking support for static (non-control method) 7787predefined named objects that are declared with the Name() operator. For 7788example, the type of this object is now validated to be of type Integer: 7789Name(_BBN, 1). This change migrates the compiler to using the core 7790predefined 7791name table instead of maintaining a local version. Added a new file, 7792aslpredef.c. ACPICA BZ 832. 7793 7794Disassembler: Added support for the ACPI 4.0 MCHI table. 7795 7796---------------------------------------- 779721 January 2010. Summary of changes for version 20100121: 7798 77991) ACPI CA Core Subsystem: 7800 7801Added the 2010 copyright to all module headers and signons. This affects 7802virtually every file in the ACPICA core subsystem, the iASL compiler, the 7803tools/utilities, and the test suites. 7804 7805Implemented a change to the AcpiGetDevices interface to eliminate 7806unnecessary 7807invocations of the _STA method. In the case where a specific _HID is 7808requested, do not run _STA until a _HID match is found. This eliminates 7809potentially dozens of _STA calls during a search for a particular 7810device/HID, 7811which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7812 7813Implemented an additional repair for predefined method return values. 7814Attempt 7815to repair unexpected NULL elements within returned Package objects. 7816Create 7817an 7818Integer of value zero, a NULL String, or a zero-length Buffer as 7819appropriate. 7820ACPICA BZ 818. Lin Ming, Bob Moore. 7821 7822Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7823the 7824code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7825(with 782664-bit AML integers). It is now obsolete and this change removes it from 7827the 7828ACPICA code base, replaced by UINT64. The original typedef has been 7829retained 7830for now for compatibility with existing device driver code. ACPICA BZ 7831824. 7832 7833Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7834in 7835the parse tree object. 7836 7837Added additional warning options for the gcc-4 generation. Updated the 7838source 7839accordingly. This includes some code restructuring to eliminate 7840unreachable 7841code, elimination of some gotos, elimination of unused return values, 7842some 7843additional casting, and removal of redundant declarations. 7844 7845Example Code and Data Size: These are the sizes for the OS-independent 7846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7847debug version of the code includes the debug output trace mechanism and 7848has a 7849much larger code and data size. 7850 7851 Previous Release: 7852 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7853 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7854 Current Release: 7855 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7856 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7857 78582) iASL Compiler/Disassembler and Tools: 7859 7860No functional changes for this release. 7861 7862---------------------------------------- 786314 December 2009. Summary of changes for version 20091214: 7864 78651) ACPI CA Core Subsystem: 7866 7867Enhanced automatic data type conversions for predefined name repairs. 7868This 7869change expands the automatic repairs/conversions for predefined name 7870return 7871values to make Integers, Strings, and Buffers fully interchangeable. 7872Also, 7873a 7874Buffer can be converted to a Package of Integers if necessary. The 7875nsrepair.c 7876module was completely restructured. Lin Ming, Bob Moore. 7877 7878Implemented automatic removal of null package elements during predefined 7879name 7880repairs. This change will automatically remove embedded and trailing NULL 7881package elements from returned package objects that are defined to 7882contain 7883a 7884variable number of sub-packages. The driver is then presented with a 7885package 7886with no null elements to deal with. ACPICA BZ 819. 7887 7888Implemented a repair for the predefined _FDE and _GTM names. The expected 7889return value for both names is a Buffer of 5 DWORDs. This repair fixes 7890two 7891possible problems (both seen in the field), where a package of integers 7892is 7893returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7894Kim. 7895 7896Implemented additional module-level code support. This change will 7897properly 7898execute module-level code that is not at the root of the namespace (under 7899a 7900Device object, etc.). Now executes the code within the current scope 7901instead 7902of the root. ACPICA BZ 762. Lin Ming. 7903 7904Fixed possible mutex acquisition errors when running _REG methods. Fixes 7905a 7906problem where mutex errors can occur when running a _REG method that is 7907in 7908the same scope as a method-defined operation region or an operation 7909region 7910under a module-level IF block. This type of code is rare, so the problem 7911has 7912not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7913 7914Fixed a possible memory leak during module-level code execution. An 7915object 7916could be leaked for each block of executed module-level code if the 7917interpreter slack mode is enabled This change deletes any implicitly 7918returned 7919object from the module-level code block. Lin Ming. 7920 7921Removed messages for successful predefined repair(s). The repair 7922mechanism 7923was considered too wordy. Now, messages are only unconditionally emitted 7924if 7925the return object cannot be repaired. Existing messages for successful 7926repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7927827. 7928 7929Example Code and Data Size: These are the sizes for the OS-independent 7930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7931debug version of the code includes the debug output trace mechanism and 7932has a 7933much larger code and data size. 7934 7935 Previous Release: 7936 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7937 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7938 Current Release: 7939 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7940 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7941 79422) iASL Compiler/Disassembler and Tools: 7943 7944iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7945files 7946were no longer automatically removed at the termination of the compile. 7947 7948acpiexec: Implemented the -f option to specify default region fill value. 7949This option specifies the value used to initialize buffers that simulate 7950operation regions. Default value is zero. Useful for debugging problems 7951that 7952depend on a specific initial value for a region or field. 7953 7954---------------------------------------- 795512 November 2009. Summary of changes for version 20091112: 7956 79571) ACPI CA Core Subsystem: 7958 7959Implemented a post-order callback to AcpiWalkNamespace. The existing 7960interface only has a pre-order callback. This change adds an additional 7961parameter for a post-order callback which will be more useful for bus 7962scans. 7963ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7964 7965Modified the behavior of the operation region memory mapping cache for 7966SystemMemory. Ensure that the memory mappings created for operation 7967regions 7968do not cross 4K page boundaries. Crossing a page boundary while mapping 7969regions can cause kernel warnings on some hosts if the pages have 7970different 7971attributes. Such regions are probably BIOS bugs, and this is the 7972workaround. 7973Linux BZ 14445. Lin Ming. 7974 7975Implemented an automatic repair for predefined methods that must return 7976sorted lists. This change will repair (by sorting) packages returned by 7977_ALR, 7978_PSS, and _TSS. Drivers can now assume that the packages are correctly 7979sorted 7980and do not contain NULL package elements. Adds one new file, 7981namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7982 7983Fixed a possible fault during predefined name validation if a return 7984Package 7985object contains NULL elements. Also adds a warning if a NULL element is 7986followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7987may 7988include repair or removal of all such NULL elements where possible. 7989 7990Implemented additional module-level executable AML code support. This 7991change 7992will execute module-level code that is not at the root of the namespace 7993(under a Device object, etc.) at table load time. Module-level executable 7994AML 7995code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7996 7997Implemented a new internal function to create Integer objects. This 7998function 7999simplifies miscellaneous object creation code. ACPICA BZ 823. 8000 8001Reduced the severity of predefined repair messages, Warning to Info. 8002Since 8003the object was successfully repaired, a warning is too severe. Reduced to 8004an 8005info message for now. These messages may eventually be changed to debug- 8006only. 8007ACPICA BZ 812. 8008 8009Example Code and Data Size: These are the sizes for the OS-independent 8010acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8011debug version of the code includes the debug output trace mechanism and 8012has a 8013much larger code and data size. 8014 8015 Previous Release: 8016 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8017 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8018 Current Release: 8019 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 8020 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 8021 80222) iASL Compiler/Disassembler and Tools: 8023 8024iASL: Implemented Switch() with While(1) so that Break works correctly. 8025This 8026change correctly implements the Switch operator with a surrounding 8027While(1) 8028so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 8029 8030iASL: Added a message if a package initializer list is shorter than 8031package 8032length. Adds a new remark for a Package() declaration if an initializer 8033list 8034exists, but is shorter than the declared length of the package. Although 8035technically legal, this is probably a coding error and it is seen in the 8036field. ACPICA BZ 815. Lin Ming, Bob Moore. 8037 8038iASL: Fixed a problem where the compiler could fault after the maximum 8039number 8040of errors was reached (200). 8041 8042acpixtract: Fixed a possible warning for pointer cast if the compiler 8043warning 8044level set very high. 8045 8046---------------------------------------- 804713 October 2009. Summary of changes for version 20091013: 8048 80491) ACPI CA Core Subsystem: 8050 8051Fixed a problem where an Operation Region _REG method could be executed 8052more 8053than once. If a custom address space handler is installed by the host 8054before 8055the "initialize operation regions" phase of the ACPICA initialization, 8056any 8057_REG methods for that address space could be executed twice. This change 8058fixes the problem. ACPICA BZ 427. Lin Ming. 8059 8060Fixed a possible memory leak for the Scope() ASL operator. When the exact 8061invocation of "Scope(\)" is executed (change scope to root), one internal 8062operand object was leaked. Lin Ming. 8063 8064Implemented a run-time repair for the _MAT predefined method. If the _MAT 8065return value is defined as a Field object in the AML, and the field 8066size is less than or equal to the default width of an integer (32 or 806764),_MAT 8068can incorrectly return an Integer instead of a Buffer. ACPICA now 8069automatically repairs this problem. ACPICA BZ 810. 8070 8071Implemented a run-time repair for the _BIF and _BIX predefined methods. 8072The 8073"OEM Information" field is often incorrectly returned as an Integer with 8074value zero if the field is not supported by the platform. This is due to 8075an 8076ambiguity in the ACPI specification. The field should always be a string. 8077ACPICA now automatically repairs this problem by returning a NULL string 8078within the returned Package. ACPICA BZ 807. 8079 8080Example Code and Data Size: These are the sizes for the OS-independent 8081acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8082debug version of the code includes the debug output trace mechanism and 8083has a 8084much larger code and data size. 8085 8086 Previous Release: 8087 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8088 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8089 Current Release: 8090 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 8091 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 8092 80932) iASL Compiler/Disassembler and Tools: 8094 8095Disassembler: Fixed a problem where references to external symbols that 8096contained one or more parent-prefixes (carats) were not handled 8097correctly, 8098possibly causing a fault. ACPICA BZ 806. Lin Ming. 8099 8100Disassembler: Restructured the code so that all functions that handle 8101external symbols are in a single module. One new file is added, 8102common/dmextern.c. 8103 8104AML Debugger: Added a max count argument for the Batch command (which 8105executes multiple predefined methods within the namespace.) 8106 8107iASL: Updated the compiler documentation (User Reference.) Available at 8108http://www.acpica.org/documentation/. ACPICA BZ 750. 8109 8110AcpiXtract: Updated for Lint and other formatting changes. Close all open 8111files. 8112 8113---------------------------------------- 811403 September 2009. Summary of changes for version 20090903: 8115 81161) ACPI CA Core Subsystem: 8117 8118For Windows Vista compatibility, added the automatic execution of an _INI 8119method located at the namespace root (\_INI). This method is executed at 8120table load time. This support is in addition to the automatic execution 8121of 8122\_SB._INI. Lin Ming. 8123 8124Fixed a possible memory leak in the interpreter for AML package objects 8125if 8126the package initializer list is longer than the defined size of the 8127package. 8128This apparently can only happen if the BIOS changes the package size on 8129the 8130fly (seen in a _PSS object), as ASL compilers do not allow this. The 8131interpreter will truncate the package to the defined size (and issue an 8132error 8133message), but previously could leave the extra objects undeleted if they 8134were 8135pre-created during the argument processing (such is the case if the 8136package 8137consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8138 8139Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8140This has been reported in the field. Previously, ACPICA would zero out 8141the 8142buffer/string. Now, the operation is treated as a noop. Provides Windows 8143compatibility. ACPICA BZ 803. Lin Ming. 8144 8145Removed an extraneous error message for ASL constructs of the form 8146Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8147statements 8148are seen in many BIOSs and are once again treated as NOOPs and no error 8149is 8150emitted when they are encountered. ACPICA BZ 785. 8151 8152Fixed an extraneous warning message if a _DSM reserved method returns a 8153Package object. _DSM can return any type of object, so validation on the 8154return type cannot be performed. ACPICA BZ 802. 8155 8156Example Code and Data Size: These are the sizes for the OS-independent 8157acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8158debug version of the code includes the debug output trace mechanism and 8159has a 8160much larger code and data size. 8161 8162 Previous Release: 8163 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8164 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8165 Current Release: 8166 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8167 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8168 81692) iASL Compiler/Disassembler and Tools: 8170 8171iASL: Fixed a problem with the use of the Alias operator and Resource 8172Templates. The correct alias is now constructed and no error is emitted. 8173ACPICA BZ 738. 8174 8175iASL: Implemented the -I option to specify additional search directories 8176for 8177include files. Allows multiple additional search paths for include files. 8178Directories are searched in the order specified on the command line 8179(after 8180the local directory is searched.) ACPICA BZ 800. 8181 8182iASL: Fixed a problem where the full pathname for include files was not 8183emitted for warnings/errors. This caused the IDE support to not work 8184properly. ACPICA BZ 765. 8185 8186iASL: Implemented the -@ option to specify a Windows-style response file 8187containing additional command line options. ACPICA BZ 801. 8188 8189AcpiExec: Added support to load multiple AML files simultaneously (such 8190as 8191a 8192DSDT and multiple SSDTs). Also added support for wildcards within the AML 8193pathname. These features allow all machine tables to be easily loaded and 8194debugged together. ACPICA BZ 804. 8195 8196Disassembler: Added missing support for disassembly of HEST table Error 8197Bank 8198subtables. 8199 8200---------------------------------------- 820130 July 2009. Summary of changes for version 20090730: 8202 8203The ACPI 4.0 implementation for ACPICA is complete with this release. 8204 82051) ACPI CA Core Subsystem: 8206 8207ACPI 4.0: Added header file support for all new and changed ACPI tables. 8208Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8209new 8210for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8211BERT, 8212EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8213There 8214have been some ACPI 4.0 changes to other existing tables. Split the large 8215actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8216 8217ACPI 4.0: Implemented predefined name validation for all new names. There 8218are 821931 new names in ACPI 4.0. The predefined validation module was split into 8220two 8221files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8222 8223Implemented support for so-called "module-level executable code". This is 8224executable AML code that exists outside of any control method and is 8225intended 8226to be executed at table load time. Although illegal since ACPI 2.0, this 8227type 8228of code still exists and is apparently still being created. Blocks of 8229this 8230code are now detected and executed as intended. Currently, the code 8231blocks 8232must exist under either an If, Else, or While construct; these are the 8233typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8234 8235Implemented an automatic dynamic repair for predefined names that return 8236nested Package objects. This applies to predefined names that are defined 8237to 8238return a variable-length Package of sub-packages. If the number of sub- 8239packages is one, BIOS code is occasionally seen that creates a simple 8240single 8241package with no sub-packages. This code attempts to fix the problem by 8242wrapping a new package object around the existing package. These methods 8243can 8244be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8245BZ 8246790. 8247 8248Fixed a regression introduced in 20090625 for the AcpiGetDevices 8249interface. 8250The _HID/_CID matching was broken and no longer matched IDs correctly. 8251ACPICA 8252BZ 793. 8253 8254Fixed a problem with AcpiReset where the reset would silently fail if the 8255register was one of the protected I/O ports. AcpiReset now bypasses the 8256port 8257validation mechanism. This may eventually be driven into the 8258AcpiRead/Write 8259interfaces. 8260 8261Fixed a regression related to the recent update of the AcpiRead/Write 8262interfaces. A sleep/suspend could fail if the optional PM2 Control 8263register 8264does not exist during an attempt to write the Bus Master Arbitration bit. 8265(However, some hosts already delete the code that writes this bit, and 8266the 8267code may in fact be obsolete at this date.) ACPICA BZ 799. 8268 8269Fixed a problem where AcpiTerminate could fault if inadvertently called 8270twice 8271in succession. ACPICA BZ 795. 8272 8273Example Code and Data Size: These are the sizes for the OS-independent 8274acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8275debug version of the code includes the debug output trace mechanism and 8276has a 8277much larger code and data size. 8278 8279 Previous Release: 8280 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8281 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8282 Current Release: 8283 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8284 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8285 82862) iASL Compiler/Disassembler and Tools: 8287 8288ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8289changes to existing tables. ACPICA BZ 775. 8290 8291---------------------------------------- 829225 June 2009. Summary of changes for version 20090625: 8293 8294The ACPI 4.0 Specification was released on June 16 and is available at 8295www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8296continue for the next few releases. 8297 82981) ACPI CA Core Subsystem: 8299 8300ACPI 4.0: Implemented interpreter support for the IPMI operation region 8301address space. Includes support for bi-directional data buffers and an 8302IPMI 8303address space handler (to be installed by an IPMI device driver.) ACPICA 8304BZ 8305773. Lin Ming. 8306 8307ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8308Includes 8309support in both the header files and the disassembler. 8310 8311Completed a major update for the AcpiGetObjectInfo external interface. 8312Changes include: 8313 - Support for variable, unlimited length HID, UID, and CID strings. 8314 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8315etc.) 8316 - Call the _SxW power methods on behalf of a device object. 8317 - Determine if a device is a PCI root bridge. 8318 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8319These changes will require an update to all callers of this interface. 8320See 8321the updated ACPICA Programmer Reference for details. One new source file 8322has 8323been added - utilities/utids.c. ACPICA BZ 368, 780. 8324 8325Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8326transfers. The Value parameter has been extended from 32 bits to 64 bits 8327in 8328order to support new ACPI 4.0 tables. These changes will require an 8329update 8330to 8331all callers of these interfaces. See the ACPICA Programmer Reference for 8332details. ACPICA BZ 768. 8333 8334Fixed several problems with AcpiAttachData. The handler was not invoked 8335when 8336the host node was deleted. The data sub-object was not automatically 8337deleted 8338when the host node was deleted. The interface to the handler had an 8339unused 8340parameter, this was removed. ACPICA BZ 778. 8341 8342Enhanced the function that dumps ACPI table headers. All non-printable 8343characters in the string fields are now replaced with '?' (Signature, 8344OemId, 8345OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8346these fields are occasionally seen in the field. ACPICA BZ 788. 8347 8348Fixed a problem with predefined method repair code where the code that 8349attempts to repair/convert an object of incorrect type is only executed 8350on 8351the first time the predefined method is called. The mechanism that 8352disables 8353warnings on subsequent calls was interfering with the repair mechanism. 8354ACPICA BZ 781. 8355 8356Fixed a possible memory leak in the predefined validation/repair code 8357when 8358a 8359buffer is automatically converted to an expected string object. 8360 8361Removed obsolete 16-bit files from the distribution and from the current 8362git 8363tree head. ACPICA BZ 776. 8364 8365Example Code and Data Size: These are the sizes for the OS-independent 8366acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8367debug version of the code includes the debug output trace mechanism and 8368has a 8369much larger code and data size. 8370 8371 Previous Release: 8372 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8373 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8374 Current Release: 8375 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8376 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8377 83782) iASL Compiler/Disassembler and Tools: 8379 8380ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8381operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8382 8383ACPI 4.0: iASL - implemented compile-time validation support for all new 8384predefined names and control methods (31 total). ACPICA BZ 769. 8385 8386---------------------------------------- 838721 May 2009. Summary of changes for version 20090521: 8388 83891) ACPI CA Core Subsystem: 8390 8391Disabled the preservation of the SCI enable bit in the PM1 control 8392register. 8393The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8394to 8395be 8396a "preserved" bit - "OSPM always preserves this bit position", section 83974.7.3.2.1. However, some machines fail if this bit is in fact preserved 8398because the bit needs to be explicitly set by the OS as a workaround. No 8399machines fail if the bit is not preserved. Therefore, ACPICA no longer 8400attempts to preserve this bit. 8401 8402Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8403incorrectly formed _PRT package could cause a fault. Added validation to 8404ensure that each package element is actually a sub-package. 8405 8406Implemented a new interface to install or override a single control 8407method, 8408AcpiInstallMethod. This interface is useful when debugging in order to 8409repair 8410an existing method or to install a missing method without having to 8411override 8412the entire ACPI table. See the ACPICA Programmer Reference for use and 8413examples. Lin Ming, Bob Moore. 8414 8415Fixed several reference count issues with the DdbHandle object that is 8416created from a Load or LoadTable operator. Prevent premature deletion of 8417the 8418object. Also, mark the object as invalid once the table has been 8419unloaded. 8420This is needed because the handle itself may not be deleted after the 8421table 8422unload, depending on whether it has been stored in a named object by the 8423caller. Lin Ming. 8424 8425Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8426mutexes of the same sync level are acquired but then not released in 8427strict 8428opposite order, the internally maintained Current Sync Level becomes 8429confused 8430and can cause subsequent execution errors. ACPICA BZ 471. 8431 8432Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8433specification has been changed to make the SyncLevel for mutex objects 8434more 8435useful. When releasing a mutex, the SyncLevel of the mutex must now be 8436the 8437same as the current sync level. This makes more sense than the previous 8438rule 8439(SyncLevel less than or equal). This change updates the code to match the 8440specification. 8441 8442Fixed a problem with the local version of the AcpiOsPurgeCache function. 8443The 8444(local) cache must be locked during all cache object deletions. Andrew 8445Baumann. 8446 8447Updated the Load operator to use operation region interfaces. This 8448replaces 8449direct memory mapping with region access calls. Now, all region accesses 8450go 8451through the installed region handler as they should. 8452 8453Simplified and optimized the NsGetNextNode function. Reduced parameter 8454count 8455and reduced code for this frequently used function. 8456 8457Example Code and Data Size: These are the sizes for the OS-independent 8458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8459debug version of the code includes the debug output trace mechanism and 8460has a 8461much larger code and data size. 8462 8463 Previous Release: 8464 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8465 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8466 Current Release: 8467 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8468 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8469 84702) iASL Compiler/Disassembler and Tools: 8471 8472Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8473problems 8474with sub-table disassembly and handling invalid sub-tables. Attempt 8475recovery 8476after an invalid sub-table ID. 8477 8478---------------------------------------- 847922 April 2009. Summary of changes for version 20090422: 8480 84811) ACPI CA Core Subsystem: 8482 8483Fixed a compatibility issue with the recently released I/O port 8484protection 8485mechanism. For windows compatibility, 1) On a port protection violation, 8486simply ignore the request and do not return an exception (allow the 8487control 8488method to continue execution.) 2) If only part of the request overlaps a 8489protected port, read/write the individual ports that are not protected. 8490Linux 8491BZ 13036. Lin Ming 8492 8493Enhanced the execution of the ASL/AML BreakPoint operator so that it 8494actually 8495breaks into the AML debugger if the debugger is present. This matches the 8496ACPI-defined behavior. 8497 8498Fixed several possible warnings related to the use of the configurable 8499ACPI_THREAD_ID. This type can now be configured as either an integer or a 8500pointer with no warnings. Also fixes several warnings in printf-like 8501statements for the 64-bit build when the type is configured as a pointer. 8502ACPICA BZ 766, 767. 8503 8504Fixed a number of possible warnings when compiling with gcc 4+ (depending 8505on 8506warning options.) Examples include printf formats, aliasing, unused 8507globals, 8508missing prototypes, missing switch default statements, use of non-ANSI 8509library functions, use of non-ANSI constructs. See generate/unix/Makefile 8510for 8511a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8512 8513Example Code and Data Size: These are the sizes for the OS-independent 8514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8515debug version of the code includes the debug output trace mechanism and 8516has a 8517much larger code and data size. 8518 8519 Previous Release: 8520 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8521 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8522 Current Release: 8523 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8524 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8525 85262) iASL Compiler/Disassembler and Tools: 8527 8528iASL: Fixed a generation warning from Bison 2.3 and fixed several 8529warnings 8530on 8531the 64-bit build. 8532 8533iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8534not 8535correctly digest Windows/DOS formatted files (with CR/LF). 8536 8537iASL: Added a new option for "quiet mode" (-va) that produces only the 8538compilation summary, not individual errors and warnings. Useful for large 8539batch compilations. 8540 8541AcpiExec: Implemented a new option (-z) to enable a forced 8542semaphore/mutex 8543timeout that can be used to detect hang conditions during execution of 8544AML 8545code (includes both internal semaphores and AML-defined mutexes and 8546events.) 8547 8548Added new makefiles for the generation of acpica in a generic unix-like 8549environment. These makefiles are intended to generate the acpica tools 8550and 8551utilities from the original acpica git source tree structure. 8552 8553Test Suites: Updated and cleaned up the documentation files. Updated the 8554copyrights to 2009, affecting all source files. Use the new version of 8555iASL 8556with quiet mode. Increased the number of available semaphores in the 8557Windows 8558OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 8559added 8560an alternate implementation of the semaphore timeout to allow aslts to 8561execute fully on Cygwin. 8562 8563---------------------------------------- 856420 March 2009. Summary of changes for version 20090320: 8565 85661) ACPI CA Core Subsystem: 8567 8568Fixed a possible race condition between AcpiWalkNamespace and dynamic 8569table 8570unloads. Added a reader/writer locking mechanism to allow multiple 8571concurrent 8572namespace walks (readers), but block a dynamic table unload until it can 8573gain 8574exclusive write access to the namespace. This fixes a problem where a 8575table 8576unload could (possibly catastrophically) delete the portion of the 8577namespace 8578that is currently being examined by a walk. Adds a new file, utlock.c, 8579that 8580implements the reader/writer lock mechanism. ACPICA BZ 749. 8581 8582Fixed a regression introduced in version 20090220 where a change to the 8583FADT 8584handling could cause the ACPICA subsystem to access non-existent I/O 8585ports. 8586 8587Modified the handling of FADT register and table (FACS/DSDT) addresses. 8588The 8589FADT can contain both 32-bit and 64-bit versions of these addresses. 8590Previously, the 64-bit versions were favored, meaning that if both 32 and 859164 8592versions were valid, but not equal, the 64-bit version was used. This was 8593found to cause some machines to fail. Now, in this case, the 32-bit 8594version 8595is used instead. This now matches the Windows behavior. 8596 8597Implemented a new mechanism to protect certain I/O ports. Provides 8598Microsoft 8599compatibility and protects the standard PC I/O ports from access via AML 8600code. Adds a new file, hwvalid.c 8601 8602Fixed a possible extraneous warning message from the FADT support. The 8603message warns of a 32/64 length mismatch between the legacy and GAS 8604definitions for a register. 8605 8606Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8607is 8608made obsolete by the port protection mechanism above. It was previously 8609used 8610to validate the entire address range of an operation region, which could 8611be 8612incorrect if the range included illegal ports, but fields within the 8613operation region did not actually access those ports. Validation is now 8614performed on a per-field basis instead of the entire region. 8615 8616Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8617Ignored bits must be "preserved" according to the ACPI spec. Usually, 8618this 8619means a read/modify/write when writing to the register. However, for 8620status 8621registers, writing a one means clear the event. Writing a zero means 8622preserve 8623the event (do not clear.) This behavior is clarified in the ACPI 4.0 8624spec, 8625and the ACPICA code now simply always writes a zero to the ignored bit. 8626 8627Modified the handling of ignored bits for the PM1 A/B Control Registers. 8628As 8629per the ACPI specification, for the control registers, preserve 8630(read/modify/write) all bits that are defined as either reserved or 8631ignored. 8632 8633Updated the handling of write-only bits in the PM1 A/B Control Registers. 8634When reading the register, zero the write-only bits as per the ACPI spec. 8635ACPICA BZ 443. Lin Ming. 8636 8637Removed "Linux" from the list of supported _OSI strings. Linux no longer 8638wants to reply true to this request. The Windows strings are the only 8639paths 8640through the AML that are tested and known to work properly. 8641 8642 Previous Release: 8643 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8644 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8645 Current Release: 8646 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8647 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8648 86492) iASL Compiler/Disassembler and Tools: 8650 8651Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8652and 8653aetables.c 8654 8655---------------------------------------- 865620 February 2009. Summary of changes for version 20090220: 8657 86581) ACPI CA Core Subsystem: 8659 8660Optimized the ACPI register locking. Removed locking for reads from the 8661ACPI 8662bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8663is 8664not required when reading the single-bit registers. The 8665AcpiGetRegisterUnlocked function is no longer needed and has been 8666removed. 8667This will improve performance for reads on these registers. ACPICA BZ 8668760. 8669 8670Fixed the parameter validation for AcpiRead/Write. Now return 8671AE_BAD_PARAMETER if the input register pointer is null, and 8672AE_BAD_ADDRESS 8673if 8674the register has an address of zero. Previously, these cases simply 8675returned 8676AE_OK. For optional registers such as PM1B status/enable/control, the 8677caller 8678should check for a valid register address before calling. ACPICA BZ 748. 8679 8680Renamed the external ACPI bit register access functions. Renamed 8681AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8682functions. The new names are AcpiReadBitRegister and 8683AcpiWriteBitRegister. 8684Also, restructured the code for these functions by simplifying the code 8685path 8686and condensing duplicate code to reduce code size. 8687 8688Added new functions to transparently handle the possibly split PM1 A/B 8689registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8690functions 8691now handle the split registers for PM1 Status, Enable, and Control. 8692ACPICA 8693BZ 8694746. 8695 8696Added a function to handle the PM1 control registers, 8697AcpiHwWritePm1Control. 8698This function writes both of the PM1 control registers (A/B). These 8699registers 8700are different than the PM1 A/B status and enable registers in that 8701different 8702values can be written to the A/B registers. Most notably, the SLP_TYP 8703bits 8704can be different, as per the values returned from the _Sx predefined 8705methods. 8706 8707Removed an extra register write within AcpiHwClearAcpiStatus. This 8708function 8709was writing an optional PM1B status register twice. The existing call to 8710the 8711low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8712A/B 8713register. ACPICA BZ 751. 8714 8715Split out the PM1 Status registers from the FADT. Added new globals for 8716these 8717registers (A/B), similar to the way the PM1 Enable registers are handled. 8718Instead of overloading the FADT Event Register blocks. This makes the 8719code 8720clearer and less prone to error. 8721 8722Fixed the warning message for when the platform contains too many ACPI 8723tables 8724for the default size of the global root table data structure. The 8725calculation 8726for the truncation value was incorrect. 8727 8728Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8729obsolete macro, since it is now a simple reference to ->common.type. 8730There 8731were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8732 8733Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8734TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8735simply SLEEP_TYPE. ACPICA BZ 754. 8736 8737Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8738function is only needed on 64-bit host operating systems and is thus not 8739included for 32-bit hosts. 8740 8741Debug output: print the input and result for invocations of the _OSI 8742reserved 8743control method via the ACPI_LV_INFO debug level. Also, reduced some of 8744the 8745verbosity of this debug level. Len Brown. 8746 8747Example Code and Data Size: These are the sizes for the OS-independent 8748acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8749debug version of the code includes the debug output trace mechanism and 8750has a 8751much larger code and data size. 8752 8753 Previous Release: 8754 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8755 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8756 Current Release: 8757 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8758 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8759 87602) iASL Compiler/Disassembler and Tools: 8761 8762Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8763various legal performance profiles. 8764 8765---------------------------------------- 876623 January 2009. Summary of changes for version 20090123: 8767 87681) ACPI CA Core Subsystem: 8769 8770Added the 2009 copyright to all module headers and signons. This affects 8771virtually every file in the ACPICA core subsystem, the iASL compiler, and 8772the tools/utilities. 8773 8774Implemented a change to allow the host to override any ACPI table, 8775including 8776dynamically loaded tables. Previously, only the DSDT could be replaced by 8777the 8778host. With this change, the AcpiOsTableOverride interface is called for 8779each 8780table found in the RSDT/XSDT during ACPICA initialization, and also 8781whenever 8782a table is dynamically loaded via the AML Load operator. 8783 8784Updated FADT flag definitions, especially the Boot Architecture flags. 8785 8786Debugger: For the Find command, automatically pad the input ACPI name 8787with 8788underscores if the name is shorter than 4 characters. This enables a 8789match 8790with the actual namespace entry which is itself padded with underscores. 8791 8792Example Code and Data Size: These are the sizes for the OS-independent 8793acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8794debug version of the code includes the debug output trace mechanism and 8795has a 8796much larger code and data size. 8797 8798 Previous Release: 8799 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8800 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8801 Current Release: 8802 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8803 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8804 88052) iASL Compiler/Disassembler and Tools: 8806 8807Fix build error under Bison-2.4. 8808 8809Dissasembler: Enhanced FADT support. Added decoding of the Boot 8810Architecture 8811flags. Now decode all flags, regardless of the FADT version. Flag output 8812includes the FADT version which first defined each flag. 8813 8814The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8815and 8816DSDT). Windows only. 8817 8818---------------------------------------- 881904 December 2008. Summary of changes for version 20081204: 8820 88211) ACPI CA Core Subsystem: 8822 8823The ACPICA Programmer Reference has been completely updated and revamped 8824for 8825this release. This includes updates to the external interfaces, OSL 8826interfaces, the overview sections, and the debugger reference. 8827 8828Several new ACPICA interfaces have been implemented and documented in the 8829programmer reference: 8830AcpiReset - Writes the reset value to the FADT-defined reset register. 8831AcpiDisableAllGpes - Disable all available GPEs. 8832AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8833AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8834AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8835AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8836AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8837 8838Most of the public ACPI hardware-related interfaces have been moved to a 8839new 8840file, components/hardware/hwxface.c 8841 8842Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8843register lengths within the FADT are now used, and the low level ACPI 8844register access no longer hardcodes the ACPI register lengths. Given that 8845there may be some risk in actually trusting the FADT register lengths, a 8846run- 8847time option was added to fall back to the default hardcoded lengths if 8848the 8849FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8850option is set to true for now, and a warning is issued if a suspicious 8851FADT 8852register length is overridden with the default value. 8853 8854Fixed a reference count issue in NsRepairObject. This problem was 8855introduced 8856in version 20081031 as part of a fix to repair Buffer objects within 8857Packages. Lin Ming. 8858 8859Added semaphore support to the Linux/Unix application OS-services layer 8860(OSL). ACPICA BZ 448. Lin Ming. 8861 8862Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8863will 8864be implemented in the OSL, or will binary semaphores be used instead. 8865 8866Example Code and Data Size: These are the sizes for the OS-independent 8867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8868debug version of the code includes the debug output trace mechanism and 8869has a 8870much larger code and data size. 8871 8872 Previous Release: 8873 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8874 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8875 Current Release: 8876 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8877 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8878 88792) iASL Compiler/Disassembler and Tools: 8880 8881iASL: Completed the '-e' option to include additional ACPI tables in 8882order 8883to 8884aid with disassembly and External statement generation. ACPICA BZ 742. 8885Lin 8886Ming. 8887 8888iASL: Removed the "named object in while loop" error. The compiler cannot 8889determine how many times a loop will execute. ACPICA BZ 730. 8890 8891Disassembler: Implemented support for FADT revision 2 (MS extension). 8892ACPICA 8893BZ 743. 8894 8895Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8896MCFG). 8897 8898---------------------------------------- 889931 October 2008. Summary of changes for version 20081031: 8900 89011) ACPI CA Core Subsystem: 8902 8903Restructured the ACPICA header files into public/private. acpi.h now 8904includes 8905only the "public" acpica headers. All other acpica headers are "private" 8906and 8907should not be included by acpica users. One new file, accommon.h is used 8908to 8909include the commonly used private headers for acpica code generation. 8910Future 8911plans include moving all private headers to a new subdirectory. 8912 8913Implemented an automatic Buffer->String return value conversion for 8914predefined ACPI methods. For these methods (such as _BIF), added 8915automatic 8916conversion for return objects that are required to be a String, but a 8917Buffer 8918was found instead. This can happen when reading string battery data from 8919an 8920operation region, because it used to be difficult to convert the data 8921from 8922buffer to string from within the ASL. Ensures that the host OS is 8923provided 8924with a valid null-terminated string. Linux BZ 11822. 8925 8926Updated the FACS waking vector interfaces. Split 8927AcpiSetFirmwareWakingVector 8928into two: one for the 32-bit vector, another for the 64-bit vector. This 8929is 8930required because the host OS must setup the wake much differently for 8931each 8932vector (real vs. protected mode, etc.) and the interface itself should 8933not 8934be 8935deciding which vector to use. Also, eliminated the 8936GetFirmwareWakingVector 8937interface, as it served no purpose (only the firmware reads the vector, 8938OS 8939only writes the vector.) ACPICA BZ 731. 8940 8941Implemented a mechanism to escape infinite AML While() loops. Added a 8942loop 8943counter to force exit from AML While loops if the count becomes too 8944large. 8945This can occur in poorly written AML when the hardware does not respond 8946within a while loop and the loop does not implement a timeout. The 8947maximum 8948loop count is configurable. A new exception code is returned when a loop 8949is 8950broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8951 8952Optimized the execution of AML While loops. Previously, a control state 8953object was allocated and freed for each execution of the loop. The 8954optimization is to simply reuse the control state for each iteration. 8955This 8956speeds up the raw loop execution time by about 5%. 8957 8958Enhanced the implicit return mechanism. For Windows compatibility, return 8959an 8960implicit integer of value zero for methods that contain no executable 8961code. 8962Such methods are seen in the field as stubs (presumably), and can cause 8963drivers to fail if they expect a return value. Lin Ming. 8964 8965Allow multiple backslashes as root prefixes in namepaths. In a fully 8966qualified namepath, allow multiple backslash prefixes. This can happen 8967(and 8968is seen in the field) because of the use of a double-backslash in strings 8969(since backslash is the escape character) causing confusion. ACPICA BZ 8970739 8971Lin Ming. 8972 8973Emit a warning if two different FACS or DSDT tables are discovered in the 8974FADT. Checks if there are two valid but different addresses for the FACS 8975and 8976DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8977 8978Consolidated the method argument count validation code. Merged the code 8979that 8980validates control method argument counts into the predefined validation 8981module. Eliminates possible multiple warnings for incorrect argument 8982counts. 8983 8984Implemented ACPICA example code. Includes code for ACPICA initialization, 8985handler installation, and calling a control method. Available at 8986source/tools/examples. 8987 8988Added a global pointer for FACS table to simplify internal FACS access. 8989Use 8990the global pointer instead of using AcpiGetTableByIndex for each FACS 8991access. 8992This simplifies the code for the Global Lock and the Firmware Waking 8993Vector(s). 8994 8995Example Code and Data Size: These are the sizes for the OS-independent 8996acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8997debug version of the code includes the debug output trace mechanism and 8998has a 8999much larger code and data size. 9000 9001 Previous Release: 9002 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9003 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9004 Current Release: 9005 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 9006 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 9007 90082) iASL Compiler/Disassembler and Tools: 9009 9010iASL: Improved disassembly of external method calls. Added the -e option 9011to 9012allow the inclusion of additional ACPI tables to help with the 9013disassembly 9014of 9015method invocations and the generation of external declarations during the 9016disassembly. Certain external method invocations cannot be disassembled 9017properly without the actual declaration of the method. Use the -e option 9018to 9019include the table where the external method(s) are actually declared. 9020Most 9021useful for disassembling SSDTs that make method calls back to the master 9022DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 9023-d 9024-e dsdt.aml ssdt1.aml 9025 9026iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 9027problem where the use of an alias within a namepath would result in a not 9028found error or cause the compiler to fault. Also now allows forward 9029references from the Alias operator itself. ACPICA BZ 738. 9030 9031---------------------------------------- 903226 September 2008. Summary of changes for version 20080926: 9033 90341) ACPI CA Core Subsystem: 9035 9036Designed and implemented a mechanism to validate predefined ACPI methods 9037and 9038objects. This code validates the predefined ACPI objects (objects whose 9039names 9040start with underscore) that appear in the namespace, at the time they are 9041evaluated. The argument count and the type of the returned object are 9042validated against the ACPI specification. The purpose of this validation 9043is 9044to detect problems with the BIOS-implemented predefined ACPI objects 9045before 9046the results are returned to the ACPI-related drivers. Future enhancements 9047may 9048include actual repair of incorrect return objects where possible. Two new 9049files are nspredef.c and acpredef.h. 9050 9051Fixed a fault in the AML parser if a memory allocation fails during the 9052Op 9053completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 9054 9055Fixed an issue with implicit return compatibility. This change improves 9056the 9057implicit return mechanism to be more compatible with the MS interpreter. 9058Lin 9059Ming, ACPICA BZ 349. 9060 9061Implemented support for zero-length buffer-to-string conversions. Allow 9062zero 9063length strings during interpreter buffer-to-string conversions. For 9064example, 9065during the ToDecimalString and ToHexString operators, as well as implicit 9066conversions. Fiodor Suietov, ACPICA BZ 585. 9067 9068Fixed two possible memory leaks in the error exit paths of 9069AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 9070are 9071similar in that they use a stack of state objects in order to eliminate 9072recursion. The stack must be fully unwound and deallocated if an error 9073occurs. Lin Ming. ACPICA BZ 383. 9074 9075Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 9076global 9077ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 9078Moore ACPICA BZ 442. 9079 9080Removed the obsolete version number in module headers. Removed the 9081"$Revision" number that appeared in each module header. This version 9082number 9083was useful under SourceSafe and CVS, but has no meaning under git. It is 9084not 9085only incorrect, it could also be misleading. 9086 9087Example Code and Data Size: These are the sizes for the OS-independent 9088acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9089debug version of the code includes the debug output trace mechanism and 9090has a 9091much larger code and data size. 9092 9093 Previous Release: 9094 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9095 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9096 Current Release: 9097 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 9098 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 9099 9100---------------------------------------- 910129 August 2008. Summary of changes for version 20080829: 9102 91031) ACPI CA Core Subsystem: 9104 9105Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 9106Reference. Changes include the elimination of cheating on the Object 9107field 9108for the DdbHandle subtype, addition of a reference class field to 9109differentiate the various reference types (instead of an AML opcode), and 9110the 9111cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 9112 9113Reduce an error to a warning for an incorrect method argument count. 9114Previously aborted with an error if too few arguments were passed to a 9115control method via the external ACPICA interface. Now issue a warning 9116instead 9117and continue. Handles the case where the method inadvertently declares 9118too 9119many arguments, but does not actually use the extra ones. Applies mainly 9120to 9121the predefined methods. Lin Ming. Linux BZ 11032. 9122 9123Disallow the evaluation of named object types with no intrinsic value. 9124Return 9125AE_TYPE for objects that have no value and therefore evaluation is 9126undefined: 9127Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 9128of 9129these types were allowed, but an exception would be generated at some 9130point 9131during the evaluation. Now, the error is generated up front. 9132 9133Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9134(nsnames.c). Fixes a leak in the error exit path. 9135 9136Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9137debug 9138levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9139ACPI_EXCEPTION 9140interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9141ACPI_LV_EVENTS. 9142 9143Removed obsolete and/or unused exception codes from the acexcep.h header. 9144There is the possibility that certain device drivers may be affected if 9145they 9146use any of these exceptions. 9147 9148The ACPICA documentation has been added to the public git source tree, 9149under 9150acpica/documents. Included are the ACPICA programmer reference, the iASL 9151compiler reference, and the changes.txt release logfile. 9152 9153Example Code and Data Size: These are the sizes for the OS-independent 9154acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9155debug version of the code includes the debug output trace mechanism and 9156has a 9157much larger code and data size. 9158 9159 Previous Release: 9160 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9161 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9162 Current Release: 9163 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9164 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9165 91662) iASL Compiler/Disassembler and Tools: 9167 9168Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9169defines _SCP with 3 arguments. Previous versions defined it with only 1 9170argument. iASL now allows both definitions. 9171 9172iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9173zero- 9174length subtables when disassembling ACPI tables. Also fixed a couple of 9175errors where a full 16-bit table type field was not extracted from the 9176input 9177properly. 9178 9179acpisrc: Improve comment counting mechanism for generating source code 9180statistics. Count first and last lines of multi-line comments as 9181whitespace, 9182not comment lines. Handle Linux legal header in addition to standard 9183acpica 9184header. 9185 9186---------------------------------------- 9187 918829 July 2008. Summary of changes for version 20080729: 9189 91901) ACPI CA Core Subsystem: 9191 9192Fix a possible deadlock in the GPE dispatch. Remove call to 9193AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9194attempt 9195to acquire the GPE lock but can deadlock since the GPE lock is already 9196held 9197at dispatch time. This code was introduced in version 20060831 as a 9198response 9199to Linux BZ 6881 and has since been removed from Linux. 9200 9201Add a function to dereference returned reference objects. Examines the 9202return 9203object from a call to AcpiEvaluateObject. Any Index or RefOf references 9204are 9205automatically dereferenced in an attempt to return something useful 9206(these 9207reference types cannot be converted into an external ACPI_OBJECT.) 9208Provides 9209MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9210 9211x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9212subtables for the MADT and one new subtable for the SRAT. Includes 9213disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9214x2APIC 9215Specification, June 2008. 9216 9217Additional error checking for pathname utilities. Add error check after 9218all 9219calls to AcpiNsGetPathnameLength. Add status return from 9220AcpiNsBuildExternalPath and check after all calls. Add parameter 9221validation 9222to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9223 9224Return status from the global init function AcpiUtGlobalInitialize. This 9225is 9226used by both the kernel subsystem and the utilities such as iASL 9227compiler. 9228The function could possibly fail when the caches are initialized. Yang 9229Yi. 9230 9231Add a function to decode reference object types to strings. Created for 9232improved error messages. 9233 9234Improve object conversion error messages. Better error messages during 9235object 9236conversion from internal to the external ACPI_OBJECT. Used for external 9237calls 9238to AcpiEvaluateObject. 9239 9240Example Code and Data Size: These are the sizes for the OS-independent 9241acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9242debug version of the code includes the debug output trace mechanism and 9243has a 9244much larger code and data size. 9245 9246 Previous Release: 9247 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9248 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9249 Current Release: 9250 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9251 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9252 92532) iASL Compiler/Disassembler and Tools: 9254 9255Debugger: fix a possible hang when evaluating non-methods. Fixes a 9256problem 9257introduced in version 20080701. If the object being evaluated (via 9258execute 9259command) is not a method, the debugger can hang while trying to obtain 9260non- 9261existent parameters. 9262 9263iASL: relax error for using reserved "_T_x" identifiers. These names can 9264appear in a disassembled ASL file if they were emitted by the original 9265compiler. Instead of issuing an error or warning and forcing the user to 9266manually change these names, issue a remark instead. 9267 9268iASL: error if named object created in while loop. Emit an error if any 9269named 9270object is created within a While loop. If allowed, this code will 9271generate 9272a 9273run-time error on the second iteration of the loop when an attempt is 9274made 9275to 9276create the same named object twice. ACPICA bugzilla 730. 9277 9278iASL: Support absolute pathnames for include files. Add support for 9279absolute 9280pathnames within the Include operator. previously, only relative 9281pathnames 9282were supported. 9283 9284iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9285Descriptor. 9286The ACPI spec requires one interrupt minimum. BZ 423 9287 9288iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9289Handles the case for the Interrupt Resource Descriptor where 9290the ResourceSource argument is omitted but ResourceSourceIndex 9291is present. Now leave room for the Index. BZ 426 9292 9293iASL: Prevent error message if CondRefOf target does not exist. Fixes 9294cases 9295where an error message is emitted if the target does not exist. BZ 516 9296 9297iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9298(get ACPI tables on Windows). This was apparently broken in version 929920070919. 9300 9301AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9302where 9303the EOF happens immediately after the last table in the input file. Print 9304completion message. Previously, no message was displayed in this case. 9305 9306---------------------------------------- 930701 July 2008. Summary of changes for version 20080701: 9308 93090) Git source tree / acpica.org 9310 9311Fixed a problem where a git-clone from http would not transfer the entire 9312source tree. 9313 93141) ACPI CA Core Subsystem: 9315 9316Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9317enable bit. Now performs a read-change-write of the enable register 9318instead 9319of simply writing out the cached enable mask. This will prevent 9320inadvertent 9321enabling of GPEs if a rogue GPE is received during initialization (before 9322GPE 9323handlers are installed.) 9324 9325Implemented a copy for dynamically loaded tables. Previously, dynamically 9326loaded tables were simply mapped - but on some machines this memory is 9327corrupted after suspend. Now copy the table to a local buffer. For the 9328OpRegion case, added checksum verify. Use the table length from the table 9329header, not the region length. For the Buffer case, use the table length 9330also. Dennis Noordsij, Bob Moore. BZ 10734 9331 9332Fixed a problem where the same ACPI table could not be dynamically loaded 9333and 9334unloaded more than once. Without this change, a table cannot be loaded 9335again 9336once it has been loaded/unloaded one time. The current mechanism does not 9337unregister a table upon an unload. During a load, if the same table is 9338found, 9339this no longer returns an exception. BZ 722 9340 9341Fixed a problem where the wrong descriptor length was calculated for the 9342EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9343EndTag 9344are calculated as 12 bytes long, but the actual length in the internal 9345descriptor is 16 because of the round-up to 8 on the 64-bit build. 9346Reported 9347by Linn Crosetto. BZ 728 9348 9349Fixed a possible memory leak in the Unload operator. The DdbHandle 9350returned 9351by Load() did not have its reference count decremented during unload, 9352leading 9353to a memory leak. Lin Ming. BZ 727 9354 9355Fixed a possible memory leak when deleting thermal/processor objects. Any 9356associated notify handlers (and objects) were not being deleted. Fiodor 9357Suietov. BZ 506 9358 9359Fixed the ordering of the ASCII names in the global mutex table to match 9360the 9361actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9362only. 9363Vegard Nossum. BZ 726 9364 9365Enhanced the AcpiGetObjectInfo interface to return the number of required 9366arguments if the object is a control method. Added this call to the 9367debugger 9368so the proper number of default arguments are passed to a method. This 9369prevents a warning when executing methods from AcpiExec. 9370 9371Added a check for an invalid handle in AcpiGetObjectInfo. Return 9372AE_BAD_PARAMETER if input handle is invalid. BZ 474 9373 9374Fixed an extraneous warning from exconfig.c on the 64-bit build. 9375 9376Example Code and Data Size: These are the sizes for the OS-independent 9377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9378debug version of the code includes the debug output trace mechanism and 9379has a 9380much larger code and data size. 9381 9382 Previous Release: 9383 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9384 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9385 Current Release: 9386 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9387 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9388 93892) iASL Compiler/Disassembler and Tools: 9390 9391iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9392resource descriptor names. 9393 9394iASL: Detect invalid ASCII characters in input (windows version). Removed 9395the 9396"-CF" flag from the flex compile, enables correct detection of non-ASCII 9397characters in the input. BZ 441 9398 9399iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9400the 9401"result of operation not used" warning when the DDB handle returned from 9402LoadTable is not used. The warning is not needed. BZ 590 9403 9404AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9405method 9406to 9407pass address of table to the AML. Added option to disable OpRegion 9408simulation 9409to allow creation of an OpRegion with a real address that was passed to 9410_CFG. 9411All of this allows testing of the Load and Unload operators from 9412AcpiExec. 9413 9414Debugger: update tables command for unloaded tables. Handle unloaded 9415tables 9416and use the standard table header output routine. 9417 9418---------------------------------------- 941909 June 2008. Summary of changes for version 20080609: 9420 94211) ACPI CA Core Subsystem: 9422 9423Implemented a workaround for reversed _PRT entries. A significant number 9424of 9425BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9426change dynamically detects and repairs this problem. Provides 9427compatibility 9428with MS ACPI. BZ 6859 9429 9430Simplified the internal ACPI hardware interfaces to eliminate the locking 9431flag parameter from Register Read/Write. Added a new external interface, 9432AcpiGetRegisterUnlocked. 9433 9434Fixed a problem where the invocation of a GPE control method could hang. 9435This 9436was a regression introduced in 20080514. The new method argument count 9437validation mechanism can enter an infinite loop when a GPE method is 9438dispatched. Problem fixed by removing the obsolete code that passed GPE 9439block 9440information to the notify handler via the control method parameter 9441pointer. 9442 9443Fixed a problem where the _SST execution status was incorrectly returned 9444to 9445the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9446in 944720080514. _SST is optional and a NOT_FOUND exception should never be 9448returned. BZ 716 9449 9450Fixed a problem where a deleted object could be accessed from within the 9451AML 9452parser. This was a regression introduced in version 20080123 as a fix for 9453the 9454Unload operator. Lin Ming. BZ 10669 9455 9456Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9457operands 9458and eliminated the use of a negative index in a loop. Operands are now 9459displayed in the correct order, not backwards. This also fixes a 9460regression 9461introduced in 20080514 on 64-bit systems where the elimination of 9462ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9463715 9464 9465Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9466exit 9467path did not delete a locally allocated structure. 9468 9469Updated definitions for the DMAR and SRAT tables to synchronize with the 9470current specifications. Includes disassembler support. 9471 9472Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9473loop termination value was used. Loop terminated on iteration early, 9474missing 9475one mutex. Linn Crosetto 9476 9477Example Code and Data Size: These are the sizes for the OS-independent 9478acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9479debug version of the code includes the debug output trace mechanism and 9480has a 9481much larger code and data size. 9482 9483 Previous Release: 9484 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9485 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9486 Current Release: 9487 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9488 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9489 94902) iASL Compiler/Disassembler and Tools: 9491 9492Disassembler: Implemented support for EisaId() within _CID objects. Now 9493disassemble integer _CID objects back to EisaId invocations, including 9494multiple integers within _CID packages. Includes single-step support for 9495debugger also. 9496 9497Disassembler: Added support for DMAR and SRAT table definition changes. 9498 9499---------------------------------------- 950014 May 2008. Summary of changes for version 20080514: 9501 95021) ACPI CA Core Subsystem: 9503 9504Fixed a problem where GPEs were enabled too early during the ACPICA 9505initialization. This could lead to "handler not installed" errors on some 9506machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9507This 9508ensures that all operation regions and devices throughout the namespace 9509have 9510been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9511 9512Implemented a change to the enter sleep code. Moved execution of the _GTS 9513method to just before setting sleep enable bit. The execution was moved 9514from 9515AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9516immediately before the SLP_EN bit is set, as per the ACPI specification. 9517Luming Yu, BZ 1653. 9518 9519Implemented a fix to disable unknown GPEs (2nd version). Now always 9520disable 9521the GPE, even if ACPICA thinks that that it is already disabled. It is 9522possible that the AML or some other code has enabled the GPE unbeknownst 9523to 9524the ACPICA code. 9525 9526Fixed a problem with the Field operator where zero-length fields would 9527return 9528an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9529ASL 9530field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9531 9532Implemented a fix for the Load operator, now load the table at the 9533namespace 9534root. This reverts a change introduced in version 20071019. The table is 9535now 9536loaded at the namespace root even though this goes against the ACPI 9537specification. This provides compatibility with other ACPI 9538implementations. 9539The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 9540Ming. 9541 9542Fixed a problem where ACPICA would not Load() tables with unusual 9543signatures. 9544Now ignore ACPI table signature for Load() operator. Only "SSDT" is 9545acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 9546Therefore, signature validation is worthless. Apparently MS ACPI accepts 9547such 9548signatures, ACPICA must be compatible. BZ 10454. 9549 9550Fixed a possible negative array index in AcpiUtValidateException. Added 9551NULL 9552fields to the exception string arrays to eliminate a -1 subtraction on 9553the 9554SubStatus field. 9555 9556Updated the debug tracking macros to reduce overall code and data size. 9557Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 9558instead of pointers to static strings. Jan Beulich and Bob Moore. 9559 9560Implemented argument count checking in control method invocation via 9561AcpiEvaluateObject. Now emit an error if too few arguments, warning if 9562too 9563many. This applies only to extern programmatic control method execution, 9564not 9565method-to-method calls within the AML. Lin Ming. 9566 9567Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 9568no 9569longer needed, especially with the removal of 16-bit support. It was 9570replaced 9571mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 9572bit 9573on 957432/64-bit platforms is required. 9575 9576Added the C const qualifier for appropriate string constants -- mostly 9577MODULE_NAME and printf format strings. Jan Beulich. 9578 9579Example Code and Data Size: These are the sizes for the OS-independent 9580acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9581debug version of the code includes the debug output trace mechanism and 9582has a 9583much larger code and data size. 9584 9585 Previous Release: 9586 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9587 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9588 Current Release: 9589 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9590 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9591 95922) iASL Compiler/Disassembler and Tools: 9593 9594Implemented ACPI table revision ID validation in the disassembler. Zero 9595is 9596always invalid. For DSDTs, the ID controls the interpreter integer width. 95971 9598means 32-bit and this is unusual. 2 or greater is 64-bit. 9599 9600---------------------------------------- 960121 March 2008. Summary of changes for version 20080321: 9602 96031) ACPI CA Core Subsystem: 9604 9605Implemented an additional change to the GPE support in order to suppress 9606spurious or stray GPEs. The AcpiEvDisableGpe function will now 9607permanently 9608disable incoming GPEs that are neither enabled nor disabled -- meaning 9609that 9610the GPE is unknown to the system. This should prevent future interrupt 9611floods 9612from that GPE. BZ 6217 (Zhang Rui) 9613 9614Fixed a problem where NULL package elements were not returned to the 9615AcpiEvaluateObject interface correctly. The element was simply ignored 9616instead of returning a NULL ACPI_OBJECT package element, potentially 9617causing 9618a buffer overflow and/or confusing the caller who expected a fixed number 9619of 9620elements. BZ 10132 (Lin Ming, Bob Moore) 9621 9622Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9623Dword, 9624Qword), Field, BankField, and IndexField operators when invoked from 9625inside 9626an executing control method. In this case, these operators created 9627namespace 9628nodes that were incorrectly left marked as permanent nodes instead of 9629temporary nodes. This could cause a problem if there is race condition 9630between an exiting control method and a running namespace walk. (Reported 9631by 9632Linn Crosetto) 9633 9634Fixed a problem where the CreateField and CreateXXXField operators would 9635incorrectly allow duplicate names (the name of the field) with no 9636exception 9637generated. 9638 9639Implemented several changes for Notify handling. Added support for new 9640Notify 9641values (ACPI 2.0+) and improved the Notify debug output. Notify on 9642PowerResource objects is no longer allowed, as per the ACPI 9643specification. 9644(Bob Moore, Zhang Rui) 9645 9646All Reference Objects returned via the AcpiEvaluateObject interface are 9647now 9648marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9649for 9650NULL objects - either NULL package elements or unresolved named 9651references. 9652 9653Fixed a problem where an extraneous debug message was produced for 9654package 9655objects (when debugging enabled). The message "Package List length larger 9656than NumElements count" is now produced in the correct case, and is now 9657an 9658error message rather than a debug message. Added a debug message for the 9659opposite case, where NumElements is larger than the Package List (the 9660package 9661will be padded out with NULL elements as per the ACPI spec.) 9662 9663Implemented several improvements for the output of the ASL "Debug" object 9664to 9665clarify and keep all data for a given object on one output line. 9666 9667Fixed two size calculation issues with the variable-length Start 9668Dependent 9669resource descriptor. 9670 9671Example Code and Data Size: These are the sizes for the OS-independent 9672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9673debug version of the code includes the debug output trace mechanism and 9674has 9675a much larger code and data size. 9676 9677 Previous Release: 9678 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9679 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9680 Current Release: 9681 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9682 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9683 96842) iASL Compiler/Disassembler and Tools: 9685 9686Fixed a problem with the use of the Switch operator where execution of 9687the 9688containing method by multiple concurrent threads could cause an 9689AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9690actual Switch opcode, it must be simulated with local named temporary 9691variables and if/else pairs. The solution chosen was to mark any method 9692that 9693uses Switch as Serialized, thus preventing multiple thread entries. BZ 9694469. 9695 9696---------------------------------------- 969713 February 2008. Summary of changes for version 20080213: 9698 96991) ACPI CA Core Subsystem: 9700 9701Implemented another MS compatibility design change for GPE/Notify 9702handling. 9703GPEs are now cleared/enabled asynchronously to allow all pending notifies 9704to 9705complete first. It is expected that the OSL will queue the enable request 9706behind all pending notify requests (may require changes to the local host 9707OSL 9708in AcpiOsExecute). Alexey Starikovskiy. 9709 9710Fixed a problem where buffer and package objects passed as arguments to a 9711control method via the external AcpiEvaluateObject interface could cause 9712an 9713AE_AML_INTERNAL exception depending on the order and type of operators 9714executed by the target control method. 9715 9716Fixed a problem where resource descriptor size optimization could cause a 9717problem when a _CRS resource template is passed to a _SRS method. The 9718_SRS 9719resource template must use the same descriptors (with the same size) as 9720returned from _CRS. This change affects the following resource 9721descriptors: 9722IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 97239487) 9724 9725Fixed a problem where a CopyObject to RegionField, BankField, and 9726IndexField 9727objects did not perform an implicit conversion as it should. These types 9728must 9729retain their initial type permanently as per the ACPI specification. 9730However, 9731a CopyObject to all other object types should not perform an implicit 9732conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9733 9734Fixed a problem with the AcpiGetDevices interface where the mechanism to 9735match device CIDs did not examine the entire list of available CIDs, but 9736instead aborted on the first non-matching CID. Andrew Patterson. 9737 9738Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9739was 9740inadvertently changed to return a 16-bit value instead of a 32-bit value, 9741truncating the upper dword of a 64-bit value. This macro is only used to 9742display debug output, so no incorrect calculations were made. Also, 9743reimplemented the macro so that a 64-bit shift is not performed by 9744inefficient compilers. 9745 9746Added missing va_end statements that should correspond with each va_start 9747statement. 9748 9749Example Code and Data Size: These are the sizes for the OS-independent 9750acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9751debug version of the code includes the debug output trace mechanism and 9752has 9753a much larger code and data size. 9754 9755 Previous Release: 9756 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9757 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9758 Current Release: 9759 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9760 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9761 97622) iASL Compiler/Disassembler and Tools: 9763 9764Implemented full disassembler support for the following new ACPI tables: 9765BERT, EINJ, and ERST. Implemented partial disassembler support for the 9766complicated HEST table. These tables support the Windows Hardware Error 9767Architecture (WHEA). 9768 9769---------------------------------------- 977023 January 2008. Summary of changes for version 20080123: 9771 97721) ACPI CA Core Subsystem: 9773 9774Added the 2008 copyright to all module headers and signons. This affects 9775virtually every file in the ACPICA core subsystem, the iASL compiler, and 9776the tools/utilities. 9777 9778Fixed a problem with the SizeOf operator when used with Package and 9779Buffer 9780objects. These objects have deferred execution for some arguments, and 9781the 9782execution is now completed before the SizeOf is executed. This problem 9783caused 9784unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9785BZ 97869558 9787 9788Implemented an enhancement to the interpreter "slack mode". In the 9789absence 9790of 9791an explicit return or an implicitly returned object from the last 9792executed 9793opcode, a control method will now implicitly return an integer of value 0 9794for 9795Microsoft compatibility. (Lin Ming) BZ 392 9796 9797Fixed a problem with the Load operator where an exception was not 9798returned 9799in 9800the case where the table is already loaded. (Lin Ming) BZ 463 9801 9802Implemented support for the use of DDBHandles as an Indexed Reference, as 9803per 9804the ACPI spec. (Lin Ming) BZ 486 9805 9806Implemented support for UserTerm (Method invocation) for the Unload 9807operator 9808as per the ACPI spec. (Lin Ming) BZ 580 9809 9810Fixed a problem with the LoadTable operator where the OemId and 9811OemTableId 9812input strings could cause unexpected failures if they were shorter than 9813the 9814maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9815 9816Implemented support for UserTerm (Method invocation) for the Unload 9817operator 9818as per the ACPI spec. (Lin Ming) BZ 580 9819 9820Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9821HEST, 9822IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9823 9824Example Code and Data Size: These are the sizes for the OS-independent 9825acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9826debug version of the code includes the debug output trace mechanism and 9827has 9828a much larger code and data size. 9829 9830 Previous Release: 9831 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9832 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9833 Current Release: 9834 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9835 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9836 98372) iASL Compiler/Disassembler and Tools: 9838 9839Implemented support in the disassembler for checksum validation on 9840incoming 9841binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9842table 9843header dump at the start of the disassembly. 9844 9845Implemented additional debugging information in the namespace listing 9846file 9847created during compilation. In addition to the namespace hierarchy, the 9848full 9849pathname to each namespace object is displayed. 9850 9851Fixed a problem with the disassembler where invalid ACPI tables could 9852cause 9853faults or infinite loops. 9854 9855Fixed an unexpected parse error when using the optional "parameter types" 9856list in a control method declaration. (Lin Ming) BZ 397 9857 9858Fixed a problem where two External declarations with the same name did 9859not 9860cause an error (Lin Ming) BZ 509 9861 9862Implemented support for full TermArgs (adding Argx, Localx and method 9863invocation) for the ParameterData parameter to the LoadTable operator. 9864(Lin 9865Ming) BZ 583,587 9866 9867---------------------------------------- 986819 December 2007. Summary of changes for version 20071219: 9869 98701) ACPI CA Core Subsystem: 9871 9872Implemented full support for deferred execution for the TermArg string 9873arguments for DataTableRegion. This enables forward references and full 9874operand resolution for the three string arguments. Similar to 9875OperationRegion 9876deferred argument execution.) Lin Ming. BZ 430 9877 9878Implemented full argument resolution support for the BankValue argument 9879to 9880BankField. Previously, only constants were supported, now any TermArg may 9881be 9882used. Lin Ming BZ 387, 393 9883 9884Fixed a problem with AcpiGetDevices where the search of a branch of the 9885device tree could be terminated prematurely. In accordance with the ACPI 9886specification, the search down the current branch is terminated if a 9887device 9888is both not present and not functional (instead of just not present.) 9889Yakui 9890Zhao. 9891 9892Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9893if 9894the underlying AML code changed the GPE enable registers. Now, any 9895unknown 9896incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9897disabled 9898instead of simply ignored. Rui Zhang. 9899 9900Fixed a problem with Index Fields where the Index register was 9901incorrectly 9902limited to a maximum of 32 bits. Now any size may be used. 9903 9904Fixed a couple memory leaks associated with "implicit return" objects 9905when 9906the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9907 9908Example Code and Data Size: These are the sizes for the OS-independent 9909acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9910debug version of the code includes the debug output trace mechanism and 9911has 9912a much larger code and data size. 9913 9914 Previous Release: 9915 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9916 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9917 Current Release: 9918 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9919 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9920 9921---------------------------------------- 992214 November 2007. Summary of changes for version 20071114: 9923 99241) ACPI CA Core Subsystem: 9925 9926Implemented event counters for each of the Fixed Events, the ACPI SCI 9927(interrupt) itself, and control methods executed. Named 9928AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9929These 9930should be useful for debugging and statistics. 9931 9932Implemented a new external interface, AcpiGetStatistics, to retrieve the 9933contents of the various event counters. Returns the current values for 9934AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9935AcpiMethodCount. The interface can be expanded in the future if new 9936counters 9937are added. Device drivers should use this interface rather than access 9938the 9939counters directly. 9940 9941Fixed a problem with the FromBCD and ToBCD operators. With some 9942compilers, 9943the ShortDivide function worked incorrectly, causing problems with the 9944BCD 9945functions with large input values. A truncation from 64-bit to 32-bit 9946inadvertently occurred. Internal BZ 435. Lin Ming 9947 9948Fixed a problem with Index references passed as method arguments. 9949References 9950passed as arguments to control methods were dereferenced immediately 9951(before 9952control was passed to the called method). The references are now 9953correctly 9954passed directly to the called method. BZ 5389. Lin Ming 9955 9956Fixed a problem with CopyObject used in conjunction with the Index 9957operator. 9958The reference was incorrectly dereferenced before the copy. The reference 9959is 9960now correctly copied. BZ 5391. Lin Ming 9961 9962Fixed a problem with Control Method references within Package objects. 9963These 9964references are now correctly generated. This completes the package 9965construction overhaul that began in version 20071019. 9966 9967Example Code and Data Size: These are the sizes for the OS-independent 9968acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9969debug version of the code includes the debug output trace mechanism and 9970has 9971a much larger code and data size. 9972 9973 Previous Release: 9974 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9975 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9976 Current Release: 9977 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9978 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9979 9980 99812) iASL Compiler/Disassembler and Tools: 9982 9983The AcpiExec utility now installs handlers for all of the predefined 9984Operation Region types. New types supported are: PCI_Config, CMOS, and 9985PCIBARTarget. 9986 9987Fixed a problem with the 64-bit version of AcpiExec where the extended 9988(64- 9989bit) address fields for the DSDT and FACS within the FADT were not being 9990used, causing truncation of the upper 32-bits of these addresses. Lin 9991Ming 9992and Bob Moore 9993 9994---------------------------------------- 999519 October 2007. Summary of changes for version 20071019: 9996 99971) ACPI CA Core Subsystem: 9998 9999Fixed a problem with the Alias operator when the target of the alias is a 10000named ASL operator that opens a new scope -- Scope, Device, 10001PowerResource, 10002Processor, and ThermalZone. In these cases, any children of the original 10003operator could not be accessed via the alias, potentially causing 10004unexpected 10005AE_NOT_FOUND exceptions. (BZ 9067) 10006 10007Fixed a problem with the Package operator where all named references were 10008created as object references and left otherwise unresolved. According to 10009the 10010ACPI specification, a Package can only contain Data Objects or references 10011to 10012control methods. The implication is that named references to Data Objects 10013(Integer, Buffer, String, Package, BufferField, Field) should be resolved 10014immediately upon package creation. This is the approach taken with this 10015change. References to all other named objects (Methods, Devices, Scopes, 10016etc.) are all now properly created as reference objects. (BZ 5328) 10017 10018Reverted a change to Notify handling that was introduced in version 1001920070508. This version changed the Notify handling from asynchronous to 10020fully synchronous (Device driver Notify handling with respect to the 10021Notify 10022ASL operator). It was found that this change caused more problems than it 10023solved and was removed by most users. 10024 10025Fixed a problem with the Increment and Decrement operators where the type 10026of 10027the target object could be unexpectedly and incorrectly changed. (BZ 353) 10028Lin Ming. 10029 10030Fixed a problem with the Load and LoadTable operators where the table 10031location within the namespace was ignored. Instead, the table was always 10032loaded into the root or current scope. Lin Ming. 10033 10034Fixed a problem with the Load operator when loading a table from a buffer 10035object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 10036 10037Fixed a problem with the Debug object where a store of a DdbHandle 10038reference 10039object to the Debug object could cause a fault. 10040 10041Added a table checksum verification for the Load operator, in the case 10042where 10043the load is from a buffer. (BZ 578). 10044 10045Implemented additional parameter validation for the LoadTable operator. 10046The 10047length of the input strings SignatureString, OemIdString, and OemTableId 10048are 10049now checked for maximum lengths. (BZ 582) Lin Ming. 10050 10051Example Code and Data Size: These are the sizes for the OS-independent 10052acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10053debug version of the code includes the debug output trace mechanism and 10054has 10055a much larger code and data size. 10056 10057 Previous Release: 10058 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10059 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10060 Current Release: 10061 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 10062 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 10063 10064 100652) iASL Compiler/Disassembler: 10066 10067Fixed a problem where if a single file was specified and the file did not 10068exist, no error message was emitted. (Introduced with wildcard support in 10069version 20070917.) 10070 10071---------------------------------------- 1007219 September 2007. Summary of changes for version 20070919: 10073 100741) ACPI CA Core Subsystem: 10075 10076Designed and implemented new external interfaces to install and remove 10077handlers for ACPI table-related events. Current events that are defined 10078are 10079LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 10080they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 10081AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 10082 10083Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 10084(acpi_serialized option on Linux) could cause some systems to hang during 10085initialization. (Bob Moore) BZ 8171 10086 10087Fixed a problem where objects of certain types (Device, ThermalZone, 10088Processor, PowerResource) can be not found if they are declared and 10089referenced from within the same control method (Lin Ming) BZ 341 10090 10091Example Code and Data Size: These are the sizes for the OS-independent 10092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10093debug version of the code includes the debug output trace mechanism and 10094has 10095a much larger code and data size. 10096 10097 Previous Release: 10098 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10099 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10100 Current Release: 10101 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 10102 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 10103 10104 101052) iASL Compiler/Disassembler: 10106 10107Implemented support to allow multiple files to be compiled/disassembled 10108in 10109a 10110single invocation. This includes command line wildcard support for both 10111the 10112Windows and Unix versions of the compiler. This feature simplifies the 10113disassembly and compilation of multiple ACPI tables in a single 10114directory. 10115 10116---------------------------------------- 1011708 May 2007. Summary of changes for version 20070508: 10118 101191) ACPI CA Core Subsystem: 10120 10121Implemented a Microsoft compatibility design change for the handling of 10122the 10123Notify AML operator. Previously, notify handlers were dispatched and 10124executed completely asynchronously in a deferred thread. The new design 10125still executes the notify handlers in a different thread, but the 10126original 10127thread that executed the Notify() now waits at a synchronization point 10128for 10129the notify handler to complete. Some machines depend on a synchronous 10130Notify 10131operator in order to operate correctly. 10132 10133Implemented support to allow Package objects to be passed as method 10134arguments to the external AcpiEvaluateObject interface. Previously, this 10135would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10136implemented since there were no reserved control methods that required it 10137until recently. 10138 10139Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10140that 10141contained invalid non-zero values in reserved fields could cause later 10142failures because these fields have meaning in later revisions of the 10143FADT. 10144For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10145fields 10146are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10147 10148Fixed a problem where the Global Lock handle was not properly updated if 10149a 10150thread that acquired the Global Lock via executing AML code then 10151attempted 10152to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10153Joe 10154Liu. 10155 10156Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10157could be corrupted if the interrupt being removed was at the head of the 10158list. Reported by Linn Crosetto. 10159 10160Example Code and Data Size: These are the sizes for the OS-independent 10161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10162debug version of the code includes the debug output trace mechanism and 10163has 10164a much larger code and data size. 10165 10166 Previous Release: 10167 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10168 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10169 Current Release: 10170 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10171 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10172 10173---------------------------------------- 1017420 March 2007. Summary of changes for version 20070320: 10175 101761) ACPI CA Core Subsystem: 10177 10178Implemented a change to the order of interpretation and evaluation of AML 10179operand objects within the AML interpreter. The interpreter now evaluates 10180operands in the order that they appear in the AML stream (and the 10181corresponding ASL code), instead of in the reverse order (after the 10182entire 10183operand list has been parsed). The previous behavior caused several 10184subtle 10185incompatibilities with the Microsoft AML interpreter as well as being 10186somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10187 10188Implemented a change to the ACPI Global Lock support. All interfaces to 10189the 10190global lock now allow the same thread to acquire the lock multiple times. 10191This affects the AcpiAcquireGlobalLock external interface to the global 10192lock 10193as well as the internal use of the global lock to support AML fields -- a 10194control method that is holding the global lock can now simultaneously 10195access 10196AML fields that require global lock protection. Previously, in both 10197cases, 10198this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10199to 10200AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10201Controller. There is no change to the behavior of the AML Acquire 10202operator, 10203as this can already be used to acquire a mutex multiple times by the same 10204thread. BZ 8066. With assistance from Alexey Starikovskiy. 10205 10206Fixed a problem where invalid objects could be referenced in the AML 10207Interpreter after error conditions. During operand evaluation, ensure 10208that 10209the internal "Return Object" field is cleared on error and only valid 10210pointers are stored there. Caused occasional access to deleted objects 10211that 10212resulted in "large reference count" warning messages. Valery Podrezov. 10213 10214Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10215on 10216deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10217Podrezov. 10218 10219Fixed an internal problem with the handling of result objects on the 10220interpreter result stack. BZ 7872. Valery Podrezov. 10221 10222Removed obsolete code that handled the case where AML_NAME_OP is the 10223target 10224of a reference (Reference.Opcode). This code was no longer necessary. BZ 102257874. Valery Podrezov. 10226 10227Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10228was 10229a 10230remnant from the previously discontinued 16-bit support. 10231 10232Example Code and Data Size: These are the sizes for the OS-independent 10233acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10234debug version of the code includes the debug output trace mechanism and 10235has 10236a much larger code and data size. 10237 10238 Previous Release: 10239 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10240 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10241 Current Release: 10242 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10243 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10244 10245---------------------------------------- 1024626 January 2007. Summary of changes for version 20070126: 10247 102481) ACPI CA Core Subsystem: 10249 10250Added the 2007 copyright to all module headers and signons. This affects 10251virtually every file in the ACPICA core subsystem, the iASL compiler, and 10252the utilities. 10253 10254Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10255during a table load. A bad pointer was passed in the case where the DSDT 10256is 10257overridden, causing a fault in this case. 10258 10259Example Code and Data Size: These are the sizes for the OS-independent 10260acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10261debug version of the code includes the debug output trace mechanism and 10262has 10263a much larger code and data size. 10264 10265 Previous Release: 10266 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10267 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10268 Current Release: 10269 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10270 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10271 10272---------------------------------------- 1027315 December 2006. Summary of changes for version 20061215: 10274 102751) ACPI CA Core Subsystem: 10276 10277Support for 16-bit ACPICA has been completely removed since it is no 10278longer 10279necessary and it clutters the code. All 16-bit macros, types, and 10280conditional compiles have been removed, cleaning up and simplifying the 10281code 10282across the entire subsystem. DOS support is no longer needed since the 10283bootable Linux firmware kit is now available. 10284 10285The handler for the Global Lock is now removed during AcpiTerminate to 10286enable a clean subsystem restart, via the implementation of the 10287AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10288HP) 10289 10290Implemented enhancements to the multithreading support within the 10291debugger 10292to enable improved multithreading debugging and evaluation of the 10293subsystem. 10294(Valery Podrezov) 10295 10296Debugger: Enhanced the Statistics/Memory command to emit the total 10297(maximum) 10298memory used during the execution, as well as the maximum memory consumed 10299by 10300each of the various object types. (Valery Podrezov) 10301 10302Example Code and Data Size: These are the sizes for the OS-independent 10303acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10304debug version of the code includes the debug output trace mechanism and 10305has 10306a much larger code and data size. 10307 10308 Previous Release: 10309 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10310 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10311 Current Release: 10312 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10313 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10314 10315 103162) iASL Compiler/Disassembler and Tools: 10317 10318AcpiExec: Implemented a new option (-m) to display full memory use 10319statistics upon subsystem/program termination. (Valery Podrezov) 10320 10321---------------------------------------- 1032209 November 2006. Summary of changes for version 20061109: 10323 103241) ACPI CA Core Subsystem: 10325 10326Optimized the Load ASL operator in the case where the source operand is 10327an 10328operation region. Simply map the operation region memory, instead of 10329performing a bytewise read. (Region must be of type SystemMemory, see 10330below.) 10331 10332Fixed the Load ASL operator for the case where the source operand is a 10333region field. A buffer object is also allowed as the source operand. BZ 10334480 10335 10336Fixed a problem where the Load ASL operator allowed the source operand to 10337be 10338an operation region of any type. It is now restricted to regions of type 10339SystemMemory, as per the ACPI specification. BZ 481 10340 10341Additional cleanup and optimizations for the new Table Manager code. 10342 10343AcpiEnable will now fail if all of the required ACPI tables are not 10344loaded 10345(FADT, FACS, DSDT). BZ 477 10346 10347Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10348this 10349header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10350manually optimized to be aligned and will not work if it is byte-packed. 10351 10352Example Code and Data Size: These are the sizes for the OS-independent 10353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10354debug version of the code includes the debug output trace mechanism and 10355has 10356a much larger code and data size. 10357 10358 Previous Release: 10359 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10360 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10361 Current Release: 10362 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10363 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10364 10365 103662) iASL Compiler/Disassembler and Tools: 10367 10368Fixed a problem where the presence of the _OSI predefined control method 10369within complex expressions could cause an internal compiler error. 10370 10371AcpiExec: Implemented full region support for multiple address spaces. 10372SpaceId is now part of the REGION object. BZ 429 10373 10374---------------------------------------- 1037511 October 2006. Summary of changes for version 20061011: 10376 103771) ACPI CA Core Subsystem: 10378 10379Completed an AML interpreter performance enhancement for control method 10380execution. Previously a 2-pass parse/execution, control methods are now 10381completely parsed and executed in a single pass. This improves overall 10382interpreter performance by ~25%, reduces code size, and reduces CPU stack 10383use. (Valery Podrezov + interpreter changes in version 20051202 that 10384eliminated namespace loading during the pass one parse.) 10385 10386Implemented _CID support for PCI Root Bridge detection. If the _HID does 10387not 10388match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10389now 10390obtained and also checked for an ID match. 10391 10392Implemented additional support for the PCI _ADR execution: upsearch until 10393a 10394device scope is found before executing _ADR. This allows PCI_Config 10395operation regions to be declared locally within control methods 10396underneath 10397PCI device objects. 10398 10399Fixed a problem with a possible race condition between threads executing 10400AcpiWalkNamespace and the AML interpreter. This condition was removed by 10401modifying AcpiWalkNamespace to (by default) ignore all temporary 10402namespace 10403entries created during any concurrent control method execution. An 10404additional namespace race condition is known to exist between 10405AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10406investigation. 10407 10408Restructured the AML ParseLoop function, breaking it into several 10409subfunctions in order to reduce CPU stack use and improve 10410maintainability. 10411(Mikhail Kouzmich) 10412 10413AcpiGetHandle: Fix for parameter validation to detect invalid 10414combinations 10415of prefix handle and pathname. BZ 478 10416 10417Example Code and Data Size: These are the sizes for the OS-independent 10418acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10419debug version of the code includes the debug output trace mechanism and 10420has 10421a much larger code and data size. 10422 10423 Previous Release: 10424 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10425 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10426 Current Release: 10427 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10428 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10429 104302) iASL Compiler/Disassembler and Tools: 10431 10432Ported the -g option (get local ACPI tables) to the new ACPICA Table 10433Manager 10434to restore original behavior. 10435 10436---------------------------------------- 1043727 September 2006. Summary of changes for version 20060927: 10438 104391) ACPI CA Core Subsystem: 10440 10441Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10442These functions now use a spinlock for mutual exclusion and the interrupt 10443level indication flag is not needed. 10444 10445Fixed a problem with the Global Lock where the lock could appear to be 10446obtained before it is actually obtained. The global lock semaphore was 10447inadvertently created with one unit instead of zero units. (BZ 464) 10448Fiodor 10449Suietov. 10450 10451Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10452during 10453a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10454 10455Example Code and Data Size: These are the sizes for the OS-independent 10456acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10457debug version of the code includes the debug output trace mechanism and 10458has 10459a much larger code and data size. 10460 10461 Previous Release: 10462 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10463 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10464 Current Release: 10465 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10466 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10467 10468 104692) iASL Compiler/Disassembler and Tools: 10470 10471Fixed a compilation problem with the pre-defined Resource Descriptor 10472field 10473names where an "object does not exist" error could be incorrectly 10474generated 10475if the parent ResourceTemplate pathname places the template within a 10476different namespace scope than the current scope. (BZ 7212) 10477 10478Fixed a problem where the compiler could hang after syntax errors 10479detected 10480in an ElseIf construct. (BZ 453) 10481 10482Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10483operator. An incorrect output filename was produced when this parameter 10484was 10485a null string (""). Now, the original input filename is used as the AML 10486output filename, with an ".aml" extension. 10487 10488Implemented a generic batch command mode for the AcpiExec utility 10489(execute 10490any AML debugger command) (Valery Podrezov). 10491 10492---------------------------------------- 1049312 September 2006. Summary of changes for version 20060912: 10494 104951) ACPI CA Core Subsystem: 10496 10497Enhanced the implementation of the "serialized mode" of the interpreter 10498(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10499specified, instead of creating a serialization semaphore per control 10500method, 10501the interpreter lock is simply no longer released before a blocking 10502operation during control method execution. This effectively makes the AML 10503Interpreter single-threaded. The overhead of a semaphore per-method is 10504eliminated. 10505 10506Fixed a regression where an error was no longer emitted if a control 10507method 10508attempts to create 2 objects of the same name. This once again returns 10509AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10510that 10511will dynamically serialize the control method to possible prevent future 10512errors. (BZ 440) 10513 10514Integrated a fix for a problem with PCI Express HID detection in the PCI 10515Config Space setup procedure. (BZ 7145) 10516 10517Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10518AcpiHwInitialize function - the FADT registers are now validated when the 10519table is loaded. 10520 10521Added two new warnings during FADT verification - 1) if the FADT is 10522larger 10523than the largest known FADT version, and 2) if there is a mismatch 10524between 10525a 1052632-bit block address and the 64-bit X counterpart (when both are non- 10527zero.) 10528 10529Example Code and Data Size: These are the sizes for the OS-independent 10530acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10531debug version of the code includes the debug output trace mechanism and 10532has 10533a much larger code and data size. 10534 10535 Previous Release: 10536 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10537 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10538 Current Release: 10539 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10540 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10541 10542 105432) iASL Compiler/Disassembler and Tools: 10544 10545Fixed a problem with the implementation of the Switch() operator where 10546the 10547temporary variable was declared too close to the actual Switch, instead 10548of 10549at method level. This could cause a problem if the Switch() operator is 10550within a while loop, causing an error on the second iteration. (BZ 460) 10551 10552Disassembler - fix for error emitted for unknown type for target of scope 10553operator. Now, ignore it and continue. 10554 10555Disassembly of an FADT now verifies the input FADT and reports any errors 10556found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 10557 10558Disassembly of raw data buffers with byte initialization data now 10559prefixes 10560each output line with the current buffer offset. 10561 10562Disassembly of ASF! table now includes all variable-length data fields at 10563the end of some of the subtables. 10564 10565The disassembler now emits a comment if a buffer appears to be a 10566ResourceTemplate, but cannot be disassembled as such because the EndTag 10567does 10568not appear at the very end of the buffer. 10569 10570AcpiExec - Added the "-t" command line option to enable the serialized 10571mode 10572of the AML interpreter. 10573 10574---------------------------------------- 1057531 August 2006. Summary of changes for version 20060831: 10576 105771) ACPI CA Core Subsystem: 10578 10579Miscellaneous fixes for the Table Manager: 10580- Correctly initialize internal common FADT for all 64-bit "X" fields 10581- Fixed a couple table mapping issues during table load 10582- Fixed a couple alignment issues for IA64 10583- Initialize input array to zero in AcpiInitializeTables 10584- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 10585AcpiGetTableByIndex 10586 10587Change for GPE support: when a "wake" GPE is received, all wake GPEs are 10588now 10589immediately disabled to prevent the waking GPE from firing again and to 10590prevent other wake GPEs from interrupting the wake process. 10591 10592Added the AcpiGpeCount global that tracks the number of processed GPEs, 10593to 10594be used for debugging systems with a large number of ACPI interrupts. 10595 10596Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10597both the ACPICA headers and the disassembler. 10598 10599Example Code and Data Size: These are the sizes for the OS-independent 10600acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10601debug version of the code includes the debug output trace mechanism and 10602has 10603a much larger code and data size. 10604 10605 Previous Release: 10606 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10607 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10608 Current Release: 10609 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10610 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10611 10612 106132) iASL Compiler/Disassembler and Tools: 10614 10615Disassembler support for the DMAR ACPI table. 10616 10617---------------------------------------- 1061823 August 2006. Summary of changes for version 20060823: 10619 106201) ACPI CA Core Subsystem: 10621 10622The Table Manager component has been completely redesigned and 10623reimplemented. The new design is much simpler, and reduces the overall 10624code 10625and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10626is 10627now possible to obtain the ACPI tables very early during kernel 10628initialization, even before dynamic memory management is initialized. 10629(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10630 10631Obsolete ACPICA interfaces: 10632 10633- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10634init 10635time). 10636- AcpiLoadTable: Not needed. 10637- AcpiUnloadTable: Not needed. 10638 10639New ACPICA interfaces: 10640 10641- AcpiInitializeTables: Must be called before the table manager can be 10642used. 10643- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10644allocated memory after it becomes available. 10645- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10646tables 10647in the RSDT/XSDT. 10648 10649Other ACPICA changes: 10650 10651- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10652Use 10653AcpiOsUnmapMemory to free this mapping. 10654- AcpiGetTable returns the actual mapped table. The mapping is managed 10655internally and must not be deleted by the caller. Use of this interface 10656causes no additional dynamic memory allocation. 10657- AcpiFindRootPointer: Support for physical addressing has been 10658eliminated, 10659it appeared to be unused. 10660- The interface to AcpiOsMapMemory has changed to be consistent with the 10661other allocation interfaces. 10662- The interface to AcpiOsGetRootPointer has changed to eliminate 10663unnecessary 10664parameters. 10665- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1066664- 10667bit platforms. Was previously 64 bits on all platforms. 10668- The interface to the ACPI Global Lock acquire/release macros have 10669changed 10670slightly since ACPICA no longer keeps a local copy of the FACS with a 10671constructed pointer to the actual global lock. 10672 10673Porting to the new table manager: 10674 10675- AcpiInitializeTables: Must be called once, and can be called anytime 10676during the OS initialization process. It allows the host to specify an 10677area 10678of memory to be used to store the internal version of the RSDT/XSDT (root 10679table). This allows the host to access ACPI tables before memory 10680management 10681is initialized and running. 10682- AcpiReallocateRootTable: Can be called after memory management is 10683running 10684to copy the root table to a dynamically allocated array, freeing up the 10685scratch memory specified in the call to AcpiInitializeTables. 10686- AcpiSubsystemInitialize: This existing interface is independent of the 10687Table Manager, and does not have to be called before the Table Manager 10688can 10689be used, it only must be called before the rest of ACPICA can be used. 10690- ACPI Tables: Some changes have been made to the names and structure of 10691the 10692actbl.h and actbl1.h header files and may require changes to existing 10693code. 10694For example, bitfields have been completely removed because of their lack 10695of 10696portability across C compilers. 10697- Update interfaces to the Global Lock acquire/release macros if local 10698versions are used. (see acwin.h) 10699 10700Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10701 10702New files: tbfind.c 10703 10704Example Code and Data Size: These are the sizes for the OS-independent 10705acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10706debug version of the code includes the debug output trace mechanism and 10707has 10708a much larger code and data size. 10709 10710 Previous Release: 10711 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10712 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10713 Current Release: 10714 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10715 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10716 10717 107182) iASL Compiler/Disassembler and Tools: 10719 10720No changes for this release. 10721 10722---------------------------------------- 1072321 July 2006. Summary of changes for version 20060721: 10724 107251) ACPI CA Core Subsystem: 10726 10727The full source code for the ASL test suite used to validate the iASL 10728compiler and the ACPICA core subsystem is being released with the ACPICA 10729source for the first time. The source is contained in a separate package 10730and 10731consists of over 1100 files that exercise all ASL/AML operators. The 10732package 10733should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10734Fiodor 10735Suietov) 10736 10737Completed a new design and implementation for support of the ACPI Global 10738Lock. On the OS side, the global lock is now treated as a standard AML 10739mutex. Previously, multiple OS threads could "acquire" the global lock 10740simultaneously. However, this could cause the BIOS to be starved out of 10741the 10742lock - especially in cases such as the Embedded Controller driver where 10743there is a tight coupling between the OS and the BIOS. 10744 10745Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10746The Global Lock interrupt handler no longer queues the execution of a 10747separate thread to signal the global lock semaphore. Instead, the 10748semaphore 10749is signaled directly from the interrupt handler. 10750 10751Implemented support within the AML interpreter for package objects that 10752contain a larger AML length (package list length) than the package 10753element 10754count. In this case, the length of the package is truncated to match the 10755package element count. Some BIOS code apparently modifies the package 10756length 10757on the fly, and this change supports this behavior. Provides 10758compatibility 10759with the MS AML interpreter. (With assistance from Fiodor Suietov) 10760 10761Implemented a temporary fix for the BankValue parameter of a Bank Field 10762to 10763support all constant values, now including the Zero and One opcodes. 10764Evaluation of this parameter must eventually be converted to a full 10765TermArg 10766evaluation. A not-implemented error is now returned (temporarily) for 10767non- 10768constant values for this parameter. 10769 10770Fixed problem reports (Fiodor Suietov) integrated: 10771- Fix for premature object deletion after CopyObject on Operation Region 10772(BZ 10773350) 10774 10775Example Code and Data Size: These are the sizes for the OS-independent 10776acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10777debug version of the code includes the debug output trace mechanism and 10778has 10779a much larger code and data size. 10780 10781 Previous Release: 10782 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10783 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10784 Current Release: 10785 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10786 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10787 10788 107892) iASL Compiler/Disassembler and Tools: 10790 10791No changes for this release. 10792 10793---------------------------------------- 1079407 July 2006. Summary of changes for version 20060707: 10795 107961) ACPI CA Core Subsystem: 10797 10798Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10799that do not allow the initialization of address pointers within packed 10800structures - even though the hardware itself may support misaligned 10801transfers. Some of the debug data structures are packed by default to 10802minimize size. 10803 10804Added an error message for the case where AcpiOsGetThreadId() returns 10805zero. 10806A non-zero value is required by the core ACPICA code to ensure the proper 10807operation of AML mutexes and recursive control methods. 10808 10809The DSDT is now the only ACPI table that determines whether the AML 10810interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10811but 10812the hooks for per-table 32/64 switching have been removed from the code. 10813A 10814clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10815 10816Fixed a possible leak of an OwnerID in the error path of 10817AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10818deletion to a single place in AcpiTbUninstallTable to correct possible 10819leaks 10820when using the AcpiTbDeleteTablesByType interface (with assistance from 10821Lance Ortiz.) 10822 10823Fixed a problem with Serialized control methods where the semaphore 10824associated with the method could be over-signaled after multiple method 10825invocations. 10826 10827Fixed two issues with the locking of the internal namespace data 10828structure. 10829Both the Unload() operator and AcpiUnloadTable interface now lock the 10830namespace during the namespace deletion associated with the table unload 10831(with assistance from Linn Crosetto.) 10832 10833Fixed problem reports (Valery Podrezov) integrated: 10834- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10835 10836Fixed problem reports (Fiodor Suietov) integrated: 10837- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10838- On Address Space handler deletion, needless deactivation call (BZ 374) 10839- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10840375) 10841- Possible memory leak, Notify sub-objects of Processor, Power, 10842ThermalZone 10843(BZ 376) 10844- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10845- Minimum Length of RSDT should be validated (BZ 379) 10846- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10847Handler (BZ (380) 10848- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10849loaded 10850(BZ 381) 10851 10852Example Code and Data Size: These are the sizes for the OS-independent 10853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10854debug version of the code includes the debug output trace mechanism and 10855has 10856a much larger code and data size. 10857 10858 Previous Release: 10859 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10860 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10861 Current Release: 10862 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10863 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10864 10865 108662) iASL Compiler/Disassembler and Tools: 10867 10868Fixed problem reports: 10869Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10870436) 10871 10872---------------------------------------- 1087323 June 2006. Summary of changes for version 20060623: 10874 108751) ACPI CA Core Subsystem: 10876 10877Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10878allows the type to be customized to the host OS for improved efficiency 10879(since a spinlock is usually a very small object.) 10880 10881Implemented support for "ignored" bits in the ACPI registers. According 10882to 10883the ACPI specification, these bits should be preserved when writing the 10884registers via a read/modify/write cycle. There are 3 bits preserved in 10885this 10886manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10887 10888Implemented the initial deployment of new OSL mutex interfaces. Since 10889some 10890host operating systems have separate mutex and semaphore objects, this 10891feature was requested. The base code now uses mutexes (and the new mutex 10892interfaces) wherever a binary semaphore was used previously. However, for 10893the current release, the mutex interfaces are defined as macros to map 10894them 10895to the existing semaphore interfaces. Therefore, no OSL changes are 10896required 10897at this time. (See acpiosxf.h) 10898 10899Fixed several problems with the support for the control method SyncLevel 10900parameter. The SyncLevel now works according to the ACPI specification 10901and 10902in concert with the Mutex SyncLevel parameter, since the current 10903SyncLevel 10904is a property of the executing thread. Mutual exclusion for control 10905methods 10906is now implemented with a mutex instead of a semaphore. 10907 10908Fixed three instances of the use of the C shift operator in the bitfield 10909support code (exfldio.c) to avoid the use of a shift value larger than 10910the 10911target data width. The behavior of C compilers is undefined in this case 10912and 10913can cause unpredictable results, and therefore the case must be detected 10914and 10915avoided. (Fiodor Suietov) 10916 10917Added an info message whenever an SSDT or OEM table is loaded dynamically 10918via the Load() or LoadTable() ASL operators. This should improve 10919debugging 10920capability since it will show exactly what tables have been loaded 10921(beyond 10922the tables present in the RSDT/XSDT.) 10923 10924Example Code and Data Size: These are the sizes for the OS-independent 10925acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10926debug version of the code includes the debug output trace mechanism and 10927has 10928a much larger code and data size. 10929 10930 Previous Release: 10931 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10932 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10933 Current Release: 10934 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10935 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10936 10937 109382) iASL Compiler/Disassembler and Tools: 10939 10940No changes for this release. 10941 10942---------------------------------------- 1094308 June 2006. Summary of changes for version 20060608: 10944 109451) ACPI CA Core Subsystem: 10946 10947Converted the locking mutex used for the ACPI hardware to a spinlock. 10948This 10949change should eliminate all problems caused by attempting to acquire a 10950semaphore at interrupt level, and it means that all ACPICA external 10951interfaces that directly access the ACPI hardware can be safely called 10952from 10953interrupt level. OSL code that implements the semaphore interfaces should 10954be 10955able to eliminate any workarounds for being called at interrupt level. 10956 10957Fixed a regression introduced in 20060526 where the ACPI device 10958initialization could be prematurely aborted with an AE_NOT_FOUND if a 10959device 10960did not have an optional _INI method. 10961 10962Fixed an IndexField issue where a write to the Data Register should be 10963limited in size to the AccessSize (width) of the IndexField itself. (BZ 10964433, 10965Fiodor Suietov) 10966 10967Fixed problem reports (Valery Podrezov) integrated: 10968- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10969 10970Fixed problem reports (Fiodor Suietov) integrated: 10971- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10972 10973Removed four global mutexes that were obsolete and were no longer being 10974used. 10975 10976Example Code and Data Size: These are the sizes for the OS-independent 10977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10978debug version of the code includes the debug output trace mechanism and 10979has 10980a much larger code and data size. 10981 10982 Previous Release: 10983 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10984 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10985 Current Release: 10986 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10987 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10988 10989 109902) iASL Compiler/Disassembler and Tools: 10991 10992Fixed a fault when using -g option (get tables from registry) on Windows 10993machines. 10994 10995Fixed problem reports integrated: 10996- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10997- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10998Suietov) 10999- Global table revision override (-r) is ignored (BZ 413) 11000 11001---------------------------------------- 1100226 May 2006. Summary of changes for version 20060526: 11003 110041) ACPI CA Core Subsystem: 11005 11006Restructured, flattened, and simplified the internal interfaces for 11007namespace object evaluation - resulting in smaller code, less CPU stack 11008use, 11009and fewer interfaces. (With assistance from Mikhail Kouzmich) 11010 11011Fixed a problem with the CopyObject operator where the first parameter 11012was 11013not typed correctly for the parser, interpreter, compiler, and 11014disassembler. 11015Caused various errors and unexpected behavior. 11016 11017Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 11018produced incorrect results with some C compilers. Since the behavior of C 11019compilers when the shift value is larger than the datatype width is 11020apparently not well defined, the interpreter now detects this condition 11021and 11022simply returns zero as expected in all such cases. (BZ 395) 11023 11024Fixed problem reports (Valery Podrezov) integrated: 11025- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 11026- Allow interpreter to handle nested method declarations (BZ 5361) 11027 11028Fixed problem reports (Fiodor Suietov) integrated: 11029- AcpiTerminate doesn't free debug memory allocation list objects (BZ 11030355) 11031- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 11032356) 11033- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 11034- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 11035- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 11036- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 11037- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 11038- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 11039- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 11040365) 11041- Status of the Global Initialization Handler call not used (BZ 366) 11042- Incorrect object parameter to Global Initialization Handler (BZ 367) 11043 11044Example Code and Data Size: These are the sizes for the OS-independent 11045acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11046debug version of the code includes the debug output trace mechanism and 11047has 11048a much larger code and data size. 11049 11050 Previous Release: 11051 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11052 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11053 Current Release: 11054 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 11055 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 11056 11057 110582) iASL Compiler/Disassembler and Tools: 11059 11060Modified the parser to allow the names IO, DMA, and IRQ to be used as 11061namespace identifiers with no collision with existing resource descriptor 11062macro names. This provides compatibility with other ASL compilers and is 11063most useful for disassembly/recompilation of existing tables without 11064parse 11065errors. (With assistance from Thomas Renninger) 11066 11067Disassembler: fixed an incorrect disassembly problem with the 11068DataTableRegion and CopyObject operators. Fixed a possible fault during 11069disassembly of some Alias operators. 11070 11071---------------------------------------- 1107212 May 2006. Summary of changes for version 20060512: 11073 110741) ACPI CA Core Subsystem: 11075 11076Replaced the AcpiOsQueueForExecution interface with a new interface named 11077AcpiOsExecute. The major difference is that the new interface does not 11078have 11079a Priority parameter, this appeared to be useless and has been replaced 11080by 11081a 11082Type parameter. The Type tells the host what type of execution is being 11083requested, such as global lock handler, notify handler, GPE handler, etc. 11084This allows the host to queue and execute the request as appropriate for 11085the 11086request type, possibly using different work queues and different 11087priorities 11088for the various request types. This enables fixes for multithreading 11089deadlock problems such as BZ #5534, and will require changes to all 11090existing 11091OS interface layers. (Alexey Starikovskiy and Bob Moore) 11092 11093Fixed a possible memory leak associated with the support for the so- 11094called 11095"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 11096Suietov) 11097 11098Fixed a problem with the Load() operator where a table load from an 11099operation region could overwrite an internal table buffer by up to 7 11100bytes 11101and cause alignment faults on IPF systems. (With assistance from Luming 11102Yu) 11103 11104Example Code and Data Size: These are the sizes for the OS-independent 11105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11106debug version of the code includes the debug output trace mechanism and 11107has 11108a much larger code and data size. 11109 11110 Previous Release: 11111 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11112 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11113 Current Release: 11114 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 11115 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 11116 11117 11118 111192) iASL Compiler/Disassembler and Tools: 11120 11121Disassembler: Implemented support to cross reference the internal 11122namespace 11123and automatically generate ASL External() statements for symbols not 11124defined 11125within the current table being disassembled. This will simplify the 11126disassembly and recompilation of interdependent tables such as SSDTs 11127since 11128these statements will no longer have to be added manually. 11129 11130Disassembler: Implemented experimental support to automatically detect 11131invocations of external control methods and generate appropriate 11132External() 11133statements. This is problematic because the AML cannot be correctly 11134parsed 11135until the number of arguments for each control method is known. 11136Currently, 11137standalone method invocations and invocations as the source operand of a 11138Store() statement are supported. 11139 11140Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11141LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11142LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11143more readable and likely closer to the original ASL source. 11144 11145---------------------------------------- 1114621 April 2006. Summary of changes for version 20060421: 11147 111481) ACPI CA Core Subsystem: 11149 11150Removed a device initialization optimization introduced in 20051216 where 11151the _STA method was not run unless an _INI was also present for the same 11152device. This optimization could cause problems because it could allow 11153_INI 11154methods to be run within a not-present device subtree. (If a not-present 11155device had no _INI, _STA would not be run, the not-present status would 11156not 11157be discovered, and the children of the device would be incorrectly 11158traversed.) 11159 11160Implemented a new _STA optimization where namespace subtrees that do not 11161contain _INI are identified and ignored during device initialization. 11162Selectively running _STA can significantly improve boot time on large 11163machines (with assistance from Len Brown.) 11164 11165Implemented support for the device initialization case where the returned 11166_STA flags indicate a device not-present but functioning. In this case, 11167_INI 11168is not run, but the device children are examined for presence, as per the 11169ACPI specification. 11170 11171Implemented an additional change to the IndexField support in order to 11172conform to MS behavior. The value written to the Index Register is not 11173simply a byte offset, it is a byte offset in units of the access width of 11174the parent Index Field. (Fiodor Suietov) 11175 11176Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11177interface is called during the creation of all AML operation regions, and 11178allows the host OS to exert control over what addresses it will allow the 11179AML code to access. Operation Regions whose addresses are disallowed will 11180cause a runtime exception when they are actually accessed (will not 11181affect 11182or abort table loading.) See oswinxf or osunixxf for an example 11183implementation. 11184 11185Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11186interface allows the host OS to match the various "optional" 11187interface/behavior strings for the _OSI predefined control method as 11188appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11189for an example implementation. 11190 11191Restructured and corrected various problems in the exception handling 11192code 11193paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11194(with assistance from Takayoshi Kochi.) 11195 11196Modified the Linux source converter to ignore quoted string literals 11197while 11198converting identifiers from mixed to lower case. This will correct 11199problems 11200with the disassembler and other areas where such strings must not be 11201modified. 11202 11203The ACPI_FUNCTION_* macros no longer require quotes around the function 11204name. This allows the Linux source converter to convert the names, now 11205that 11206the converter ignores quoted strings. 11207 11208Example Code and Data Size: These are the sizes for the OS-independent 11209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11210debug version of the code includes the debug output trace mechanism and 11211has 11212a much larger code and data size. 11213 11214 Previous Release: 11215 11216 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11217 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11218 Current Release: 11219 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11220 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11221 11222 112232) iASL Compiler/Disassembler and Tools: 11224 11225Implemented 3 new warnings for iASL, and implemented multiple warning 11226levels 11227(w2 flag). 11228 112291) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11230not 11231WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11232check for the possible timeout, a warning is issued. 11233 112342) Useless operators: If an ASL operator does not specify an optional 11235target 11236operand and it also does not use the function return value from the 11237operator, a warning is issued since the operator effectively does 11238nothing. 11239 112403) Unreferenced objects: If a namespace object is created, but never 11241referenced, a warning is issued. This is a warning level 2 since there 11242are 11243cases where this is ok, such as when a secondary table is loaded that 11244uses 11245the unreferenced objects. Even so, care is taken to only flag objects 11246that 11247don't look like they will ever be used. For example, the reserved methods 11248(starting with an underscore) are usually not referenced because it is 11249expected that the OS will invoke them. 11250 11251---------------------------------------- 1125231 March 2006. Summary of changes for version 20060331: 11253 112541) ACPI CA Core Subsystem: 11255 11256Implemented header file support for the following additional ACPI tables: 11257ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11258support, 11259all current and known ACPI tables are now defined in the ACPICA headers 11260and 11261are available for use by device drivers and other software. 11262 11263Implemented support to allow tables that contain ACPI names with invalid 11264characters to be loaded. Previously, this would cause the table load to 11265fail, but since there are several known cases of such tables on existing 11266machines, this change was made to enable ACPI support for them. Also, 11267this 11268matches the behavior of the Microsoft ACPI implementation. 11269 11270Fixed a couple regressions introduced during the memory optimization in 11271the 1127220060317 release. The namespace node definition required additional 11273reorganization and an internal datatype that had been changed to 8-bit 11274was 11275restored to 32-bit. (Valery Podrezov) 11276 11277Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11278could be passed through to AcpiOsReleaseObject which is unexpected. Such 11279null pointers are now trapped and ignored, matching the behavior of the 11280previous implementation before the deployment of AcpiOsReleaseObject. 11281(Valery Podrezov, Fiodor Suietov) 11282 11283Fixed a memory mapping leak during the deletion of a SystemMemory 11284operation 11285region where a cached memory mapping was not deleted. This became a 11286noticeable problem for operation regions that are defined within 11287frequently 11288used control methods. (Dana Meyers) 11289 11290Reorganized the ACPI table header files into two main files: one for the 11291ACPI tables consumed by the ACPICA core, and another for the 11292miscellaneous 11293ACPI tables that are consumed by the drivers and other software. The 11294various 11295FADT definitions were merged into one common section and three different 11296tables (ACPI 1.0, 1.0+, and 2.0) 11297 11298Example Code and Data Size: These are the sizes for the OS-independent 11299acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11300debug version of the code includes the debug output trace mechanism and 11301has 11302a much larger code and data size. 11303 11304 Previous Release: 11305 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11306 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11307 Current Release: 11308 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11309 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11310 11311 113122) iASL Compiler/Disassembler and Tools: 11313 11314Disassembler: Implemented support to decode and format all non-AML ACPI 11315tables (tables other than DSDTs and SSDTs.) This includes the new tables 11316added to the ACPICA headers, therefore all current and known ACPI tables 11317are 11318supported. 11319 11320Disassembler: The change to allow ACPI names with invalid characters also 11321enables the disassembly of such tables. Invalid characters within names 11322are 11323changed to '*' to make the name printable; the iASL compiler will still 11324generate an error for such names, however, since this is an invalid ACPI 11325character. 11326 11327Implemented an option for AcpiXtract (-a) to extract all tables found in 11328the 11329input file. The default invocation extracts only the DSDTs and SSDTs. 11330 11331Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11332makefile for the AcpiXtract utility. 11333 11334---------------------------------------- 1133517 March 2006. Summary of changes for version 20060317: 11336 113371) ACPI CA Core Subsystem: 11338 11339Implemented the use of a cache object for all internal namespace nodes. 11340Since there are about 1000 static nodes in a typical system, this will 11341decrease memory use for cache implementations that minimize per- 11342allocation 11343overhead (such as a slab allocator.) 11344 11345Removed the reference count mechanism for internal namespace nodes, since 11346it 11347was deemed unnecessary. This reduces the size of each namespace node by 11348about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11349case, 11350and 32 bytes for the 64-bit case. 11351 11352Optimized several internal data structures to reduce object size on 64- 11353bit 11354platforms by packing data within the 64-bit alignment. This includes the 11355frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11356instances corresponding to the namespace objects. 11357 11358Added two new strings for the predefined _OSI method: "Windows 2001.1 11359SP1" 11360and "Windows 2006". 11361 11362Split the allocation tracking mechanism out to a separate file, from 11363utalloc.c to uttrack.c. This mechanism appears to be only useful for 11364application-level code. Kernels may wish to not include uttrack.c in 11365distributions. 11366 11367Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11368associated 11369code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11370macros.) 11371 11372Code and Data Size: These are the sizes for the acpica.lib produced by 11373the 11374Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11375ACPI 11376driver or OSPM code. The debug version of the code includes the debug 11377output 11378trace mechanism and has a much larger code and data size. Note that these 11379values will vary depending on the efficiency of the compiler and the 11380compiler options used during generation. 11381 11382 Previous Release: 11383 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11384 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11385 Current Release: 11386 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11387 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11388 11389 113902) iASL Compiler/Disassembler and Tools: 11391 11392Implemented an ANSI C version of the acpixtract utility. This version 11393will 11394automatically extract the DSDT and all SSDTs from the input acpidump text 11395file and dump the binary output to separate files. It can also display a 11396summary of the input file including the headers for each table found and 11397will extract any single ACPI table, with any signature. (See 11398source/tools/acpixtract) 11399 11400---------------------------------------- 1140110 March 2006. Summary of changes for version 20060310: 11402 114031) ACPI CA Core Subsystem: 11404 11405Tagged all external interfaces to the subsystem with the new 11406ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11407assist 11408kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11409macro. The default definition is NULL. 11410 11411Added the ACPI_THREAD_ID type for the return value from 11412AcpiOsGetThreadId. 11413This allows the host to define this as necessary to simplify kernel 11414integration. The default definition is ACPI_NATIVE_UINT. 11415 11416Fixed two interpreter problems related to error processing, the deletion 11417of 11418objects, and placing invalid pointers onto the internal operator result 11419stack. BZ 6028, 6151 (Valery Podrezov) 11420 11421Increased the reference count threshold where a warning is emitted for 11422large 11423reference counts in order to eliminate unnecessary warnings on systems 11424with 11425large namespaces (especially 64-bit.) Increased the value from 0x400 to 114260x800. 11427 11428Due to universal disagreement as to the meaning of the 'c' in the 11429calloc() 11430function, the ACPI_MEM_CALLOCATE macro has been renamed to 11431ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11432ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11433ACPI_FREE. 11434 11435Code and Data Size: These are the sizes for the acpica.lib produced by 11436the 11437Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11438ACPI 11439driver or OSPM code. The debug version of the code includes the debug 11440output 11441trace mechanism and has a much larger code and data size. Note that these 11442values will vary depending on the efficiency of the compiler and the 11443compiler options used during generation. 11444 11445 Previous Release: 11446 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11447 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11448 Current Release: 11449 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11450 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11451 11452 114532) iASL Compiler/Disassembler: 11454 11455Disassembler: implemented support for symbolic resource descriptor 11456references. If a CreateXxxxField operator references a fixed offset 11457within 11458a 11459resource descriptor, a name is assigned to the descriptor and the offset 11460is 11461translated to the appropriate resource tag and pathname. The addition of 11462this support brings the disassembled code very close to the original ASL 11463source code and helps eliminate run-time errors when the disassembled 11464code 11465is modified (and recompiled) in such a way as to invalidate the original 11466fixed offsets. 11467 11468Implemented support for a Descriptor Name as the last parameter to the 11469ASL 11470Register() macro. This parameter was inadvertently left out of the ACPI 11471specification, and will be added for ACPI 3.0b. 11472 11473Fixed a problem where the use of the "_OSI" string (versus the full path 11474"\_OSI") caused an internal compiler error. ("No back ptr to op") 11475 11476Fixed a problem with the error message that occurs when an invalid string 11477is 11478used for a _HID object (such as one with an embedded asterisk: 11479"*PNP010A".) 11480The correct message is now displayed. 11481 11482---------------------------------------- 1148317 February 2006. Summary of changes for version 20060217: 11484 114851) ACPI CA Core Subsystem: 11486 11487Implemented a change to the IndexField support to match the behavior of 11488the 11489Microsoft AML interpreter. The value written to the Index register is now 11490a 11491byte offset, no longer an index based upon the width of the Data 11492register. 11493This should fix IndexField problems seen on some machines where the Data 11494register is not exactly one byte wide. The ACPI specification will be 11495clarified on this point. 11496 11497Fixed a problem where several resource descriptor types could overrun the 11498internal descriptor buffer due to size miscalculation: VendorShort, 11499VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11500affect all platforms. 11501 11502Fixed a problem where individual resource descriptors were misaligned 11503within 11504the internal buffer, causing alignment faults on IA64 platforms. 11505 11506Code and Data Size: These are the sizes for the acpica.lib produced by 11507the 11508Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11509ACPI 11510driver or OSPM code. The debug version of the code includes the debug 11511output 11512trace mechanism and has a much larger code and data size. Note that these 11513values will vary depending on the efficiency of the compiler and the 11514compiler options used during generation. 11515 11516 Previous Release: 11517 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11518 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11519 Current Release: 11520 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11521 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11522 11523 115242) iASL Compiler/Disassembler: 11525 11526Implemented support for new reserved names: _WDG and _WED are Microsoft 11527extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11528defined method (Throttling Depth Limit.) 11529 11530Fixed a problem where a zero-length VendorShort or VendorLong resource 11531descriptor was incorrectly emitted as a descriptor of length one. 11532 11533---------------------------------------- 1153410 February 2006. Summary of changes for version 20060210: 11535 115361) ACPI CA Core Subsystem: 11537 11538Removed a couple of extraneous ACPI_ERROR messages that appeared during 11539normal execution. These became apparent after the conversion from 11540ACPI_DEBUG_PRINT. 11541 11542Fixed a problem where the CreateField operator could hang if the BitIndex 11543or 11544NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 11545 11546Fixed a problem where a DeRefOf operation on a buffer object incorrectly 11547failed with an exception. This also fixes a couple of related RefOf and 11548DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 11549 11550Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 11551of 11552AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 11553BZ 115545480) 11555 11556Implemented a memory cleanup at the end of the execution of each 11557iteration 11558of an AML While() loop, preventing the accumulation of outstanding 11559objects. 11560(Valery Podrezov, BZ 5427) 11561 11562Eliminated a chunk of duplicate code in the object resolution code. 11563(Valery 11564Podrezov, BZ 5336) 11565 11566Fixed several warnings during the 64-bit code generation. 11567 11568The AcpiSrc source code conversion tool now inserts one line of 11569whitespace 11570after an if() statement that is followed immediately by a comment, 11571improving 11572readability of the Linux code. 11573 11574Code and Data Size: The current and previous library sizes for the core 11575subsystem are shown below. These are the code and data sizes for the 11576acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11577These 11578values do not include any ACPI driver or OSPM code. The debug version of 11579the 11580code includes the debug output trace mechanism and has a much larger code 11581and data size. Note that these values will vary depending on the 11582efficiency 11583of the compiler and the compiler options used during generation. 11584 11585 Previous Release: 11586 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11587 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11588 Current Release: 11589 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11590 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11591 11592 115932) iASL Compiler/Disassembler: 11594 11595Fixed a problem with the disassembly of a BankField operator with a 11596complex 11597expression for the BankValue parameter. 11598 11599---------------------------------------- 1160027 January 2006. Summary of changes for version 20060127: 11601 116021) ACPI CA Core Subsystem: 11603 11604Implemented support in the Resource Manager to allow unresolved 11605namestring 11606references within resource package objects for the _PRT method. This 11607support 11608is in addition to the previously implemented unresolved reference support 11609within the AML parser. If the interpreter slack mode is enabled, these 11610unresolved references will be passed through to the caller as a NULL 11611package 11612entry. 11613 11614Implemented and deployed new macros and functions for error and warning 11615messages across the subsystem. These macros are simpler and generate less 11616code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11617ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11618macros remain defined to allow ACPI drivers time to migrate to the new 11619macros. 11620 11621Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11622the 11623Acquire/Release Lock OSL interfaces. 11624 11625Fixed a problem where Alias ASL operators are sometimes not correctly 11626resolved, in both the interpreter and the iASL compiler. 11627 11628Fixed several problems with the implementation of the 11629ConcatenateResTemplate 11630ASL operator. As per the ACPI specification, zero length buffers are now 11631treated as a single EndTag. One-length buffers always cause a fatal 11632exception. Non-zero length buffers that do not end with a full 2-byte 11633EndTag 11634cause a fatal exception. 11635 11636Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11637interface. (With assistance from Thomas Renninger) 11638 11639Code and Data Size: The current and previous library sizes for the core 11640subsystem are shown below. These are the code and data sizes for the 11641acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11642These 11643values do not include any ACPI driver or OSPM code. The debug version of 11644the 11645code includes the debug output trace mechanism and has a much larger code 11646and data size. Note that these values will vary depending on the 11647efficiency 11648of the compiler and the compiler options used during generation. 11649 11650 Previous Release: 11651 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11652 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11653 Current Release: 11654 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11655 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11656 11657 116582) iASL Compiler/Disassembler: 11659 11660Fixed an internal error that was generated for any forward references to 11661ASL 11662Alias objects. 11663 11664---------------------------------------- 1166513 January 2006. Summary of changes for version 20060113: 11666 116671) ACPI CA Core Subsystem: 11668 11669Added 2006 copyright to all module headers and signons. This affects 11670virtually every file in the ACPICA core subsystem, iASL compiler, and the 11671utilities. 11672 11673Enhanced the ACPICA error reporting in order to simplify user migration 11674to 11675the non-debug version of ACPICA. Replaced all instances of the 11676ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11677debug 11678levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11679respectively. This preserves all error and warning messages in the non- 11680debug 11681version of the ACPICA code (this has been referred to as the "debug lite" 11682option.) Over 200 cases were converted to create a total of over 380 11683error/warning messages across the ACPICA code. This increases the code 11684and 11685data size of the default non-debug version of the code somewhat (about 1168613K), 11687but all error/warning reporting may be disabled if desired (and code 11688eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11689configuration option. The size of the debug version of ACPICA remains 11690about 11691the same. 11692 11693Fixed a memory leak within the AML Debugger "Set" command. One object was 11694not properly deleted for every successful invocation of the command. 11695 11696Code and Data Size: The current and previous library sizes for the core 11697subsystem are shown below. These are the code and data sizes for the 11698acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11699These 11700values do not include any ACPI driver or OSPM code. The debug version of 11701the 11702code includes the debug output trace mechanism and has a much larger code 11703and data size. Note that these values will vary depending on the 11704efficiency 11705of the compiler and the compiler options used during generation. 11706 11707 Previous Release: 11708 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11709 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11710 Current Release: 11711 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11712 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11713 11714 117152) iASL Compiler/Disassembler: 11716 11717The compiler now officially supports the ACPI 3.0a specification that was 11718released on December 30, 2005. (Specification is available at 11719www.acpi.info) 11720 11721---------------------------------------- 1172216 December 2005. Summary of changes for version 20051216: 11723 117241) ACPI CA Core Subsystem: 11725 11726Implemented optional support to allow unresolved names within ASL Package 11727objects. A null object is inserted in the package when a named reference 11728cannot be located in the current namespace. Enabled via the interpreter 11729slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11730machines 11731that contain such code. 11732 11733Implemented an optimization to the initialization sequence that can 11734improve 11735boot time. During ACPI device initialization, the _STA method is now run 11736if 11737and only if the _INI method exists. The _STA method is used to determine 11738if 11739the device is present; An _INI can only be run if _STA returns present, 11740but 11741it is a waste of time to run the _STA method if the _INI does not exist. 11742(Prototype and assistance from Dong Wei) 11743 11744Implemented use of the C99 uintptr_t for the pointer casting macros if it 11745is 11746available in the current compiler. Otherwise, the default (void *) cast 11747is 11748used as before. 11749 11750Fixed some possible memory leaks found within the execution path of the 11751Break, Continue, If, and CreateField operators. (Valery Podrezov) 11752 11753Fixed a problem introduced in the 20051202 release where an exception is 11754generated during method execution if a control method attempts to declare 11755another method. 11756 11757Moved resource descriptor string constants that are used by both the AML 11758disassembler and AML debugger to the common utilities directory so that 11759these components are independent. 11760 11761Implemented support in the AcpiExec utility (-e switch) to globally 11762ignore 11763exceptions during control method execution (method is not aborted.) 11764 11765Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11766generation. 11767 11768Code and Data Size: The current and previous library sizes for the core 11769subsystem are shown below. These are the code and data sizes for the 11770acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11771These 11772values do not include any ACPI driver or OSPM code. The debug version of 11773the 11774code includes the debug output trace mechanism and has a much larger code 11775and data size. Note that these values will vary depending on the 11776efficiency 11777of the compiler and the compiler options used during generation. 11778 11779 Previous Release: 11780 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11781 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11782 Current Release: 11783 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11784 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11785 11786 117872) iASL Compiler/Disassembler: 11788 11789Fixed a problem where a CPU stack overflow fault could occur if a 11790recursive 11791method call was made from within a Return statement. 11792 11793---------------------------------------- 1179402 December 2005. Summary of changes for version 20051202: 11795 117961) ACPI CA Core Subsystem: 11797 11798Modified the parsing of control methods to no longer create namespace 11799objects during the first pass of the parse. Objects are now created only 11800during the execute phase, at the moment the namespace creation operator 11801is 11802encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11803This 11804should eliminate ALREADY_EXISTS exceptions seen on some machines where 11805reentrant control methods are protected by an AML mutex. The mutex will 11806now 11807correctly block multiple threads from attempting to create the same 11808object 11809more than once. 11810 11811Increased the number of available Owner Ids for namespace object tracking 11812from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11813on 11814some machines with a large number of ACPI tables (either static or 11815dynamic). 11816 11817Fixed a problem with the AcpiExec utility where a fault could occur when 11818the 11819-b switch (batch mode) is used. 11820 11821Enhanced the namespace dump routine to output the owner ID for each 11822namespace object. 11823 11824Code and Data Size: The current and previous library sizes for the core 11825subsystem are shown below. These are the code and data sizes for the 11826acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11827These 11828values do not include any ACPI driver or OSPM code. The debug version of 11829the 11830code includes the debug output trace mechanism and has a much larger code 11831and data size. Note that these values will vary depending on the 11832efficiency 11833of the compiler and the compiler options used during generation. 11834 11835 Previous Release: 11836 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11837 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11838 Current Release: 11839 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11840 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11841 11842 118432) iASL Compiler/Disassembler: 11844 11845Fixed a parse error during compilation of certain Switch/Case constructs. 11846To 11847simplify the parse, the grammar now allows for multiple Default 11848statements 11849and this error is now detected and flagged during the analysis phase. 11850 11851Disassembler: The disassembly now includes the contents of the original 11852table header within a comment at the start of the file. This includes the 11853name and version of the original ASL compiler. 11854 11855---------------------------------------- 1185617 November 2005. Summary of changes for version 20051117: 11857 118581) ACPI CA Core Subsystem: 11859 11860Fixed a problem in the AML parser where the method thread count could be 11861decremented below zero if any errors occurred during the method parse 11862phase. 11863This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11864machines. 11865This also fixed a related regression with the mechanism that detects and 11866corrects methods that cannot properly handle reentrancy (related to the 11867deployment of the new OwnerId mechanism.) 11868 11869Eliminated the pre-parsing of control methods (to detect errors) during 11870table load. Related to the problem above, this was causing unwind issues 11871if 11872any errors occurred during the parse, and it seemed to be overkill. A 11873table 11874load should not be aborted if there are problems with any single control 11875method, thus rendering this feature rather pointless. 11876 11877Fixed a problem with the new table-driven resource manager where an 11878internal 11879buffer overflow could occur for small resource templates. 11880 11881Implemented a new external interface, AcpiGetVendorResource. This 11882interface 11883will find and return a vendor-defined resource descriptor within a _CRS 11884or 11885_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11886Helgaas. 11887 11888Removed the length limit (200) on string objects as per the upcoming ACPI 118893.0A specification. This affects the following areas of the interpreter: 118901) 11891any implicit conversion of a Buffer to a String, 2) a String object 11892result 11893of the ASL Concatenate operator, 3) the String object result of the ASL 11894ToString operator. 11895 11896Fixed a problem in the Windows OS interface layer (OSL) where a 11897WAIT_FOREVER 11898on a semaphore object would incorrectly timeout. This allows the 11899multithreading features of the AcpiExec utility to work properly under 11900Windows. 11901 11902Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11903the recently added file named "utresrc.c". 11904 11905Code and Data Size: The current and previous library sizes for the core 11906subsystem are shown below. These are the code and data sizes for the 11907acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11908These 11909values do not include any ACPI driver or OSPM code. The debug version of 11910the 11911code includes the debug output trace mechanism and has a much larger code 11912and data size. Note that these values will vary depending on the 11913efficiency 11914of the compiler and the compiler options used during generation. 11915 11916 Previous Release: 11917 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11918 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11919 Current Release: 11920 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11921 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11922 11923 119242) iASL Compiler/Disassembler: 11925 11926Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11927specification. For the iASL compiler, this means that string literals 11928within 11929the source ASL can be of any length. 11930 11931Enhanced the listing output to dump the AML code for resource descriptors 11932immediately after the ASL code for each descriptor, instead of in a block 11933at 11934the end of the entire resource template. 11935 11936Enhanced the compiler debug output to dump the entire original parse tree 11937constructed during the parse phase, before any transforms are applied to 11938the 11939tree. The transformed tree is dumped also. 11940 11941---------------------------------------- 1194202 November 2005. Summary of changes for version 20051102: 11943 119441) ACPI CA Core Subsystem: 11945 11946Modified the subsystem initialization sequence to improve GPE support. 11947The 11948GPE initialization has been split into two parts in order to defer 11949execution 11950of the _PRW methods (Power Resources for Wake) until after the hardware 11951is 11952fully initialized and the SCI handler is installed. This allows the _PRW 11953methods to access fields protected by the Global Lock. This will fix 11954systems 11955where a NO_GLOBAL_LOCK exception has been seen during initialization. 11956 11957Converted the ACPI internal object disassemble and display code within 11958the 11959AML debugger to fully table-driven operation, reducing code size and 11960increasing maintainability. 11961 11962Fixed a regression with the ConcatenateResTemplate() ASL operator 11963introduced 11964in the 20051021 release. 11965 11966Implemented support for "local" internal ACPI object types within the 11967debugger "Object" command and the AcpiWalkNamespace external interfaces. 11968These local types include RegionFields, BankFields, IndexFields, Alias, 11969and 11970reference objects. 11971 11972Moved common AML resource handling code into a new file, "utresrc.c". 11973This 11974code is shared by both the Resource Manager and the AML Debugger. 11975 11976Code and Data Size: The current and previous library sizes for the core 11977subsystem are shown below. These are the code and data sizes for the 11978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11979These 11980values do not include any ACPI driver or OSPM code. The debug version of 11981the 11982code includes the debug output trace mechanism and has a much larger code 11983and data size. Note that these values will vary depending on the 11984efficiency 11985of the compiler and the compiler options used during generation. 11986 11987 Previous Release: 11988 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11989 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11990 Current Release: 11991 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11992 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11993 11994 119952) iASL Compiler/Disassembler: 11996 11997Fixed a problem with very large initializer lists (more than 4000 11998elements) 11999for both Buffer and Package objects where the parse stack could overflow. 12000 12001Enhanced the pre-compile source code scan for non-ASCII characters to 12002ignore 12003characters within comment fields. The scan is now always performed and is 12004no 12005longer optional, detecting invalid characters within a source file 12006immediately rather than during the parse phase or later. 12007 12008Enhanced the ASL grammar definition to force early reductions on all 12009list- 12010style grammar elements so that the overall parse stack usage is greatly 12011reduced. This should improve performance and reduce the possibility of 12012parse 12013stack overflow. 12014 12015Eliminated all reduce/reduce conflicts in the iASL parser generation. 12016Also, 12017with the addition of a %expected statement, the compiler generates from 12018source with no warnings. 12019 12020Fixed a possible segment fault in the disassembler if the input filename 12021does not contain a "dot" extension (Thomas Renninger). 12022 12023---------------------------------------- 1202421 October 2005. Summary of changes for version 20051021: 12025 120261) ACPI CA Core Subsystem: 12027 12028Implemented support for the EM64T and other x86-64 processors. This 12029essentially entails recognizing that these processors support non-aligned 12030memory transfers. Previously, all 64-bit processors were assumed to lack 12031hardware support for non-aligned transfers. 12032 12033Completed conversion of the Resource Manager to nearly full table-driven 12034operation. Specifically, the resource conversion code (convert AML to 12035internal format and the reverse) and the debug code to dump internal 12036resource descriptors are fully table-driven, reducing code and data size 12037and 12038improving maintainability. 12039 12040The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 12041word 12042on 64-bit processors instead of a fixed 32-bit word. (With assistance 12043from 12044Alexey Starikovskiy) 12045 12046Implemented support within the resource conversion code for the Type- 12047Specific byte within the various ACPI 3.0 *WordSpace macros. 12048 12049Fixed some issues within the resource conversion code for the type- 12050specific 12051flags for both Memory and I/O address resource descriptors. For Memory, 12052implemented support for the MTP and TTP flags. For I/O, split the TRS and 12053TTP flags into two separate fields. 12054 12055Code and Data Size: The current and previous library sizes for the core 12056subsystem are shown below. These are the code and data sizes for the 12057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12058These 12059values do not include any ACPI driver or OSPM code. The debug version of 12060the 12061code includes the debug output trace mechanism and has a much larger code 12062and data size. Note that these values will vary depending on the 12063efficiency 12064of the compiler and the compiler options used during generation. 12065 12066 Previous Release: 12067 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12068 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12069 Current Release: 12070 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 12071 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 12072 12073 12074 120752) iASL Compiler/Disassembler: 12076 12077Relaxed a compiler restriction that disallowed a ResourceIndex byte if 12078the 12079corresponding ResourceSource string was not also present in a resource 12080descriptor declaration. This restriction caused problems with existing 12081AML/ASL code that includes the Index byte without the string. When such 12082AML 12083was disassembled, it could not be compiled without modification. Further, 12084the modified code created a resource template with a different size than 12085the 12086original, breaking code that used fixed offsets into the resource 12087template 12088buffer. 12089 12090Removed a recent feature of the disassembler to ignore a lone 12091ResourceIndex 12092byte. This byte is now emitted if present so that the exact AML can be 12093reproduced when the disassembled code is recompiled. 12094 12095Improved comments and text alignment for the resource descriptor code 12096emitted by the disassembler. 12097 12098Implemented disassembler support for the ACPI 3.0 AccessSize field within 12099a 12100Register() resource descriptor. 12101 12102---------------------------------------- 1210330 September 2005. Summary of changes for version 20050930: 12104 121051) ACPI CA Core Subsystem: 12106 12107Completed a major overhaul of the Resource Manager code - specifically, 12108optimizations in the area of the AML/internal resource conversion code. 12109The 12110code has been optimized to simplify and eliminate duplicated code, CPU 12111stack 12112use has been decreased by optimizing function parameters and local 12113variables, and naming conventions across the manager have been 12114standardized 12115for clarity and ease of maintenance (this includes function, parameter, 12116variable, and struct/typedef names.) The update may force changes in some 12117driver code, depending on how resources are handled by the host OS. 12118 12119All Resource Manager dispatch and information tables have been moved to a 12120single location for clarity and ease of maintenance. One new file was 12121created, named "rsinfo.c". 12122 12123The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 12124guarantee that the argument is not evaluated twice, making them less 12125prone 12126to macro side-effects. However, since there exists the possibility of 12127additional stack use if a particular compiler cannot optimize them (such 12128as 12129in the debug generation case), the original macros are optionally 12130available. 12131Note that some invocations of the return_VALUE macro may now cause size 12132mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 12133to 12134eliminate these. (From Randy Dunlap) 12135 12136Implemented a new mechanism to enable debug tracing for individual 12137control 12138methods. A new external interface, AcpiDebugTrace, is provided to enable 12139this mechanism. The intent is to allow the host OS to easily enable and 12140disable tracing for problematic control methods. This interface can be 12141easily exposed to a user or debugger interface if desired. See the file 12142psxface.c for details. 12143 12144AcpiUtCallocate will now return a valid pointer if a length of zero is 12145specified - a length of one is used and a warning is issued. This matches 12146the behavior of AcpiUtAllocate. 12147 12148Code and Data Size: The current and previous library sizes for the core 12149subsystem are shown below. These are the code and data sizes for the 12150acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12151These 12152values do not include any ACPI driver or OSPM code. The debug version of 12153the 12154code includes the debug output trace mechanism and has a much larger code 12155and data size. Note that these values will vary depending on the 12156efficiency 12157of the compiler and the compiler options used during generation. 12158 12159 Previous Release: 12160 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12161 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12162 Current Release: 12163 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12164 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12165 12166 121672) iASL Compiler/Disassembler: 12168 12169A remark is issued if the effective compile-time length of a package or 12170buffer is zero. Previously, this was a warning. 12171 12172---------------------------------------- 1217316 September 2005. Summary of changes for version 20050916: 12174 121751) ACPI CA Core Subsystem: 12176 12177Fixed a problem within the Resource Manager where support for the Generic 12178Register descriptor was not fully implemented. This descriptor is now 12179fully 12180recognized, parsed, disassembled, and displayed. 12181 12182Completely restructured the Resource Manager code to utilize table-driven 12183dispatch and lookup, eliminating many of the large switch() statements. 12184This 12185reduces overall subsystem code size and code complexity. Affects the 12186resource parsing and construction, disassembly, and debug dump output. 12187 12188Cleaned up and restructured the debug dump output for all resource 12189descriptors. Improved readability of the output and reduced code size. 12190 12191Fixed a problem where changes to internal data structures caused the 12192optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12193 12194Code and Data Size: The current and previous library sizes for the core 12195subsystem are shown below. These are the code and data sizes for the 12196acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12197These 12198values do not include any ACPI driver or OSPM code. The debug version of 12199the 12200code includes the debug output trace mechanism and has a much larger code 12201and data size. Note that these values will vary depending on the 12202efficiency 12203of the compiler and the compiler options used during generation. 12204 12205 Previous Release: 12206 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12207 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12208 Current Release: 12209 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12210 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12211 12212 122132) iASL Compiler/Disassembler: 12214 12215Updated the disassembler to automatically insert an EndDependentFn() 12216macro 12217into the ASL stream if this macro is missing in the original AML code, 12218simplifying compilation of the resulting ASL module. 12219 12220Fixed a problem in the disassembler where a disassembled ResourceSource 12221string (within a large resource descriptor) was not surrounded by quotes 12222and 12223not followed by a comma, causing errors when the resulting ASL module was 12224compiled. Also, escape sequences within a ResourceSource string are now 12225handled correctly (especially "\\") 12226 12227---------------------------------------- 1222802 September 2005. Summary of changes for version 20050902: 12229 122301) ACPI CA Core Subsystem: 12231 12232Fixed a problem with the internal Owner ID allocation and deallocation 12233mechanisms for control method execution and recursive method invocation. 12234This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12235messages seen on some systems. Recursive method invocation depth is 12236currently limited to 255. (Alexey Starikovskiy) 12237 12238Completely eliminated all vestiges of support for the "module-level 12239executable code" until this support is fully implemented and debugged. 12240This 12241should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12242some systems that invoke this support. 12243 12244Fixed a problem within the resource manager code where the transaction 12245flags 12246for a 64-bit address descriptor were handled incorrectly in the type- 12247specific flag byte. 12248 12249Consolidated duplicate code within the address descriptor resource 12250manager 12251code, reducing overall subsystem code size. 12252 12253Fixed a fault when using the AML debugger "disassemble" command to 12254disassemble individual control methods. 12255 12256Removed references to the "release_current" directory within the Unix 12257release package. 12258 12259Code and Data Size: The current and previous core subsystem library sizes 12260are shown below. These are the code and data sizes for the acpica.lib 12261produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12262include any ACPI driver or OSPM code. The debug version of the code 12263includes 12264the debug output trace mechanism and has a much larger code and data 12265size. 12266Note that these values will vary depending on the efficiency of the 12267compiler 12268and the compiler options used during generation. 12269 12270 Previous Release: 12271 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12272 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12273 Current Release: 12274 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12275 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12276 12277 122782) iASL Compiler/Disassembler: 12279 12280Implemented an error check for illegal duplicate values in the interrupt 12281and 12282dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12283Interrupt(). 12284 12285Implemented error checking for the Irq() and IrqNoFlags() macros to 12286detect 12287too many values in the interrupt list (16 max) and invalid values in the 12288list (range 0 - 15) 12289 12290The maximum length string literal within an ASL file is now restricted to 12291200 characters as per the ACPI specification. 12292 12293Fixed a fault when using the -ln option (generate namespace listing). 12294 12295Implemented an error check to determine if a DescriptorName within a 12296resource descriptor has already been used within the current scope. 12297 12298---------------------------------------- 1229915 August 2005. Summary of changes for version 20050815: 12300 123011) ACPI CA Core Subsystem: 12302 12303Implemented a full bytewise compare to determine if a table load request 12304is 12305attempting to load a duplicate table. The compare is performed if the 12306table 12307signatures and table lengths match. This will allow different tables with 12308the same OEM Table ID and revision to be loaded - probably against the 12309ACPI 12310specification, but discovered in the field nonetheless. 12311 12312Added the changes.txt logfile to each of the zipped release packages. 12313 12314Code and Data Size: Current and previous core subsystem library sizes are 12315shown below. These are the code and data sizes for the acpica.lib 12316produced 12317by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12318any ACPI driver or OSPM code. The debug version of the code includes the 12319debug output trace mechanism and has a much larger code and data size. 12320Note 12321that these values will vary depending on the efficiency of the compiler 12322and 12323the compiler options used during generation. 12324 12325 Previous Release: 12326 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12327 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12328 Current Release: 12329 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12330 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12331 12332 123332) iASL Compiler/Disassembler: 12334 12335Fixed a problem where incorrect AML code could be generated for Package 12336objects if optimization is disabled (via the -oa switch). 12337 12338Fixed a problem with where incorrect AML code is generated for variable- 12339length packages when the package length is not specified and the number 12340of 12341initializer values is greater than 255. 12342 12343 12344---------------------------------------- 1234529 July 2005. Summary of changes for version 20050729: 12346 123471) ACPI CA Core Subsystem: 12348 12349Implemented support to ignore an attempt to install/load a particular 12350ACPI 12351table more than once. Apparently there exists BIOS code that repeatedly 12352attempts to load the same SSDT upon certain events. With assistance from 12353Venkatesh Pallipadi. 12354 12355Restructured the main interface to the AML parser in order to correctly 12356handle all exceptional conditions. This will prevent leakage of the 12357OwnerId 12358resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12359some 12360machines. With assistance from Alexey Starikovskiy. 12361 12362Support for "module level code" has been disabled in this version due to 12363a 12364number of issues that have appeared on various machines. The support can 12365be 12366enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12367compilation. When the issues are fully resolved, the code will be enabled 12368by 12369default again. 12370 12371Modified the internal functions for debug print support to define the 12372FunctionName parameter as a (const char *) for compatibility with 12373compiler 12374built-in macros such as __FUNCTION__, etc. 12375 12376Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12377 12378Implemented support to display an object count summary for the AML 12379Debugger 12380commands Object and Methods. 12381 12382Code and Data Size: Current and previous core subsystem library sizes are 12383shown below. These are the code and data sizes for the acpica.lib 12384produced 12385by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12386any ACPI driver or OSPM code. The debug version of the code includes the 12387debug output trace mechanism and has a much larger code and data size. 12388Note 12389that these values will vary depending on the efficiency of the compiler 12390and 12391the compiler options used during generation. 12392 12393 Previous Release: 12394 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12395 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12396 Current Release: 12397 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12398 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12399 12400 124012) iASL Compiler/Disassembler: 12402 12403Fixed a regression that appeared in the 20050708 version of the compiler 12404where an error message was inadvertently emitted for invocations of the 12405_OSI 12406reserved control method. 12407 12408---------------------------------------- 1240908 July 2005. Summary of changes for version 20050708: 12410 124111) ACPI CA Core Subsystem: 12412 12413The use of the CPU stack in the debug version of the subsystem has been 12414considerably reduced. Previously, a debug structure was declared in every 12415function that used the debug macros. This structure has been removed in 12416favor of declaring the individual elements as parameters to the debug 12417functions. This reduces the cumulative stack use during nested execution 12418of 12419ACPI function calls at the cost of a small increase in the code size of 12420the 12421debug version of the subsystem. With assistance from Alexey Starikovskiy 12422and 12423Len Brown. 12424 12425Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12426headers to define a macro that will return the current function name at 12427runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12428by 12429the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12430compiler-dependent header, the function name is saved on the CPU stack 12431(one 12432pointer per function.) This mechanism is used because apparently there 12433exists no standard ANSI-C defined macro that that returns the function 12434name. 12435 12436Redesigned and reimplemented the "Owner ID" mechanism used to track 12437namespace objects created/deleted by ACPI tables and control method 12438execution. A bitmap is now used to allocate and free the IDs, thus 12439solving 12440the wraparound problem present in the previous implementation. The size 12441of 12442the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12443Starikovskiy). 12444 12445Removed the UINT32_BIT and UINT16_BIT types that were used for the 12446bitfield 12447flag definitions within the headers for the predefined ACPI tables. These 12448have been replaced by UINT8_BIT in order to increase the code portability 12449of 12450the subsystem. If the use of UINT8 remains a problem, we may be forced to 12451eliminate bitfields entirely because of a lack of portability. 12452 12453Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12454This 12455is a frequently used function and this improvement increases the 12456performance 12457of the entire subsystem (Alexey Starikovskiy). 12458 12459Fixed several possible memory leaks and the inverse - premature object 12460deletion (Alexey Starikovskiy). 12461 12462Code and Data Size: Current and previous core subsystem library sizes are 12463shown below. These are the code and data sizes for the acpica.lib 12464produced 12465by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12466any ACPI driver or OSPM code. The debug version of the code includes the 12467debug output trace mechanism and has a much larger code and data size. 12468Note 12469that these values will vary depending on the efficiency of the compiler 12470and 12471the compiler options used during generation. 12472 12473 Previous Release: 12474 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12475 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12476 Current Release: 12477 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12478 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12479 12480---------------------------------------- 1248124 June 2005. Summary of changes for version 20050624: 12482 124831) ACPI CA Core Subsystem: 12484 12485Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12486the host-defined cache object. This allows the OSL implementation to 12487define 12488and type this object in any manner desired, simplifying the OSL 12489implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12490Linux, and should be defined in the OS-specific header file for other 12491operating systems as required. 12492 12493Changed the interface to AcpiOsAcquireObject to directly return the 12494requested object as the function return (instead of ACPI_STATUS.) This 12495change was made for performance reasons, since this is the purpose of the 12496interface in the first place. AcpiOsAcquireObject is now similar to the 12497AcpiOsAllocate interface. 12498 12499Implemented a new AML debugger command named Businfo. This command 12500displays 12501information about all devices that have an associate _PRT object. The 12502_ADR, 12503_HID, _UID, and _CID are displayed for these devices. 12504 12505Modified the initialization sequence in AcpiInitializeSubsystem to call 12506the 12507OSL interface AcpiOslInitialize first, before any local initialization. 12508This 12509change was required because the global initialization now calls OSL 12510interfaces. 12511 12512Enhanced the Dump command to display the entire contents of Package 12513objects 12514(including all sub-objects and their values.) 12515 12516Restructured the code base to split some files because of size and/or 12517because the code logically belonged in a separate file. New files are 12518listed 12519below. All makefiles and project files included in the ACPI CA release 12520have 12521been updated. 12522 utilities/utcache.c /* Local cache interfaces */ 12523 utilities/utmutex.c /* Local mutex support */ 12524 utilities/utstate.c /* State object support */ 12525 interpreter/parser/psloop.c /* Main AML parse loop */ 12526 12527Code and Data Size: Current and previous core subsystem library sizes are 12528shown below. These are the code and data sizes for the acpica.lib 12529produced 12530by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12531any ACPI driver or OSPM code. The debug version of the code includes the 12532debug output trace mechanism and has a much larger code and data size. 12533Note 12534that these values will vary depending on the efficiency of the compiler 12535and 12536the compiler options used during generation. 12537 12538 Previous Release: 12539 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12540 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12541 Current Release: 12542 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12543 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12544 12545 125462) iASL Compiler/Disassembler: 12547 12548Fixed a regression introduced in version 20050513 where the use of a 12549Package 12550object within a Case() statement caused a compile time exception. The 12551original behavior has been restored (a Match() operator is emitted.) 12552 12553---------------------------------------- 1255417 June 2005. Summary of changes for version 20050617: 12555 125561) ACPI CA Core Subsystem: 12557 12558Moved the object cache operations into the OS interface layer (OSL) to 12559allow 12560the host OS to handle these operations if desired (for example, the Linux 12561OSL will invoke the slab allocator). This support is optional; the 12562compile 12563time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 12564cache 12565code in the ACPI CA core. The new OSL interfaces are shown below. See 12566utalloc.c for an example implementation, and acpiosxf.h for the exact 12567interface definitions. With assistance from Alexey Starikovskiy. 12568 AcpiOsCreateCache 12569 AcpiOsDeleteCache 12570 AcpiOsPurgeCache 12571 AcpiOsAcquireObject 12572 AcpiOsReleaseObject 12573 12574Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 12575return 12576and restore a flags parameter. This fits better with many OS lock models. 12577Note: the current execution state (interrupt handler or not) is no longer 12578passed to these interfaces. If necessary, the OSL must determine this 12579state 12580by itself, a simple and fast operation. With assistance from Alexey 12581Starikovskiy. 12582 12583Fixed a problem in the ACPI table handling where a valid XSDT was assumed 12584present if the revision of the RSDP was 2 or greater. According to the 12585ACPI 12586specification, the XSDT is optional in all cases, and the table manager 12587therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 12588Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 12589contain 12590only the RSDT. 12591 12592Fixed an interpreter problem with the Mid() operator in the case of an 12593input 12594string where the resulting output string is of zero length. It now 12595correctly 12596returns a valid, null terminated string object instead of a string object 12597with a null pointer. 12598 12599Fixed a problem with the control method argument handling to allow a 12600store 12601to an Arg object that already contains an object of type Device. The 12602Device 12603object is now correctly overwritten. Previously, an error was returned. 12604 12605 12606Enhanced the debugger Find command to emit object values in addition to 12607the 12608found object pathnames. The output format is the same as the dump 12609namespace 12610command. 12611 12612Enhanced the debugger Set command. It now has the ability to set the 12613value 12614of any Named integer object in the namespace (Previously, only method 12615locals 12616and args could be set.) 12617 12618Code and Data Size: Current and previous core subsystem library sizes are 12619shown below. These are the code and data sizes for the acpica.lib 12620produced 12621by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12622any ACPI driver or OSPM code. The debug version of the code includes the 12623debug output trace mechanism and has a much larger code and data size. 12624Note 12625that these values will vary depending on the efficiency of the compiler 12626and 12627the compiler options used during generation. 12628 12629 Previous Release: 12630 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12631 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12632 Current Release: 12633 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12634 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12635 12636 126372) iASL Compiler/Disassembler: 12638 12639Fixed a regression in the disassembler where if/else/while constructs 12640were 12641output incorrectly. This problem was introduced in the previous release 12642(20050526). This problem also affected the single-step disassembly in the 12643debugger. 12644 12645Fixed a problem where compiling the reserved _OSI method would randomly 12646(but 12647rarely) produce compile errors. 12648 12649Enhanced the disassembler to emit compilable code in the face of 12650incorrect 12651AML resource descriptors. If the optional ResourceSourceIndex is present, 12652but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12653disassembly. Otherwise, the resulting code cannot be compiled without 12654errors. 12655 12656---------------------------------------- 1265726 May 2005. Summary of changes for version 20050526: 12658 126591) ACPI CA Core Subsystem: 12660 12661Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12662the module level (not within a control method.) These opcodes are 12663executed 12664exactly once at the time the table is loaded. This type of code was legal 12665up 12666until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12667in 12668order to provide backwards compatibility with earlier BIOS 12669implementations. 12670This eliminates the "Encountered executable code at module level" warning 12671that was previously generated upon detection of such code. 12672 12673Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12674inadvertently be generated during the lookup of namespace objects in the 12675second pass parse of ACPI tables and control methods. It appears that 12676this 12677problem could occur during the resolution of forward references to 12678namespace 12679objects. 12680 12681Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12682corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12683allows the deadlock detection debug code to be compiled out in the normal 12684case, improving mutex performance (and overall subsystem performance) 12685considerably. 12686 12687Implemented a handful of miscellaneous fixes for possible memory leaks on 12688error conditions and error handling control paths. These fixes were 12689suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12690 12691Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12692(tbxfroot.c) 12693to prevent a fault in this error case. 12694 12695Code and Data Size: Current and previous core subsystem library sizes are 12696shown below. These are the code and data sizes for the acpica.lib 12697produced 12698by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12699any ACPI driver or OSPM code. The debug version of the code includes the 12700debug output trace mechanism and has a much larger code and data size. 12701Note 12702that these values will vary depending on the efficiency of the compiler 12703and 12704the compiler options used during generation. 12705 12706 Previous Release: 12707 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12708 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12709 Current Release: 12710 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12711 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12712 12713 127142) iASL Compiler/Disassembler: 12715 12716Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12717the module level (not within a control method.) These operators will be 12718executed once at the time the table is loaded. This type of code was 12719legal 12720up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12721compiler in order to provide backwards compatibility with earlier BIOS 12722ASL 12723code. 12724 12725The ACPI integer width (specified via the table revision ID or the -r 12726override, 32 or 64 bits) is now used internally during compile-time 12727constant 12728folding to ensure that constants are truncated to 32 bits if necessary. 12729Previously, the revision ID value was only emitted in the AML table 12730header. 12731 12732An error message is now generated for the Mutex and Method operators if 12733the 12734SyncLevel parameter is outside the legal range of 0 through 15. 12735 12736Fixed a problem with the Method operator ParameterTypes list handling 12737(ACPI 127383.0). Previously, more than 2 types or 2 arguments generated a syntax 12739error. 12740The actual underlying implementation of method argument typechecking is 12741still under development, however. 12742 12743---------------------------------------- 1274413 May 2005. Summary of changes for version 20050513: 12745 127461) ACPI CA Core Subsystem: 12747 12748Implemented support for PCI Express root bridges -- added support for 12749device 12750PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12751 12752The interpreter now automatically truncates incoming 64-bit constants to 1275332 12754bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12755This 12756also affects the iASL compiler constant folding. (Note: as per below, the 12757iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12758 12759Fixed a problem where string and buffer objects with "static" pointers 12760(pointers to initialization data within an ACPI table) were not handled 12761consistently. The internal object copy operation now always copies the 12762data 12763to a newly allocated buffer, regardless of whether the source object is 12764static or not. 12765 12766Fixed a problem with the FromBCD operator where an implicit result 12767conversion was improperly performed while storing the result to the 12768target 12769operand. Since this is an "explicit conversion" operator, the implicit 12770conversion should never be performed on the output. 12771 12772Fixed a problem with the CopyObject operator where a copy to an existing 12773named object did not always completely overwrite the existing object 12774stored 12775at name. Specifically, a buffer-to-buffer copy did not delete the 12776existing 12777buffer. 12778 12779Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12780and 12781structs for consistency. 12782 12783Code and Data Size: Current and previous core subsystem library sizes are 12784shown below. These are the code and data sizes for the acpica.lib 12785produced 12786by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12787any ACPI driver or OSPM code. The debug version of the code includes the 12788debug output trace mechanism and has a much larger code and data size. 12789Note 12790that these values will vary depending on the efficiency of the compiler 12791and 12792the compiler options used during generation. 12793 12794 Previous Release: 12795 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12796 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12797 Current Release: (Same sizes) 12798 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12799 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12800 12801 128022) iASL Compiler/Disassembler: 12803 12804The compiler now emits a warning if an attempt is made to generate a 64- 12805bit 12806integer constant from within a 32-bit ACPI table (Revision < 2). The 12807integer 12808is truncated to 32 bits. 12809 12810Fixed a problem with large package objects: if the static length of the 12811package is greater than 255, the "variable length package" opcode is 12812emitted. Previously, this caused an error. This requires an update to the 12813ACPI spec, since it currently (incorrectly) states that packages larger 12814than 12815255 elements are not allowed. 12816 12817The disassembler now correctly handles variable length packages and 12818packages 12819larger than 255 elements. 12820 12821---------------------------------------- 1282208 April 2005. Summary of changes for version 20050408: 12823 128241) ACPI CA Core Subsystem: 12825 12826Fixed three cases in the interpreter where an "index" argument to an ASL 12827function was still (internally) 32 bits instead of the required 64 bits. 12828This was the Index argument to the Index, Mid, and Match operators. 12829 12830The "strupr" function is now permanently local (AcpiUtStrupr), since this 12831is 12832not a POSIX-defined function and not present in most kernel-level C 12833libraries. All references to the C library strupr function have been 12834removed 12835from the headers. 12836 12837Completed the deployment of static functions/prototypes. All prototypes 12838with 12839the static attribute have been moved from the headers to the owning C 12840file. 12841 12842Implemented an extract option (-e) for the AcpiBin utility (AML binary 12843utility). This option allows the utility to extract individual ACPI 12844tables 12845from the output of AcpiDmp. It provides the same functionality of the 12846acpixtract.pl perl script without the worry of setting the correct perl 12847options. AcpiBin runs on Windows and has not yet been generated/validated 12848in 12849the Linux/Unix environment (but should be soon). 12850 12851Updated and fixed the table dump option for AcpiBin (-d). This option 12852converts a single ACPI table to a hex/ascii file, similar to the output 12853of 12854AcpiDmp. 12855 12856Code and Data Size: Current and previous core subsystem library sizes are 12857shown below. These are the code and data sizes for the acpica.lib 12858produced 12859by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12860any ACPI driver or OSPM code. The debug version of the code includes the 12861debug output trace mechanism and has a much larger code and data size. 12862Note 12863that these values will vary depending on the efficiency of the compiler 12864and 12865the compiler options used during generation. 12866 12867 Previous Release: 12868 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12869 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12870 Current Release: 12871 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12872 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12873 12874 128752) iASL Compiler/Disassembler: 12876 12877Disassembler fix: Added a check to ensure that the table length found in 12878the 12879ACPI table header within the input file is not longer than the actual 12880input 12881file size. This indicates some kind of file or table corruption. 12882 12883---------------------------------------- 1288429 March 2005. Summary of changes for version 20050329: 12885 128861) ACPI CA Core Subsystem: 12887 12888An error is now generated if an attempt is made to create a Buffer Field 12889of 12890length zero (A CreateField with a length operand of zero.) 12891 12892The interpreter now issues a warning whenever executable code at the 12893module 12894level is detected during ACPI table load. This will give some idea of the 12895prevalence of this type of code. 12896 12897Implemented support for references to named objects (other than control 12898methods) within package objects. 12899 12900Enhanced package object output for the debug object. Package objects are 12901now 12902completely dumped, showing all elements. 12903 12904Enhanced miscellaneous object output for the debug object. Any object can 12905now be written to the debug object (for example, a device object can be 12906written, and the type of the object will be displayed.) 12907 12908The "static" qualifier has been added to all local functions across both 12909the 12910core subsystem and the iASL compiler. 12911 12912The number of "long" lines (> 80 chars) within the source has been 12913significantly reduced, by about 1/3. 12914 12915Cleaned up all header files to ensure that all CA/iASL functions are 12916prototyped (even static functions) and the formatting is consistent. 12917 12918Two new header files have been added, acopcode.h and acnames.h. 12919 12920Removed several obsolete functions that were no longer used. 12921 12922Code and Data Size: Current and previous core subsystem library sizes are 12923shown below. These are the code and data sizes for the acpica.lib 12924produced 12925by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12926any ACPI driver or OSPM code. The debug version of the code includes the 12927debug output trace mechanism and has a much larger code and data size. 12928Note 12929that these values will vary depending on the efficiency of the compiler 12930and 12931the compiler options used during generation. 12932 12933 Previous Release: 12934 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12935 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12936 Current Release: 12937 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12938 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12939 12940 12941 129422) iASL Compiler/Disassembler: 12943 12944Fixed a problem with the resource descriptor generation/support. For the 12945ResourceSourceIndex and the ResourceSource fields, both must be present, 12946or 12947both must be not present - can't have one without the other. 12948 12949The compiler now returns non-zero from the main procedure if any errors 12950have 12951occurred during the compilation. 12952 12953 12954---------------------------------------- 1295509 March 2005. Summary of changes for version 20050309: 12956 129571) ACPI CA Core Subsystem: 12958 12959The string-to-buffer implicit conversion code has been modified again 12960after 12961a change to the ACPI specification. In order to match the behavior of 12962the 12963other major ACPI implementation, the target buffer is no longer truncated 12964if 12965the source string is smaller than an existing target buffer. This change 12966requires an update to the ACPI spec, and should eliminate the recent 12967AE_AML_BUFFER_LIMIT issues. 12968 12969The "implicit return" support was rewritten to a new algorithm that 12970solves 12971the general case. Rather than attempt to determine when a method is about 12972to 12973exit, the result of every ASL operator is saved momentarily until the 12974very 12975next ASL operator is executed. Therefore, no matter how the method exits, 12976there will always be a saved implicit return value. This feature is only 12977enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12978eliminate 12979AE_AML_NO_RETURN_VALUE errors when enabled. 12980 12981Implemented implicit conversion support for the predicate (operand) of 12982the 12983If, Else, and While operators. String and Buffer arguments are 12984automatically 12985converted to Integers. 12986 12987Changed the string-to-integer conversion behavior to match the new ACPI 12988errata: "If no integer object exists, a new integer is created. The ASCII 12989string is interpreted as a hexadecimal constant. Each string character is 12990interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12991with the first character as the most significant digit, and ending with 12992the 12993first non-hexadecimal character or end-of-string." This means that the 12994first 12995non-hex character terminates the conversion and this is the code that was 12996changed. 12997 12998Fixed a problem where the ObjectType operator would fail (fault) when 12999used 13000on an Index of a Package which pointed to a null package element. The 13001operator now properly returns zero (Uninitialized) in this case. 13002 13003Fixed a problem where the While operator used excessive memory by not 13004properly popping the result stack during execution. There was no memory 13005leak 13006after execution, however. (Code provided by Valery Podrezov.) 13007 13008Fixed a problem where references to control methods within Package 13009objects 13010caused the method to be invoked, instead of producing a reference object 13011pointing to the method. 13012 13013Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 13014to 13015improve performance and reduce code size. (Code provided by Alexey 13016Starikovskiy.) 13017 13018Code and Data Size: Current and previous core subsystem library sizes are 13019shown below. These are the code and data sizes for the acpica.lib 13020produced 13021by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13022any ACPI driver or OSPM code. The debug version of the code includes the 13023debug output trace mechanism and has a much larger code and data size. 13024Note 13025that these values will vary depending on the efficiency of the compiler 13026and 13027the compiler options used during generation. 13028 13029 Previous Release: 13030 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13031 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13032 Current Release: 13033 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13034 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 13035 13036 130372) iASL Compiler/Disassembler: 13038 13039Fixed a problem with the Return operator with no arguments. Since the AML 13040grammar for the byte encoding requires an operand for the Return opcode, 13041the 13042compiler now emits a Return(Zero) for this case. An ACPI specification 13043update has been written for this case. 13044 13045For tables other than the DSDT, namepath optimization is automatically 13046disabled. This is because SSDTs can be loaded anywhere in the namespace, 13047the 13048compiler has no knowledge of where, and thus cannot optimize namepaths. 13049 13050Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 13051inadvertently omitted from the ACPI specification, and will require an 13052update to the spec. 13053 13054The source file scan for ASCII characters is now optional (-a). This 13055change 13056was made because some vendors place non-ascii characters within comments. 13057However, the scan is simply a brute-force byte compare to ensure all 13058characters in the file are in the range 0x00 to 0x7F. 13059 13060Fixed a problem with the CondRefOf operator where the compiler was 13061inappropriately checking for the existence of the target. Since the point 13062of 13063the operator is to check for the existence of the target at run-time, the 13064compiler no longer checks for the target existence. 13065 13066Fixed a problem where errors generated from the internal AML interpreter 13067during constant folding were not handled properly, causing a fault. 13068 13069Fixed a problem with overly aggressive range checking for the Stall 13070operator. The valid range (max 255) is now only checked if the operand is 13071of 13072type Integer. All other operand types cannot be statically checked. 13073 13074Fixed a problem where control method references within the RefOf, 13075DeRefOf, 13076and ObjectType operators were not treated properly. They are now treated 13077as 13078actual references, not method invocations. 13079 13080Fixed and enhanced the "list namespace" option (-ln). This option was 13081broken 13082a number of releases ago. 13083 13084Improved error handling for the Field, IndexField, and BankField 13085operators. 13086The compiler now cleanly reports and recovers from errors in the field 13087component (FieldUnit) list. 13088 13089Fixed a disassembler problem where the optional ResourceDescriptor fields 13090TRS and TTP were not always handled correctly. 13091 13092Disassembler - Comments in output now use "//" instead of "/*" 13093 13094---------------------------------------- 1309528 February 2005. Summary of changes for version 20050228: 13096 130971) ACPI CA Core Subsystem: 13098 13099Fixed a problem where the result of an Index() operator (an object 13100reference) must increment the reference count on the target object for 13101the 13102life of the object reference. 13103 13104Implemented AML Interpreter and Debugger support for the new ACPI 3.0 13105Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 13106WordSpace 13107resource descriptors. 13108 13109Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 13110Space Descriptor" string, indicating interpreter support for the 13111descriptors 13112above. 13113 13114Implemented header support for the new ACPI 3.0 FADT flag bits. 13115 13116Implemented header support for the new ACPI 3.0 PCI Express bits for the 13117PM1 13118status/enable registers. 13119 13120Updated header support for the MADT processor local Apic struct and MADT 13121platform interrupt source struct for new ACPI 3.0 fields. 13122 13123Implemented header support for the SRAT and SLIT ACPI tables. 13124 13125Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 13126flag 13127at runtime. 13128 13129Code and Data Size: Current and previous core subsystem library sizes are 13130shown below. These are the code and data sizes for the acpica.lib 13131produced 13132by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13133any ACPI driver or OSPM code. The debug version of the code includes the 13134debug output trace mechanism and has a much larger code and data size. 13135Note 13136that these values will vary depending on the efficiency of the compiler 13137and 13138the compiler options used during generation. 13139 13140 Previous Release: 13141 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13142 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13143 Current Release: 13144 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13145 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13146 13147 131482) iASL Compiler/Disassembler: 13149 13150Fixed a problem with the internal 64-bit String-to-integer conversion 13151with 13152strings less than two characters long. 13153 13154Fixed a problem with constant folding where the result of the Index() 13155operator can not be considered a constant. This means that Index() cannot 13156be 13157a type3 opcode and this will require an update to the ACPI specification. 13158 13159Disassembler: Implemented support for the TTP, MTP, and TRS resource 13160descriptor fields. These fields were inadvertently ignored and not output 13161in 13162the disassembly of the resource descriptor. 13163 13164 13165 ---------------------------------------- 1316611 February 2005. Summary of changes for version 20050211: 13167 131681) ACPI CA Core Subsystem: 13169 13170Implemented ACPI 3.0 support for implicit conversion within the Match() 13171operator. MatchObjects can now be of type integer, buffer, or string 13172instead 13173of just type integer. Package elements are implicitly converted to the 13174type 13175of the MatchObject. This change aligns the behavior of Match() with the 13176behavior of the other logical operators (LLess(), etc.) It also requires 13177an 13178errata change to the ACPI specification as this support was intended for 13179ACPI 3.0, but was inadvertently omitted. 13180 13181Fixed a problem with the internal implicit "to buffer" conversion. 13182Strings 13183that are converted to buffers will cause buffer truncation if the string 13184is 13185smaller than the target buffer. Integers that are converted to buffers 13186will 13187not cause buffer truncation, only zero extension (both as per the ACPI 13188spec.) The problem was introduced when code was added to truncate the 13189buffer, but this should not be performed in all cases, only the string 13190case. 13191 13192Fixed a problem with the Buffer and Package operators where the 13193interpreter 13194would get confused if two such operators were used as operands to an ASL 13195operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13196stack was not being popped after the execution of these operators, 13197resulting 13198in an AE_NO_RETURN_VALUE exception. 13199 13200Fixed a problem with constructs of the form Store(Index(...),...). The 13201reference object returned from Index was inadvertently resolved to an 13202actual 13203value. This problem was introduced in version 20050114 when the behavior 13204of 13205Store() was modified to restrict the object types that can be used as the 13206source operand (to match the ACPI specification.) 13207 13208Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13209 13210Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13211 13212Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13213 13214Code and Data Size: Current and previous core subsystem library sizes are 13215shown below. These are the code and data sizes for the acpica.lib 13216produced 13217by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13218any ACPI driver or OSPM code. The debug version of the code includes the 13219debug output trace mechanism and has a much larger code and data size. 13220Note 13221that these values will vary depending on the efficiency of the compiler 13222and 13223the compiler options used during generation. 13224 13225 Previous Release: 13226 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13227 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13228 Current Release: 13229 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13230 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13231 13232 132332) iASL Compiler/Disassembler: 13234 13235Fixed a code generation problem in the constant folding optimization code 13236where incorrect code was generated if a constant was reduced to a buffer 13237object (i.e., a reduced type 5 opcode.) 13238 13239Fixed a typechecking problem for the ToBuffer operator. Caused by an 13240incorrect return type in the internal opcode information table. 13241 13242---------------------------------------- 1324325 January 2005. Summary of changes for version 20050125: 13244 132451) ACPI CA Core Subsystem: 13246 13247Fixed a recently introduced problem with the Global Lock where the 13248underlying semaphore was not created. This problem was introduced in 13249version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13250Acquire() operation on _GL. 13251 13252The local object cache is now optional, and is disabled by default. Both 13253AcpiExec and the iASL compiler enable the cache because they run in user 13254mode and this enhances their performance. #define 13255ACPI_ENABLE_OBJECT_CACHE 13256to enable the local cache. 13257 13258Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13259the 13260optional "implicit return" support where an error was returned if no 13261return 13262object was expected, but one was implicitly returned. AE_OK is now 13263returned 13264in this case and the implicitly returned object is deleted. 13265AcpiUtEvaluateObject is only occasionally used, and only to execute 13266reserved 13267methods such as _STA and _INI where the return type is known up front. 13268 13269Fixed a few issues with the internal convert-to-integer code. It now 13270returns 13271an error if an attempt is made to convert a null string, a string of only 13272blanks/tabs, or a zero-length buffer. This affects both implicit 13273conversion 13274and explicit conversion via the ToInteger() operator. 13275 13276The internal debug code in AcpiUtAcquireMutex has been commented out. It 13277is 13278not needed for normal operation and should increase the performance of 13279the 13280entire subsystem. The code remains in case it is needed for debug 13281purposes 13282again. 13283 13284The AcpiExec source and makefile are included in the Unix/Linux package 13285for 13286the first time. 13287 13288Code and Data Size: Current and previous core subsystem library sizes are 13289shown below. These are the code and data sizes for the acpica.lib 13290produced 13291by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13292any ACPI driver or OSPM code. The debug version of the code includes the 13293debug output trace mechanism and has a much larger code and data size. 13294Note 13295that these values will vary depending on the efficiency of the compiler 13296and 13297the compiler options used during generation. 13298 13299 Previous Release: 13300 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13301 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13302 Current Release: 13303 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13304 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13305 133062) iASL Compiler/Disassembler: 13307 13308Switch/Case support: A warning is now issued if the type of the Switch 13309value 13310cannot be determined at compile time. For example, Switch(Arg0) will 13311generate the warning, and the type is assumed to be an integer. As per 13312the 13313ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13314the 13315warning. 13316 13317Switch/Case support: Implemented support for buffer and string objects as 13318the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13319buffers and strings. 13320 13321Switch/Case support: The emitted code for the LEqual() comparisons now 13322uses 13323the switch value as the first operand, not the second. The case value is 13324now 13325the second operand, and this allows the case value to be implicitly 13326converted to the type of the switch value, not the other way around. 13327 13328Switch/Case support: Temporary variables are now emitted immediately 13329within 13330the control method, not at the global level. This means that there are 13331now 1333236 temps available per-method, not 36 temps per-module as was the case 13333with 13334the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13335 13336---------------------------------------- 1333714 January 2005. Summary of changes for version 20050114: 13338 13339Added 2005 copyright to all module headers. This affects every module in 13340the core subsystem, iASL compiler, and the utilities. 13341 133421) ACPI CA Core Subsystem: 13343 13344Fixed an issue with the String-to-Buffer conversion code where the string 13345null terminator was not included in the buffer after conversion, but 13346there 13347is existing ASL that assumes the string null terminator is included. This 13348is 13349the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13350introduced in the previous version when the code was updated to correctly 13351set the converted buffer size as per the ACPI specification. The ACPI 13352spec 13353is ambiguous and will be updated to specify that the null terminator must 13354be 13355included in the converted buffer. This also affects the ToBuffer() ASL 13356operator. 13357 13358Fixed a problem with the Mid() ASL/AML operator where it did not work 13359correctly on Buffer objects. Newly created sub-buffers were not being 13360marked 13361as initialized. 13362 13363 13364Fixed a problem in AcpiTbFindTable where incorrect string compares were 13365performed on the OemId and OemTableId table header fields. These fields 13366are 13367not null terminated, so strncmp is now used instead of strcmp. 13368 13369Implemented a restriction on the Store() ASL/AML operator to align the 13370behavior with the ACPI specification. Previously, any object could be 13371used 13372as the source operand. Now, the only objects that may be used are 13373Integers, 13374Buffers, Strings, Packages, Object References, and DDB Handles. If 13375necessary, the original behavior can be restored by enabling the 13376EnableInterpreterSlack flag. 13377 13378Enhanced the optional "implicit return" support to allow an implicit 13379return 13380value from methods that are invoked externally via the AcpiEvaluateObject 13381interface. This enables implicit returns from the _STA and _INI methods, 13382for example. 13383 13384Changed the Revision() ASL/AML operator to return the current version of 13385the 13386AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13387returned 13388the supported ACPI version (This is the function of the _REV method). 13389 13390Updated the _REV predefined method to return the currently supported 13391version 13392of ACPI, now 3. 13393 13394Implemented batch mode option for the AcpiExec utility (-b). 13395 13396Code and Data Size: Current and previous core subsystem library sizes are 13397shown below. These are the code and data sizes for the acpica.lib 13398produced 13399by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13400any ACPI driver or OSPM code. The debug version of the code includes the 13401debug output trace mechanism and has a much larger code and data size. 13402Note 13403that these values will vary depending on the efficiency of the compiler 13404and 13405the compiler options used during generation. 13406 13407 Previous Release: 13408 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13409 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13410 Current Release: 13411 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13412 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13413 13414---------------------------------------- 1341510 December 2004. Summary of changes for version 20041210: 13416 13417ACPI 3.0 support is nearing completion in both the iASL compiler and the 13418ACPI CA core subsystem. 13419 134201) ACPI CA Core Subsystem: 13421 13422Fixed a problem in the ToDecimalString operator where the resulting 13423string 13424length was incorrectly calculated. The length is now calculated exactly, 13425eliminating incorrect AE_STRING_LIMIT exceptions. 13426 13427Fixed a problem in the ToHexString operator to allow a maximum 200 13428character 13429string to be produced. 13430 13431Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13432copy 13433routine where the length of the resulting buffer was not truncated to the 13434new size (if the target buffer already existed). 13435 13436Code and Data Size: Current and previous core subsystem library sizes are 13437shown below. These are the code and data sizes for the acpica.lib 13438produced 13439by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13440any ACPI driver or OSPM code. The debug version of the code includes the 13441debug output trace mechanism and has a much larger code and data size. 13442Note 13443that these values will vary depending on the efficiency of the compiler 13444and 13445the compiler options used during generation. 13446 13447 Previous Release: 13448 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13449 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13450 Current Release: 13451 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13452 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13453 13454 134552) iASL Compiler/Disassembler: 13456 13457Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13458ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13459Includes support in the disassembler. 13460 13461Implemented support for the new (ACPI 3.0) parameter to the Register 13462macro, 13463AccessSize. 13464 13465Fixed a problem where the _HE resource name for the Interrupt macro was 13466referencing bit 0 instead of bit 1. 13467 13468Implemented check for maximum 255 interrupts in the Interrupt macro. 13469 13470Fixed a problem with the predefined resource descriptor names where 13471incorrect AML code was generated if the offset within the resource buffer 13472was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13473but did not update the surrounding package lengths. 13474 13475Changes to the Dma macro: All channels within the channel list must be 13476in 13477the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13478optional (default is BusMaster). 13479 13480Implemented check for maximum 7 data bytes for the VendorShort macro. 13481 13482The ReadWrite parameter is now optional for the Memory32 and similar 13483macros. 13484 13485---------------------------------------- 1348603 December 2004. Summary of changes for version 20041203: 13487 134881) ACPI CA Core Subsystem: 13489 13490The low-level field insertion/extraction code (exfldio) has been 13491completely 13492rewritten to eliminate unnecessary complexity, bugs, and boundary 13493conditions. 13494 13495Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13496ToDecimalString 13497operators where the input operand could be inadvertently deleted if no 13498conversion was necessary (e.g., if the input to ToInteger was an Integer 13499object.) 13500 13501Fixed a problem with the ToDecimalString and ToHexString where an 13502incorrect 13503exception code was returned if the resulting string would be > 200 chars. 13504AE_STRING_LIMIT is now returned. 13505 13506Fixed a problem with the Concatenate operator where AE_OK was always 13507returned, even if the operation failed. 13508 13509Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13510semaphores to be allocated. 13511 13512Code and Data Size: Current and previous core subsystem library sizes are 13513shown below. These are the code and data sizes for the acpica.lib 13514produced 13515by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13516any ACPI driver or OSPM code. The debug version of the code includes the 13517debug output trace mechanism and has a much larger code and data size. 13518Note 13519that these values will vary depending on the efficiency of the compiler 13520and 13521the compiler options used during generation. 13522 13523 Previous Release: 13524 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13525 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13526 Current Release: 13527 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13528 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13529 13530 135312) iASL Compiler/Disassembler: 13532 13533Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13534recently introduced in 20041119. 13535 13536Fixed a problem with the ToUUID macro where the upper nybble of each 13537buffer 13538byte was inadvertently set to zero. 13539 13540---------------------------------------- 1354119 November 2004. Summary of changes for version 20041119: 13542 135431) ACPI CA Core Subsystem: 13544 13545Fixed a problem in the internal ConvertToInteger routine where new 13546integers 13547were not truncated to 32 bits for 32-bit ACPI tables. This routine 13548converts 13549buffers and strings to integers. 13550 13551Implemented support to store a value to an Index() on a String object. 13552This 13553is an ACPI 2.0 feature that had not yet been implemented. 13554 13555Implemented new behavior for storing objects to individual package 13556elements 13557(via the Index() operator). The previous behavior was to invoke the 13558implicit 13559conversion rules if an object was already present at the index. The new 13560behavior is to simply delete any existing object and directly store the 13561new 13562object. Although the ACPI specification seems unclear on this subject, 13563other 13564ACPI implementations behave in this manner. (This is the root of the 13565AE_BAD_HEX_CONSTANT issue.) 13566 13567Modified the RSDP memory scan mechanism to support the extended checksum 13568for 13569ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 13570RSDP signature is found with a valid checksum. 13571 13572Code and Data Size: Current and previous core subsystem library sizes are 13573shown below. These are the code and data sizes for the acpica.lib 13574produced 13575by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13576any ACPI driver or OSPM code. The debug version of the code includes the 13577debug output trace mechanism and has a much larger code and data size. 13578Note 13579that these values will vary depending on the efficiency of the compiler 13580and 13581the compiler options used during generation. 13582 13583 Previous Release: 13584 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13585 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13586 Current Release: 13587 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13588 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13589 13590 135912) iASL Compiler/Disassembler: 13592 13593Fixed a missing semicolon in the aslcompiler.y file. 13594 13595---------------------------------------- 1359605 November 2004. Summary of changes for version 20041105: 13597 135981) ACPI CA Core Subsystem: 13599 13600Implemented support for FADT revision 2. This was an interim table 13601(between 13602ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13603 13604Implemented optional support to allow uninitialized LocalX and ArgX 13605variables in a control method. The variables are initialized to an 13606Integer 13607object with a value of zero. This support is enabled by setting the 13608AcpiGbl_EnableInterpreterSlack flag to TRUE. 13609 13610Implemented support for Integer objects for the SizeOf operator. Either 136114 13612or 8 is returned, depending on the current integer size (32-bit or 64- 13613bit, 13614depending on the parent table revision). 13615 13616Fixed a problem in the implementation of the SizeOf and ObjectType 13617operators 13618where the operand was resolved to a value too early, causing incorrect 13619return values for some objects. 13620 13621Fixed some possible memory leaks during exceptional conditions. 13622 13623Code and Data Size: Current and previous core subsystem library sizes are 13624shown below. These are the code and data sizes for the acpica.lib 13625produced 13626by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13627any ACPI driver or OSPM code. The debug version of the code includes the 13628debug output trace mechanism and has a much larger code and data size. 13629Note 13630that these values will vary depending on the efficiency of the compiler 13631and 13632the compiler options used during generation. 13633 13634 Previous Release: 13635 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13636 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13637 Current Release: 13638 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13639 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13640 13641 136422) iASL Compiler/Disassembler: 13643 13644Implemented support for all ACPI 3.0 reserved names and methods. 13645 13646Implemented all ACPI 3.0 grammar elements in the front-end, including 13647support for semicolons. 13648 13649Implemented the ACPI 3.0 Function() and ToUUID() macros 13650 13651Fixed a problem in the disassembler where a Scope() operator would not be 13652emitted properly if the target of the scope was in another table. 13653 13654---------------------------------------- 1365515 October 2004. Summary of changes for version 20041015: 13656 13657Note: ACPI CA is currently undergoing an in-depth and complete formal 13658evaluation to test/verify the following areas. Other suggestions are 13659welcome. This will result in an increase in the frequency of releases and 13660the number of bug fixes in the next few months. 13661 - Functional tests for all ASL/AML operators 13662 - All implicit/explicit type conversions 13663 - Bit fields and operation regions 13664 - 64-bit math support and 32-bit-only "truncated" math support 13665 - Exceptional conditions, both compiler and interpreter 13666 - Dynamic object deletion and memory leaks 13667 - ACPI 3.0 support when implemented 13668 - External interfaces to the ACPI subsystem 13669 13670 136711) ACPI CA Core Subsystem: 13672 13673Fixed two alignment issues on 64-bit platforms - within debug statements 13674in 13675AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13676Address 13677field within the non-aligned ACPI generic address structure. 13678 13679Fixed a problem in the Increment and Decrement operators where incorrect 13680operand resolution could result in the inadvertent modification of the 13681original integer when the integer is passed into another method as an 13682argument and the arg is then incremented/decremented. 13683 13684Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13685bit 13686BCD number were truncated during conversion. 13687 13688Fixed a problem in the ToDecimal operator where the length of the 13689resulting 13690string could be set incorrectly too long if the input operand was a 13691Buffer 13692object. 13693 13694Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13695(0) 13696within a buffer would prematurely terminate a compare between buffer 13697objects. 13698 13699Added a check for string overflow (>200 characters as per the ACPI 13700specification) during the Concatenate operator with two string operands. 13701 13702Code and Data Size: Current and previous core subsystem library sizes are 13703shown below. These are the code and data sizes for the acpica.lib 13704produced 13705by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13706any ACPI driver or OSPM code. The debug version of the code includes the 13707debug output trace mechanism and has a much larger code and data size. 13708Note 13709that these values will vary depending on the efficiency of the compiler 13710and 13711the compiler options used during generation. 13712 13713 Previous Release: 13714 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13715 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13716 Current Release: 13717 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13718 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13719 13720 13721 137222) iASL Compiler/Disassembler: 13723 13724Allow the use of the ObjectType operator on uninitialized Locals and Args 13725(returns 0 as per the ACPI specification). 13726 13727Fixed a problem where the compiler would fault if there was a syntax 13728error 13729in the FieldName of all of the various CreateXXXField operators. 13730 13731Disallow the use of lower case letters within the EISAID macro, as per 13732the 13733ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13734Where 13735U is an uppercase letter and N is a hex digit. 13736 13737 13738---------------------------------------- 1373906 October 2004. Summary of changes for version 20041006: 13740 137411) ACPI CA Core Subsystem: 13742 13743Implemented support for the ACPI 3.0 Timer operator. This ASL function 13744implements a 64-bit timer with 100 nanosecond granularity. 13745 13746Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13747implement the ACPI 3.0 Timer operator. This allows the host OS to 13748implement 13749the timer with the best clock available. Also, it keeps the core 13750subsystem 13751out of the clock handling business, since the host OS (usually) performs 13752this function. 13753 13754Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13755functions use a 64-bit address which is part of the packed ACPI Generic 13756Address Structure. Since the structure is non-aligned, the alignment 13757macros 13758are now used to extract the address to a local variable before use. 13759 13760Fixed a problem where the ToInteger operator assumed all input strings 13761were 13762hexadecimal. The operator now handles both decimal strings and hex 13763strings 13764(prefixed with "0x"). 13765 13766Fixed a problem where the string length in the string object created as a 13767result of the internal ConvertToString procedure could be incorrect. This 13768potentially affected all implicit conversions and also the 13769ToDecimalString 13770and ToHexString operators. 13771 13772Fixed two problems in the ToString operator. If the length parameter was 13773zero, an incorrect string object was created and the value of the input 13774length parameter was inadvertently changed from zero to Ones. 13775 13776Fixed a problem where the optional ResourceSource string in the 13777ExtendedIRQ 13778resource macro was ignored. 13779 13780Simplified the interfaces to the internal division functions, reducing 13781code 13782size and complexity. 13783 13784Code and Data Size: Current and previous core subsystem library sizes are 13785shown below. These are the code and data sizes for the acpica.lib 13786produced 13787by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13788any ACPI driver or OSPM code. The debug version of the code includes the 13789debug output trace mechanism and has a much larger code and data size. 13790Note 13791that these values will vary depending on the efficiency of the compiler 13792and 13793the compiler options used during generation. 13794 13795 Previous Release: 13796 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13797 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13798 Current Release: 13799 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13800 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13801 13802 138032) iASL Compiler/Disassembler: 13804 13805Implemented support for the ACPI 3.0 Timer operator. 13806 13807Fixed a problem where the Default() operator was inadvertently ignored in 13808a 13809Switch/Case block. This was a problem in the translation of the Switch 13810statement to If...Else pairs. 13811 13812Added support to allow a standalone Return operator, with no parentheses 13813(or 13814operands). 13815 13816Fixed a problem with code generation for the ElseIf operator where the 13817translated Else...If parse tree was improperly constructed leading to the 13818loss of some code. 13819 13820---------------------------------------- 1382122 September 2004. Summary of changes for version 20040922: 13822 138231) ACPI CA Core Subsystem: 13824 13825Fixed a problem with the implementation of the LNot() operator where 13826"Ones" 13827was not returned for the TRUE case. Changed the code to return Ones 13828instead 13829of (!Arg) which was usually 1. This change affects iASL constant folding 13830for 13831this operator also. 13832 13833Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13834not 13835initialized properly -- Now zero the entire buffer in this case where the 13836buffer already exists. 13837 13838Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13839Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13840related code considerably. This will require changes/updates to all OS 13841interface layers (OSLs.) 13842 13843Implemented a new external interface, AcpiInstallExceptionHandler, to 13844allow 13845a system exception handler to be installed. This handler is invoked upon 13846any 13847run-time exception that occurs during control method execution. 13848 13849Added support for the DSDT in AcpiTbFindTable. This allows the 13850DataTableRegion() operator to access the local copy of the DSDT. 13851 13852Code and Data Size: Current and previous core subsystem library sizes are 13853shown below. These are the code and data sizes for the acpica.lib 13854produced 13855by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13856any ACPI driver or OSPM code. The debug version of the code includes the 13857debug output trace mechanism and has a much larger code and data size. 13858Note 13859that these values will vary depending on the efficiency of the compiler 13860and 13861the compiler options used during generation. 13862 13863 Previous Release: 13864 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13865 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13866 Current Release: 13867 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13868 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13869 13870 138712) iASL Compiler/Disassembler: 13872 13873Fixed a problem with constant folding and the LNot operator. LNot was 13874returning 1 in the TRUE case, not Ones as per the ACPI specification. 13875This 13876could result in the generation of an incorrect folded/reduced constant. 13877 13878End-Of-File is now allowed within a "//"-style comment. A parse error no 13879longer occurs if such a comment is at the very end of the input ASL 13880source 13881file. 13882 13883Implemented the "-r" option to override the Revision in the table header. 13884The initial use of this option will be to simplify the evaluation of the 13885AML 13886interpreter by allowing a single ASL source module to be compiled for 13887either 1388832-bit or 64-bit integers. 13889 13890 13891---------------------------------------- 1389227 August 2004. Summary of changes for version 20040827: 13893 138941) ACPI CA Core Subsystem: 13895 13896- Implemented support for implicit object conversion in the non-numeric 13897logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13898and 13899LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13900the second operand is implicitly converted on the fly to match the type 13901of 13902the first operand. For example: 13903 13904 LEqual (Source1, Source2) 13905 13906Source1 and Source2 must each evaluate to an integer, a string, or a 13907buffer. 13908The data type of Source1 dictates the required type of Source2. Source2 13909is 13910implicitly converted if necessary to match the type of Source1. 13911 13912- Updated and corrected the behavior of the string conversion support. 13913The 13914rules concerning conversion of buffers to strings (according to the ACPI 13915specification) are as follows: 13916 13917ToDecimalString - explicit byte-wise conversion of buffer to string of 13918decimal values (0-255) separated by commas. ToHexString - explicit byte- 13919wise 13920conversion of buffer to string of hex values (0-FF) separated by commas. 13921ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13922byte 13923copy with no transform except NULL terminated. Any other implicit buffer- 13924to- 13925string conversion - byte-wise conversion of buffer to string of hex 13926values 13927(0-FF) separated by spaces. 13928 13929- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13930 13931- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13932was 13933one byte too short in the case of a node in the root scope. This could 13934cause a fault during debug output. 13935 13936- Code and Data Size: Current and previous core subsystem library sizes 13937are 13938shown below. These are the code and data sizes for the acpica.lib 13939produced 13940by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13941any ACPI driver or OSPM code. The debug version of the code includes the 13942debug output trace mechanism and has a much larger code and data size. 13943Note 13944that these values will vary depending on the efficiency of the compiler 13945and 13946the compiler options used during generation. 13947 13948 Previous Release: 13949 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13950 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13951 Current Release: 13952 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13953 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13954 13955 139562) iASL Compiler/Disassembler: 13957 13958- Fixed a Linux generation error. 13959 13960 13961---------------------------------------- 1396216 August 2004. Summary of changes for version 20040816: 13963 139641) ACPI CA Core Subsystem: 13965 13966Designed and implemented support within the AML interpreter for the so- 13967called "implicit return". This support returns the result of the last 13968ASL 13969operation within a control method, in the absence of an explicit Return() 13970operator. A few machines depend on this behavior, even though it is not 13971explicitly supported by the ASL language. It is optional support that 13972can 13973be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13974 13975Removed support for the PCI_Config address space from the internal low 13976level 13977hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13978support was not used internally, and would not work correctly anyway 13979because 13980the PCI bus number and segment number were not supported. There are 13981separate interfaces for PCI configuration space access because of the 13982unique 13983interface. 13984 13985Code and Data Size: Current and previous core subsystem library sizes are 13986shown below. These are the code and data sizes for the acpica.lib 13987produced 13988by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13989any ACPI driver or OSPM code. The debug version of the code includes the 13990debug output trace mechanism and has a much larger code and data size. 13991Note 13992that these values will vary depending on the efficiency of the compiler 13993and 13994the compiler options used during generation. 13995 13996 Previous Release: 13997 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13998 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13999 Current Release: 14000 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 14001 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 14002 14003 140042) iASL Compiler/Disassembler: 14005 14006Fixed a problem where constants in ASL expressions at the root level (not 14007within a control method) could be inadvertently truncated during code 14008generation. This problem was introduced in the 20040715 release. 14009 14010 14011---------------------------------------- 1401215 July 2004. Summary of changes for version 20040715: 14013 140141) ACPI CA Core Subsystem: 14015 14016Restructured the internal HW GPE interfaces to pass/track the current 14017state 14018of interrupts (enabled/disabled) in order to avoid possible deadlock and 14019increase flexibility of the interfaces. 14020 14021Implemented a "lexicographical compare" for String and Buffer objects 14022within 14023the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 14024- 14025as per further clarification to the ACPI specification. Behavior is 14026similar 14027to C library "strcmp". 14028 14029Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 14030external function. In the 32-bit non-debug case, the stack use has been 14031reduced from 168 bytes to 32 bytes. 14032 14033Deployed a new run-time configuration flag, 14034AcpiGbl_EnableInterpreterSlack, 14035whose purpose is to allow the AML interpreter to forgive certain bad AML 14036constructs. Default setting is FALSE. 14037 14038Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 14039IO 14040support code. If enabled, it allows field access to go beyond the end of 14041a 14042region definition if the field is within the region length rounded up to 14043the 14044next access width boundary (a common coding error.) 14045 14046Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 14047ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 14048these 14049symbols are lowercase by the latest version of the AcpiSrc tool. 14050 14051The prototypes for the PCI interfaces in acpiosxf.h have been updated to 14052rename "Register" to simply "Reg" to prevent certain compilers from 14053complaining. 14054 14055Code and Data Size: Current and previous core subsystem library sizes are 14056shown below. These are the code and data sizes for the acpica.lib 14057produced 14058by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14059any ACPI driver or OSPM code. The debug version of the code includes the 14060debug output trace mechanism and has a much larger code and data size. 14061Note 14062that these values will vary depending on the efficiency of the compiler 14063and 14064the compiler options used during generation. 14065 14066 Previous Release: 14067 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14068 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14069 Current Release: 14070 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 14071 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 14072 14073 140742) iASL Compiler/Disassembler: 14075 14076Implemented full support for Package objects within the Case() operator. 14077Note: The Break() operator is currently not supported within Case blocks 14078(TermLists) as there is some question about backward compatibility with 14079ACPI 140801.0 interpreters. 14081 14082 14083Fixed a problem where complex terms were not supported properly within 14084the 14085Switch() operator. 14086 14087Eliminated extraneous warning for compiler-emitted reserved names of the 14088form "_T_x". (Used in Switch/Case operators.) 14089 14090Eliminated optimization messages for "_T_x" objects and small constants 14091within the DefinitionBlock operator. 14092 14093 14094---------------------------------------- 1409515 June 2004. Summary of changes for version 20040615: 14096 140971) ACPI CA Core Subsystem: 14098 14099Implemented support for Buffer and String objects (as per ACPI 2.0) for 14100the 14101following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14102LLessEqual. 14103 14104All directory names in the entire source package are lower case, as they 14105were in earlier releases. 14106 14107Implemented "Disassemble" command in the AML debugger that will 14108disassemble 14109a single control method. 14110 14111Code and Data Size: Current and previous core subsystem library sizes are 14112shown below. These are the code and data sizes for the acpica.lib 14113produced 14114by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14115any ACPI driver or OSPM code. The debug version of the code includes the 14116debug output trace mechanism and has a much larger code and data size. 14117Note 14118that these values will vary depending on the efficiency of the compiler 14119and 14120the compiler options used during generation. 14121 14122 Previous Release: 14123 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14124 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14125 14126 Current Release: 14127 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 14128 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 14129 14130 141312) iASL Compiler/Disassembler: 14132 14133Implemented support for Buffer and String objects (as per ACPI 2.0) for 14134the 14135following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14136LLessEqual. 14137 14138All directory names in the entire source package are lower case, as they 14139were in earlier releases. 14140 14141Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14142not found. 14143 14144Fixed an issue with the Windows version of the compiler where later 14145versions 14146of Windows place the FADT in the registry under the name "FADT" and not 14147"FACP" as earlier versions did. This applies when using the -g or - 14148d<nofilename> options. The compiler now looks for both strings as 14149necessary. 14150 14151Fixed a problem with compiler namepath optimization where a namepath 14152within 14153the Scope() operator could not be optimized if the namepath was a subpath 14154of 14155the current scope path. 14156 14157---------------------------------------- 1415827 May 2004. Summary of changes for version 20040527: 14159 141601) ACPI CA Core Subsystem: 14161 14162Completed a new design and implementation for EBDA (Extended BIOS Data 14163Area) 14164support in the RSDP scan code. The original code improperly scanned for 14165the 14166EBDA by simply scanning from memory location 0 to 0x400. The correct 14167method 14168is to first obtain the EBDA pointer from within the BIOS data area, then 14169scan 1K of memory starting at the EBDA pointer. There appear to be few 14170if 14171any machines that place the RSDP in the EBDA, however. 14172 14173Integrated a fix for a possible fault during evaluation of BufferField 14174arguments. Obsolete code that was causing the problem was removed. 14175 14176Found and fixed a problem in the Field Support Code where data could be 14177corrupted on a bit field read that starts on an aligned boundary but does 14178not end on an aligned boundary. Merged the read/write "datum length" 14179calculation code into a common procedure. 14180 14181Rolled in a couple of changes to the FreeBSD-specific header. 14182 14183 14184Code and Data Size: Current and previous core subsystem library sizes are 14185shown below. These are the code and data sizes for the acpica.lib 14186produced 14187by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14188any ACPI driver or OSPM code. The debug version of the code includes the 14189debug output trace mechanism and has a much larger code and data size. 14190Note 14191that these values will vary depending on the efficiency of the compiler 14192and 14193the compiler options used during generation. 14194 14195 Previous Release: 14196 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14197 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14198 Current Release: 14199 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14200 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14201 14202 142032) iASL Compiler/Disassembler: 14204 14205Fixed a generation warning produced by some overly-verbose compilers for 14206a 1420764-bit constant. 14208 14209---------------------------------------- 1421014 May 2004. Summary of changes for version 20040514: 14211 142121) ACPI CA Core Subsystem: 14213 14214Fixed a problem where hardware GPE enable bits sometimes not set properly 14215during and after GPE method execution. Result of 04/27 changes. 14216 14217Removed extra "clear all GPEs" when sleeping/waking. 14218 14219Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14220AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14221to 14222the new AcpiEv* calls as appropriate. 14223 14224ACPI_OS_NAME was removed from the OS-specific headers. The default name 14225is 14226now "Microsoft Windows NT" for maximum compatibility. However this can 14227be 14228changed by modifying the acconfig.h file. 14229 14230Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14231traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14232 14233Run _INI methods on ThermalZone objects. This is against the ACPI 14234specification, but there is apparently ASL code in the field that has 14235these 14236_INI methods, and apparently "other" AML interpreters execute them. 14237 14238Performed a full 16/32/64 bit lint that resulted in some small changes. 14239 14240Added a sleep simulation command to the AML debugger to test sleep code. 14241 14242Code and Data Size: Current and previous core subsystem library sizes are 14243shown below. These are the code and data sizes for the acpica.lib 14244produced 14245by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14246any ACPI driver or OSPM code. The debug version of the code includes the 14247debug output trace mechanism and has a much larger code and data size. 14248Note 14249that these values will vary depending on the efficiency of the compiler 14250and 14251the compiler options used during generation. 14252 14253 Previous Release: 14254 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14255 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14256 Current Release: 14257 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14258 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14259 14260---------------------------------------- 1426127 April 2004. Summary of changes for version 20040427: 14262 142631) ACPI CA Core Subsystem: 14264 14265Completed a major overhaul of the GPE handling within ACPI CA. There are 14266now three types of GPEs: wake-only, runtime-only, and combination 14267wake/run. 14268The only GPEs allowed to be combination wake/run are for button-style 14269devices such as a control-method power button, control-method sleep 14270button, 14271or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14272not 14273referenced by any _PRW methods are marked for "runtime" and hardware 14274enabled. Any GPE that is referenced by a _PRW method is marked for 14275"wake" 14276(and disabled at runtime). However, at sleep time, only those GPEs that 14277have been specifically enabled for wake via the AcpiEnableGpe interface 14278will 14279actually be hardware enabled. 14280 14281A new external interface has been added, AcpiSetGpeType(), that is meant 14282to 14283be used by device drivers to force a GPE to a particular type. It will 14284be 14285especially useful for the drivers for the button devices mentioned above. 14286 14287Completed restructuring of the ACPI CA initialization sequence so that 14288default operation region handlers are installed before GPEs are 14289initialized 14290and the _PRW methods are executed. This will prevent errors when the 14291_PRW 14292methods attempt to access system memory or I/O space. 14293 14294GPE enable/disable no longer reads the GPE enable register. We now keep 14295the 14296enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14297thus no longer depend on the hardware to maintain these bits. 14298 14299Always clear the wake status and fixed/GPE status bits before sleep, even 14300for state S5. 14301 14302Improved the AML debugger output for displaying the GPE blocks and their 14303current status. 14304 14305Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14306where 14307x = 0,1,2,3,4. 14308 14309Fixed a problem where the physical address was incorrectly calculated 14310when 14311the Load() operator was used to directly load from an Operation Region 14312(vs. 14313loading from a Field object.) Also added check for minimum table length 14314for 14315this case. 14316 14317Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14318mutex release. 14319 14320Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14321consistency with the other fields returned. 14322 14323Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14324structure for each GPE in the system, so the size of this structure is 14325important. 14326 14327CPU stack requirement reduction: Cleaned up the method execution and 14328object 14329evaluation paths so that now a parameter structure is passed, instead of 14330copying the various method parameters over and over again. 14331 14332In evregion.c: Correctly exit and reenter the interpreter region if and 14333only if dispatching an operation region request to a user-installed 14334handler. 14335Do not exit/reenter when dispatching to a default handler (e.g., default 14336system memory or I/O handlers) 14337 14338 14339Notes for updating drivers for the new GPE support. The following 14340changes 14341must be made to ACPI-related device drivers that are attached to one or 14342more 14343GPEs: (This information will be added to the ACPI CA Programmer 14344Reference.) 14345 143461) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14347must 14348explicitly call AcpiEnableGpe. 143492) There is a new interface called AcpiSetGpeType. This should be called 14350before enabling the GPE. Also, this interface will automatically disable 14351the GPE if it is currently enabled. 143523) AcpiEnableGpe no longer supports a GPE type flag. 14353 14354Specific drivers that must be changed: 143551) EC driver: 14356 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14357AeGpeHandler, NULL); 14358 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14359 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14360 143612) Button Drivers (Power, Lid, Sleep): 14362Run _PRW method under parent device 14363If _PRW exists: /* This is a control-method button */ 14364 Extract GPE number and possibly GpeDevice 14365 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14366 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14367 14368For all other devices that have _PRWs, we automatically set the GPE type 14369to 14370ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14371This 14372must be done on a selective basis, usually requiring some kind of user 14373app 14374to allow the user to pick the wake devices. 14375 14376 14377Code and Data Size: Current and previous core subsystem library sizes are 14378shown below. These are the code and data sizes for the acpica.lib 14379produced 14380by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14381any ACPI driver or OSPM code. The debug version of the code includes the 14382debug output trace mechanism and has a much larger code and data size. 14383Note 14384that these values will vary depending on the efficiency of the compiler 14385and 14386the compiler options used during generation. 14387 14388 Previous Release: 14389 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14390 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14391 Current Release: 14392 14393 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14394 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14395 14396 14397 14398---------------------------------------- 1439902 April 2004. Summary of changes for version 20040402: 14400 144011) ACPI CA Core Subsystem: 14402 14403Fixed an interpreter problem where an indirect store through an ArgX 14404parameter was incorrectly applying the "implicit conversion rules" during 14405the store. From the ACPI specification: "If the target is a method local 14406or 14407argument (LocalX or ArgX), no conversion is performed and the result is 14408stored directly to the target". The new behavior is to disable implicit 14409conversion during ALL stores to an ArgX. 14410 14411Changed the behavior of the _PRW method scan to ignore any and all errors 14412returned by a given _PRW. This prevents the scan from aborting from the 14413failure of any single _PRW. 14414 14415Moved the runtime configuration parameters from the global init procedure 14416to 14417static variables in acglobal.h. This will allow the host to override the 14418default values easily. 14419 14420Code and Data Size: Current and previous core subsystem library sizes are 14421shown below. These are the code and data sizes for the acpica.lib 14422produced 14423by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14424any ACPI driver or OSPM code. The debug version of the code includes the 14425debug output trace mechanism and has a much larger code and data size. 14426Note 14427that these values will vary depending on the efficiency of the compiler 14428and 14429the compiler options used during generation. 14430 14431 Previous Release: 14432 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14433 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14434 Current Release: 14435 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14436 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14437 14438 144392) iASL Compiler/Disassembler: 14440 14441iASL now fully disassembles SSDTs. However, External() statements are 14442not 14443generated automatically for unresolved symbols at this time. This is a 14444planned feature for future implementation. 14445 14446Fixed a scoping problem in the disassembler that occurs when the type of 14447the 14448target of a Scope() operator is overridden. This problem caused an 14449incorrectly nested internal namespace to be constructed. 14450 14451Any warnings or errors that are emitted during disassembly are now 14452commented 14453out automatically so that the resulting file can be recompiled without 14454any 14455hand editing. 14456 14457---------------------------------------- 1445826 March 2004. Summary of changes for version 20040326: 14459 144601) ACPI CA Core Subsystem: 14461 14462Implemented support for "wake" GPEs via interaction between GPEs and the 14463_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14464identified as a WAKE GPE and by default will no longer be enabled at 14465runtime. Previously, we were blindly enabling all GPEs with a 14466corresponding 14467_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14468We 14469believe this has been the cause of thousands of "spurious" GPEs on some 14470systems. 14471 14472This new GPE behavior is can be reverted to the original behavior (enable 14473ALL GPEs at runtime) via a runtime flag. 14474 14475Fixed a problem where aliased control methods could not access objects 14476properly. The proper scope within the namespace was not initialized 14477(transferred to the target of the aliased method) before executing the 14478target method. 14479 14480Fixed a potential race condition on internal object deletion on the 14481return 14482object in AcpiEvaluateObject. 14483 14484Integrated a fix for resource descriptors where both _MEM and _MTP were 14485being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14486wide, 0x0F instead of 0x03.) 14487 14488Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14489preventing 14490a 14491fault in some cases. 14492 14493Updated Notify() values for debug statements in evmisc.c 14494 14495Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14496 14497Code and Data Size: Current and previous core subsystem library sizes are 14498shown below. These are the code and data sizes for the acpica.lib 14499produced 14500by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14501any ACPI driver or OSPM code. The debug version of the code includes the 14502debug output trace mechanism and has a much larger code and data size. 14503Note 14504that these values will vary depending on the efficiency of the compiler 14505and 14506the compiler options used during generation. 14507 14508 Previous Release: 14509 14510 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14511 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14512 Current Release: 14513 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14514 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14515 14516---------------------------------------- 1451711 March 2004. Summary of changes for version 20040311: 14518 145191) ACPI CA Core Subsystem: 14520 14521Fixed a problem where errors occurring during the parse phase of control 14522method execution did not abort cleanly. For example, objects created and 14523installed in the namespace were not deleted. This caused all subsequent 14524invocations of the method to return the AE_ALREADY_EXISTS exception. 14525 14526Implemented a mechanism to force a control method to "Serialized" 14527execution 14528if the method attempts to create namespace objects. (The root of the 14529AE_ALREADY_EXISTS problem.) 14530 14531Implemented support for the predefined _OSI "internal" control method. 14532Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14533and 14534"Windows 2001.1", and can be easily upgraded for new strings as 14535necessary. 14536This feature will allow "other" operating systems to execute the fully 14537tested, "Windows" code path through the ASL code 14538 14539Global Lock Support: Now allows multiple acquires and releases with any 14540internal thread. Removed concept of "owning thread" for this special 14541mutex. 14542 14543Fixed two functions that were inappropriately declaring large objects on 14544the 14545CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 14546during 14547method execution considerably. 14548 14549Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 14550S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 14551 14552Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 14553defined on the machine. 14554 14555Implemented two runtime options: One to force all control method 14556execution 14557to "Serialized" to mimic Windows behavior, another to disable _OSI 14558support 14559if it causes problems on a given machine. 14560 14561Code and Data Size: Current and previous core subsystem library sizes are 14562shown below. These are the code and data sizes for the acpica.lib 14563produced 14564by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14565any ACPI driver or OSPM code. The debug version of the code includes the 14566debug output trace mechanism and has a much larger code and data size. 14567Note 14568that these values will vary depending on the efficiency of the compiler 14569and 14570the compiler options used during generation. 14571 14572 Previous Release: 14573 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14574 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14575 Current Release: 14576 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14577 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14578 145792) iASL Compiler/Disassembler: 14580 14581Fixed an array size problem for FreeBSD that would cause the compiler to 14582fault. 14583 14584---------------------------------------- 1458520 February 2004. Summary of changes for version 20040220: 14586 14587 145881) ACPI CA Core Subsystem: 14589 14590Implemented execution of _SxD methods for Device objects in the 14591GetObjectInfo interface. 14592 14593Fixed calls to _SST method to pass the correct arguments. 14594 14595Added a call to _SST on wake to restore to "working" state. 14596 14597Check for End-Of-Buffer failure case in the WalkResources interface. 14598 14599Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14600structures to the beginning of the file. 14601 14602After wake, clear GPE status register(s) before enabling GPEs. 14603 14604After wake, clear/enable power button. (Perhaps we should clear/enable 14605all 14606fixed events upon wake.) 14607 14608Fixed a couple of possible memory leaks in the Namespace manager. 14609 14610Integrated latest acnetbsd.h file. 14611 14612---------------------------------------- 1461311 February 2004. Summary of changes for version 20040211: 14614 14615 146161) ACPI CA Core Subsystem: 14617 14618Completed investigation and implementation of the call-by-reference 14619mechanism for control method arguments. 14620 14621Fixed a problem where a store of an object into an indexed package could 14622fail if the store occurs within a different method than the method that 14623created the package. 14624 14625Fixed a problem where the ToDecimal operator could return incorrect 14626results. 14627 14628Fixed a problem where the CopyObject operator could fail on some of the 14629more 14630obscure objects (e.g., Reference objects.) 14631 14632Improved the output of the Debug object to display buffer, package, and 14633index objects. 14634 14635Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14636return 14637the expected result. 14638 14639Added permanent ACPI_REPORT_ERROR macros for all instances of the 14640ACPI_AML_INTERNAL exception. 14641 14642Integrated latest version of acfreebsd.h 14643 14644---------------------------------------- 1464516 January 2004. Summary of changes for version 20040116: 14646 14647The purpose of this release is primarily to update the copyright years in 14648each module, thus causing a huge number of diffs. There are a few small 14649functional changes, however. 14650 146511) ACPI CA Core Subsystem: 14652 14653Improved error messages when there is a problem finding one or more of 14654the 14655required base ACPI tables 14656 14657Reintroduced the definition of APIC_HEADER in actbl.h 14658 14659Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14660 14661Removed extraneous reference to NewObj in dsmthdat.c 14662 146632) iASL compiler 14664 14665Fixed a problem introduced in December that disabled the correct 14666disassembly 14667of Resource Templates 14668 14669 14670---------------------------------------- 1467103 December 2003. Summary of changes for version 20031203: 14672 146731) ACPI CA Core Subsystem: 14674 14675Changed the initialization of Operation Regions during subsystem 14676init to perform two entire walks of the ACPI namespace; The first 14677to initialize the regions themselves, the second to execute the 14678_REG methods. This fixed some interdependencies across _REG 14679methods found on some machines. 14680 14681Fixed a problem where a Store(Local0, Local1) could simply update 14682the object reference count, and not create a new copy of the 14683object if the Local1 is uninitialized. 14684 14685Implemented support for the _SST reserved method during sleep 14686transitions. 14687 14688Implemented support to clear the SLP_TYP and SLP_EN bits when 14689waking up, this is apparently required by some machines. 14690 14691When sleeping, clear the wake status only if SleepState is not S5. 14692 14693Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14694pointer arithmetic advanced a string pointer too far. 14695 14696Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14697could be returned if the requested table has not been loaded. 14698 14699Within the support for IRQ resources, restructured the handling of 14700the active and edge/level bits. 14701 14702Fixed a few problems in AcpiPsxExecute() where memory could be 14703leaked under certain error conditions. 14704 14705Improved error messages for the cases where the ACPI mode could 14706not be entered. 14707 14708Code and Data Size: Current and previous core subsystem library 14709sizes are shown below. These are the code and data sizes for the 14710acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14711these values do not include any ACPI driver or OSPM code. The 14712debug version of the code includes the debug output trace 14713mechanism and has a much larger code and data size. Note that 14714these values will vary depending on the efficiency of the compiler 14715and the compiler options used during generation. 14716 14717 Previous Release (20031029): 14718 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14719 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14720 Current Release: 14721 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14722 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14723 147242) iASL Compiler/Disassembler: 14725 14726Implemented a fix for the iASL disassembler where a bad index was 14727generated. This was most noticeable on 64-bit platforms 14728 14729 14730---------------------------------------- 1473129 October 2003. Summary of changes for version 20031029: 14732 147331) ACPI CA Core Subsystem: 14734 14735 14736Fixed a problem where a level-triggered GPE with an associated 14737_Lxx control method was incorrectly cleared twice. 14738 14739Fixed a problem with the Field support code where an access can 14740occur beyond the end-of-region if the field is non-aligned but 14741extends to the very end of the parent region (resulted in an 14742AE_AML_REGION_LIMIT exception.) 14743 14744Fixed a problem with ACPI Fixed Events where an RT Clock handler 14745would not get invoked on an RTC event. The RTC event bitmasks for 14746the PM1 registers were not being initialized properly. 14747 14748Implemented support for executing _STA and _INI methods for 14749Processor objects. Although this is currently not part of the 14750ACPI specification, there is existing ASL code that depends on the 14751init-time execution of these methods. 14752 14753Implemented and deployed a GetDescriptorName function to decode 14754the various types of internal descriptors. Guards against null 14755descriptors during debug output also. 14756 14757Implemented and deployed a GetNodeName function to extract the 4- 14758character namespace node name. This function simplifies the debug 14759and error output, as well as guarding against null pointers during 14760output. 14761 14762Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14763simplify the debug and error output of 64-bit integers. This 14764macro replaces the HIDWORD and LODWORD macros for dumping these 14765integers. 14766 14767Updated the implementation of the Stall() operator to only call 14768AcpiOsStall(), and also return an error if the operand is larger 14769than 255. This preserves the required behavior of not 14770relinquishing the processor, as would happen if AcpiOsSleep() was 14771called for "long stalls". 14772 14773Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14774initialized are now treated as NOOPs. 14775 14776Cleaned up a handful of warnings during 64-bit generation. 14777 14778Fixed a reported error where and incorrect GPE number was passed 14779to the GPE dispatch handler. This value is only used for error 14780output, however. Used this opportunity to clean up and streamline 14781the GPE dispatch code. 14782 14783Code and Data Size: Current and previous core subsystem library 14784sizes are shown below. These are the code and data sizes for the 14785acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14786these values do not include any ACPI driver or OSPM code. The 14787 14788debug version of the code includes the debug output trace 14789mechanism and has a much larger code and data size. Note that 14790these values will vary depending on the efficiency of the compiler 14791and the compiler options used during generation. 14792 14793 Previous Release (20031002): 14794 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14795 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14796 Current Release: 14797 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14798 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14799 14800 148012) iASL Compiler/Disassembler: 14802 14803Updated the iASL compiler to return an error if the operand to the 14804Stall() operator is larger than 255. 14805 14806 14807---------------------------------------- 1480802 October 2003. Summary of changes for version 20031002: 14809 14810 148111) ACPI CA Core Subsystem: 14812 14813Fixed a problem with Index Fields where the index was not 14814incremented for fields that require multiple writes to the 14815index/data registers (Fields that are wider than the data 14816register.) 14817 14818Fixed a problem with all Field objects where a write could go 14819beyond the end-of-field if the field was larger than the access 14820granularity and therefore required multiple writes to complete the 14821request. An extra write beyond the end of the field could happen 14822inadvertently. 14823 14824Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14825would incorrectly be returned if the width of the Data Register 14826was larger than the specified field access width. 14827 14828Completed fixes for LoadTable() and Unload() and verified their 14829operation. Implemented full support for the "DdbHandle" object 14830throughout the ACPI CA subsystem. 14831 14832Implemented full support for the MADT and ECDT tables in the ACPI 14833CA header files. Even though these tables are not directly 14834consumed by ACPI CA, the header definitions are useful for ACPI 14835device drivers. 14836 14837Integrated resource descriptor fixes posted to the Linux ACPI 14838list. This included checks for minimum descriptor length, and 14839support for trailing NULL strings within descriptors that have 14840optional string elements. 14841 14842Code and Data Size: Current and previous core subsystem library 14843sizes are shown below. These are the code and data sizes for the 14844acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14845these values do not include any ACPI driver or OSPM code. The 14846debug version of the code includes the debug output trace 14847mechanism and has a much larger code and data size. Note that 14848these values will vary depending on the efficiency of the compiler 14849and the compiler options used during generation. 14850 14851 Previous Release (20030918): 14852 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14853 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14854 Current Release: 14855 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14856 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14857 14858 148592) iASL Compiler: 14860 14861Implemented detection of non-ASCII characters within the input 14862source ASL file. This catches attempts to compile binary (AML) 14863files early in the compile, with an informative error message. 14864 14865Fixed a problem where the disassembler would fault if the output 14866filename could not be generated or if the output file could not be 14867opened. 14868 14869---------------------------------------- 1487018 September 2003. Summary of changes for version 20030918: 14871 14872 148731) ACPI CA Core Subsystem: 14874 14875Found and fixed a longstanding problem with the late execution of 14876the various deferred AML opcodes (such as Operation Regions, 14877Buffer Fields, Buffers, and Packages). If the name string 14878specified for the name of the new object placed the object in a 14879scope other than the current scope, the initialization/execution 14880of the opcode failed. The solution to this problem was to 14881implement a mechanism where the late execution of such opcodes 14882does not attempt to lookup/create the name a second time in an 14883incorrect scope. This fixes the "region size computed 14884incorrectly" problem. 14885 14886Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14887Global Lock AE_BAD_PARAMETER error. 14888 14889Fixed several 64-bit issues with prototypes, casting and data 14890types. 14891 14892Removed duplicate prototype from acdisasm.h 14893 14894Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14895 14896Code and Data Size: Current and previous core subsystem library 14897sizes are shown below. These are the code and data sizes for the 14898acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14899these values do not include any ACPI driver or OSPM code. The 14900debug version of the code includes the debug output trace 14901mechanism and has a much larger code and data size. Note that 14902these values will vary depending on the efficiency of the compiler 14903and the compiler options used during generation. 14904 14905 Previous Release: 14906 14907 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14908 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14909 Current Release: 14910 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14911 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14912 14913 149142) Linux: 14915 14916Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14917correct sleep time in seconds. 14918 14919---------------------------------------- 1492014 July 2003. Summary of changes for version 20030619: 14921 149221) ACPI CA Core Subsystem: 14923 14924Parse SSDTs in order discovered, as opposed to reverse order 14925(Hrvoje Habjanic) 14926 14927Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14928Klausner, 14929 Nate Lawson) 14930 14931 149322) Linux: 14933 14934Dynamically allocate SDT list (suggested by Andi Kleen) 14935 14936proc function return value cleanups (Andi Kleen) 14937 14938Correctly handle NMI watchdog during long stalls (Andrew Morton) 14939 14940Make it so acpismp=force works (reported by Andrew Morton) 14941 14942 14943---------------------------------------- 1494419 June 2003. Summary of changes for version 20030619: 14945 149461) ACPI CA Core Subsystem: 14947 14948Fix To/FromBCD, eliminating the need for an arch-specific #define. 14949 14950Do not acquire a semaphore in the S5 shutdown path. 14951 14952Fix ex_digits_needed for 0. (Takayoshi Kochi) 14953 14954Fix sleep/stall code reversal. (Andi Kleen) 14955 14956Revert a change having to do with control method calling 14957semantics. 14958 149592) Linux: 14960 14961acpiphp update (Takayoshi Kochi) 14962 14963Export acpi_disabled for sonypi (Stelian Pop) 14964 14965Mention acpismp=force in config help 14966 14967Re-add acpitable.c and acpismp=force. This improves backwards 14968 14969compatibility and also cleans up the code to a significant degree. 14970 14971Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14972 14973---------------------------------------- 1497422 May 2003. Summary of changes for version 20030522: 14975 149761) ACPI CA Core Subsystem: 14977 14978Found and fixed a reported problem where an AE_NOT_FOUND error 14979occurred occasionally during _BST evaluation. This turned out to 14980be an Owner ID allocation issue where a called method did not get 14981a new ID assigned to it. Eventually, (after 64k calls), the Owner 14982ID UINT16 would wraparound so that the ID would be the same as the 14983caller's and the called method would delete the caller's 14984namespace. 14985 14986Implemented extended error reporting for control methods that are 14987aborted due to a run-time exception. Output includes the exact 14988AML instruction that caused the method abort, a dump of the method 14989locals and arguments at the time of the abort, and a trace of all 14990nested control method calls. 14991 14992Modified the interpreter to allow the creation of buffers of zero 14993length from the AML code. Implemented new code to ensure that no 14994attempt is made to actually allocate a memory buffer (of length 14995zero) - instead, a simple buffer object with a NULL buffer pointer 14996and length zero is created. A warning is no longer issued when 14997the AML attempts to create a zero-length buffer. 14998 14999Implemented a workaround for the "leading asterisk issue" in 15000_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 15001asterisk is automatically removed if present in any HID, UID, or 15002CID strings. The iASL compiler will still flag this asterisk as 15003an error, however. 15004 15005Implemented full support for _CID methods that return a package of 15006multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 15007now additionally returns a device _CID list if present. This 15008required a change to the external interface in order to pass an 15009ACPI_BUFFER object as a parameter since the _CID list is of 15010variable length. 15011 15012Fixed a problem with the new AE_SAME_HANDLER exception where 15013handler initialization code did not know about this exception. 15014 15015Code and Data Size: Current and previous core subsystem library 15016sizes are shown below. These are the code and data sizes for the 15017acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 15018these values do not include any ACPI driver or OSPM code. The 15019debug version of the code includes the debug output trace 15020mechanism and has a much larger code and data size. Note that 15021these values will vary depending on the efficiency of the compiler 15022and the compiler options used during generation. 15023 15024 Previous Release (20030509): 15025 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15026 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15027 Current Release: 15028 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 15029 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 15030 15031 150322) Linux: 15033 15034Fixed a bug in which we would reinitialize the ACPI interrupt 15035after it was already working, thus disabling all ACPI and the IRQs 15036for any other device sharing the interrupt. (Thanks to Stian 15037Jordet) 15038 15039Toshiba driver update (John Belmonte) 15040 15041Return only 0 or 1 for our interrupt handler status (Andrew 15042Morton) 15043 15044 150453) iASL Compiler: 15046 15047Fixed a reported problem where multiple (nested) ElseIf() 15048statements were not handled correctly by the compiler, resulting 15049in incorrect warnings and incorrect AML code. This was a problem 15050in both the ASL parser and the code generator. 15051 15052 150534) Documentation: 15054 15055Added changes to existing interfaces, new exception codes, and new 15056text concerning reference count object management versus garbage 15057collection. 15058 15059---------------------------------------- 1506009 May 2003. Summary of changes for version 20030509. 15061 15062 150631) ACPI CA Core Subsystem: 15064 15065Changed the subsystem initialization sequence to hold off 15066installation of address space handlers until the hardware has been 15067initialized and the system has entered ACPI mode. This is because 15068the installation of space handlers can cause _REG methods to be 15069run. Previously, the _REG methods could potentially be run before 15070ACPI mode was enabled. 15071 15072Fixed some memory leak issues related to address space handler and 15073notify handler installation. There were some problems with the 15074reference count mechanism caused by the fact that the handler 15075objects are shared across several namespace objects. 15076 15077Fixed a reported problem where reference counts within the 15078namespace were not properly updated when named objects created by 15079method execution were deleted. 15080 15081Fixed a reported problem where multiple SSDTs caused a deletion 15082issue during subsystem termination. Restructured the table data 15083structures to simplify the linked lists and the related code. 15084 15085Fixed a problem where the table ID associated with secondary 15086tables (SSDTs) was not being propagated into the namespace objects 15087created by those tables. This would only present a problem for 15088tables that are unloaded at run-time, however. 15089 15090Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 15091type as the length parameter (instead of UINT32). 15092 15093Solved a long-standing problem where an ALREADY_EXISTS error 15094appears on various systems. This problem could happen when there 15095are multiple PCI_Config operation regions under a single PCI root 15096bus. This doesn't happen very frequently, but there are some 15097systems that do this in the ASL. 15098 15099Fixed a reported problem where the internal DeleteNode function 15100was incorrectly handling the case where a namespace node was the 15101first in the parent's child list, and had additional peers (not 15102the only child, but first in the list of children.) 15103 15104Code and Data Size: Current core subsystem library sizes are shown 15105below. These are the code and data sizes for the acpica.lib 15106produced by the Microsoft Visual C++ 6.0 compiler, and these 15107values do not include any ACPI driver or OSPM code. The debug 15108version of the code includes the debug output trace mechanism and 15109has a much larger code and data size. Note that these values will 15110vary depending on the efficiency of the compiler and the compiler 15111options used during generation. 15112 15113 Previous Release 15114 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15115 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15116 Current Release: 15117 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 15118 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 15119 15120 151212) Linux: 15122 15123Allow ":" in OS override string (Ducrot Bruno) 15124 15125Kobject fix (Greg KH) 15126 15127 151283 iASL Compiler/Disassembler: 15129 15130Fixed a problem in the generation of the C source code files (AML 15131is emitted in C source statements for BIOS inclusion) where the 15132Ascii dump that appears within a C comment at the end of each line 15133could cause a compile time error if the AML sequence happens to 15134have an open comment or close comment sequence embedded. 15135 15136 15137---------------------------------------- 1513824 April 2003. Summary of changes for version 20030424. 15139 15140 151411) ACPI CA Core Subsystem: 15142 15143Support for big-endian systems has been implemented. Most of the 15144support has been invisibly added behind big-endian versions of the 15145ACPI_MOVE_* macros. 15146 15147Fixed a problem in AcpiHwDisableGpeBlock() and 15148AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15149low level hardware write routine. The offset parameter was 15150actually eliminated from the low level read/write routines because 15151they had become obsolete. 15152 15153Fixed a problem where a handler object was deleted twice during 15154the removal of a fixed event handler. 15155 15156 151572) Linux: 15158 15159A fix for SMP systems with link devices was contributed by 15160 15161Compaq's Dan Zink. 15162 15163(2.5) Return whether we handled the interrupt in our IRQ handler. 15164(Linux ISRs no longer return void, so we can propagate the handler 15165return value from the ACPI CA core back to the OS.) 15166 15167 15168 151693) Documentation: 15170 15171The ACPI CA Programmer Reference has been updated to reflect new 15172interfaces and changes to existing interfaces. 15173 15174---------------------------------------- 1517528 March 2003. Summary of changes for version 20030328. 15176 151771) ACPI CA Core Subsystem: 15178 15179The GPE Block Device support has been completed. New interfaces 15180are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15181interfaces (enable, disable, clear, getstatus) have been split 15182into separate interfaces for Fixed Events and General Purpose 15183Events (GPEs) in order to support GPE Block Devices properly. 15184 15185Fixed a problem where the error message "Failed to acquire 15186semaphore" would appear during operations on the embedded 15187controller (EC). 15188 15189Code and Data Size: Current core subsystem library sizes are shown 15190below. These are the code and data sizes for the acpica.lib 15191produced by the Microsoft Visual C++ 6.0 compiler, and these 15192values do not include any ACPI driver or OSPM code. The debug 15193version of the code includes the debug output trace mechanism and 15194has a much larger code and data size. Note that these values will 15195vary depending on the efficiency of the compiler and the compiler 15196options used during generation. 15197 15198 Previous Release 15199 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15200 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15201 Current Release: 15202 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15203 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15204 15205 15206---------------------------------------- 1520728 February 2003. Summary of changes for version 20030228. 15208 15209 152101) ACPI CA Core Subsystem: 15211 15212The GPE handling and dispatch code has been completely overhauled 15213in preparation for support of GPE Block Devices (ID ACPI0006). 15214This affects internal data structures and code only; there should 15215be no differences visible externally. One new file has been 15216added, evgpeblk.c 15217 15218The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15219fields that are used to determine the GPE block lengths. The 15220REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15221structures are ignored. This is per the ACPI specification but it 15222isn't very clear. The full 256 Block 0/1 GPEs are now supported 15223(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15224 15225In the SCI interrupt handler, removed the read of the PM1_CONTROL 15226register to look at the SCI_EN bit. On some machines, this read 15227causes an SMI event and greatly slows down SCI events. (This may 15228in fact be the cause of slow battery status response on some 15229systems.) 15230 15231Fixed a problem where a store of a NULL string to a package object 15232could cause the premature deletion of the object. This was seen 15233during execution of the battery _BIF method on some systems, 15234resulting in no battery data being returned. 15235 15236Added AcpiWalkResources interface to simplify parsing of resource 15237lists. 15238 15239Code and Data Size: Current core subsystem library sizes are shown 15240below. These are the code and data sizes for the acpica.lib 15241produced by the Microsoft Visual C++ 6.0 compiler, and these 15242values do not include any ACPI driver or OSPM code. The debug 15243version of the code includes the debug output trace mechanism and 15244has a much larger code and data size. Note that these values will 15245vary depending on the efficiency of the compiler and the compiler 15246options used during generation. 15247 15248 Previous Release 15249 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15250 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15251 Current Release: 15252 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15253 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15254 15255 152562) Linux 15257 15258S3 fixes (Ole Rohne) 15259 15260Update ACPI PHP driver with to use new acpi_walk_resource API 15261(Bjorn Helgaas) 15262 15263Add S4BIOS support (Pavel Machek) 15264 15265Map in entire table before performing checksum (John Stultz) 15266 15267Expand the mem= cmdline to allow the specification of reserved and 15268ACPI DATA blocks (Pavel Machek) 15269 15270Never use ACPI on VISWS 15271 15272Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15273 15274Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15275causing us to think that some systems support C2 when they really 15276don't. 15277 15278Do not count processor objects for non-present CPUs (Thanks to 15279Dominik Brodowski) 15280 15281 152823) iASL Compiler: 15283 15284Fixed a problem where ASL include files could not be found and 15285opened. 15286 15287Added support for the _PDC reserved name. 15288 15289 15290---------------------------------------- 1529122 January 2003. Summary of changes for version 20030122. 15292 15293 152941) ACPI CA Core Subsystem: 15295 15296Added a check for constructs of the form: Store (Local0, Local0) 15297where Local0 is not initialized. Apparently, some BIOS 15298programmers believe that this is a NOOP. Since this store doesn't 15299do anything anyway, the new prototype behavior will ignore this 15300error. This is a case where we can relax the strict checking in 15301the interpreter in the name of compatibility. 15302 15303 153042) Linux 15305 15306The AcpiSrc Source Conversion Utility has been released with the 15307Linux package for the first time. This is the utility that is 15308used to convert the ACPI CA base source code to the Linux version. 15309 15310(Both) Handle P_BLK lengths shorter than 6 more gracefully 15311 15312(Both) Move more headers to include/acpi, and delete an unused 15313header. 15314 15315(Both) Move drivers/acpi/include directory to include/acpi 15316 15317(Both) Boot functions don't use cmdline, so don't pass it around 15318 15319(Both) Remove include of unused header (Adrian Bunk) 15320 15321(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15322the 15323former now also includes the latter, acpiphp.h only needs the one, 15324now. 15325 15326(2.5) Make it possible to select method of bios restoring after S3 15327resume. [=> no more ugly ifdefs] (Pavel Machek) 15328 15329(2.5) Make proc write interfaces work (Pavel Machek) 15330 15331(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15332 15333(2.5) Break out ACPI Perf code into its own module, under cpufreq 15334(Dominik Brodowski) 15335 15336(2.4) S4BIOS support (Ducrot Bruno) 15337 15338(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15339Visinoni) 15340 15341 153423) iASL Compiler: 15343 15344Added support to disassemble SSDT and PSDTs. 15345 15346Implemented support to obtain SSDTs from the Windows registry if 15347available. 15348 15349 15350---------------------------------------- 1535109 January 2003. Summary of changes for version 20030109. 15352 153531) ACPI CA Core Subsystem: 15354 15355Changed the behavior of the internal Buffer-to-String conversion 15356function. The current ACPI specification states that the contents 15357of the buffer are "converted to a string of two-character 15358hexadecimal numbers, each separated by a space". Unfortunately, 15359this definition is not backwards compatible with existing ACPI 1.0 15360implementations (although the behavior was not defined in the ACPI 153611.0 specification). The new behavior simply copies data from the 15362buffer to the string until a null character is found or the end of 15363the buffer is reached. The new String object is always null 15364terminated. This problem was seen during the generation of _BIF 15365battery data where incorrect strings were returned for battery 15366type, etc. This will also require an errata to the ACPI 15367specification. 15368 15369Renamed all instances of NATIVE_UINT and NATIVE_INT to 15370ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15371 15372Copyright in all module headers (both Linux and non-Linux) has be 15373updated to 2003. 15374 15375Code and Data Size: Current core subsystem library sizes are shown 15376below. These are the code and data sizes for the acpica.lib 15377produced by the Microsoft Visual C++ 6.0 compiler, and these 15378values do not include any ACPI driver or OSPM code. The debug 15379version of the code includes the debug output trace mechanism and 15380has a much larger code and data size. Note that these values will 15381vary depending on the efficiency of the compiler and the compiler 15382options used during generation. 15383 15384 Previous Release 15385 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15386 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15387 Current Release: 15388 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15389 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15390 15391 153922) Linux 15393 15394Fixed an oops on module insertion/removal (Matthew Tippett) 15395 15396(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15397 15398(2.5) Replace pr_debug (Randy Dunlap) 15399 15400(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15401 15402(Both) Eliminate spawning of thread from timer callback, in favor 15403of schedule_work() 15404 15405(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15406 15407(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15408 15409(Both) Add missing statics to button.c (Pavel Machek) 15410 15411Several changes have been made to the source code translation 15412utility that generates the Linux Code in order to make the code 15413more "Linux-like": 15414 15415All typedefs on structs and unions have been removed in keeping 15416with the Linux coding style. 15417 15418Removed the non-Linux SourceSafe module revision number from each 15419module header. 15420 15421Completed major overhaul of symbols to be lowercase for linux. 15422Doubled the number of symbols that are lowercase. 15423 15424Fixed a problem where identifiers within procedure headers and 15425within quotes were not fully lower cased (they were left with a 15426starting capital.) 15427 15428Some C macros whose only purpose is to allow the generation of 16- 15429bit code are now completely removed in the Linux code, increasing 15430readability and maintainability. 15431 15432---------------------------------------- 15433 1543412 December 2002. Summary of changes for version 20021212. 15435 15436 154371) ACPI CA Core Subsystem: 15438 15439Fixed a problem where the creation of a zero-length AML Buffer 15440would cause a fault. 15441 15442Fixed a problem where a Buffer object that pointed to a static AML 15443buffer (in an ACPI table) could inadvertently be deleted, causing 15444memory corruption. 15445 15446Fixed a problem where a user buffer (passed in to the external 15447ACPI CA interfaces) could be overwritten if the buffer was too 15448small to complete the operation, causing memory corruption. 15449 15450Fixed a problem in the Buffer-to-String conversion code where a 15451string of length one was always returned, regardless of the size 15452of the input Buffer object. 15453 15454Removed the NATIVE_CHAR data type across the entire source due to 15455lack of need and lack of consistent use. 15456 15457Code and Data Size: Current core subsystem library sizes are shown 15458below. These are the code and data sizes for the acpica.lib 15459produced by the Microsoft Visual C++ 6.0 compiler, and these 15460values do not include any ACPI driver or OSPM code. The debug 15461version of the code includes the debug output trace mechanism and 15462has a much larger code and data size. Note that these values will 15463vary depending on the efficiency of the compiler and the compiler 15464options used during generation. 15465 15466 Previous Release 15467 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15468 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15469 Current Release: 15470 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15471 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15472 15473 15474---------------------------------------- 1547505 December 2002. Summary of changes for version 20021205. 15476 154771) ACPI CA Core Subsystem: 15478 15479Fixed a problem where a store to a String or Buffer object could 15480cause corruption of the DSDT if the object type being stored was 15481the same as the target object type and the length of the object 15482being stored was equal to or smaller than the original (existing) 15483target object. This was seen to cause corruption of battery _BIF 15484buffers if the _BIF method modified the buffer on the fly. 15485 15486Fixed a problem where an internal error was generated if a control 15487method invocation was used in an OperationRegion, Buffer, or 15488Package declaration. This was caused by the deferred parsing of 15489the control method and thus the deferred creation of the internal 15490method object. The solution to this problem was to create the 15491internal method object at the moment the method is encountered in 15492the first pass - so that subsequent references to the method will 15493able to obtain the required parameter count and thus properly 15494parse the method invocation. This problem presented itself as an 15495AE_AML_INTERNAL during the pass 1 parse phase during table load. 15496 15497Fixed a problem where the internal String object copy routine did 15498not always allocate sufficient memory for the target String object 15499and caused memory corruption. This problem was seen to cause 15500"Allocation already present in list!" errors as memory allocation 15501became corrupted. 15502 15503Implemented a new function for the evaluation of namespace objects 15504that allows the specification of the allowable return object 15505types. This simplifies a lot of code that checks for a return 15506object of one or more specific objects returned from the 15507evaluation (such as _STA, etc.) This may become and external 15508function if it would be useful to ACPI-related drivers. 15509 15510Completed another round of prefixing #defines with "ACPI_" for 15511clarity. 15512 15513Completed additional code restructuring to allow more modular 15514linking for iASL compiler and AcpiExec. Several files were split 15515creating new files. New files: nsparse.c dsinit.c evgpe.c 15516 15517Implemented an abort mechanism to terminate an executing control 15518method via the AML debugger. This feature is useful for debugging 15519control methods that depend (wait) for specific hardware 15520responses. 15521 15522Code and Data Size: Current core subsystem library sizes are shown 15523below. These are the code and data sizes for the acpica.lib 15524produced by the Microsoft Visual C++ 6.0 compiler, and these 15525values do not include any ACPI driver or OSPM code. The debug 15526version of the code includes the debug output trace mechanism and 15527has a much larger code and data size. Note that these values will 15528vary depending on the efficiency of the compiler and the compiler 15529options used during generation. 15530 15531 Previous Release 15532 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15533 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15534 Current Release: 15535 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15536 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15537 15538 155392) iASL Compiler/Disassembler 15540 15541Fixed a compiler code generation problem for "Interrupt" Resource 15542Descriptors. If specified in the ASL, the optional "Resource 15543Source Index" and "Resource Source" fields were not inserted into 15544the correct location within the AML resource descriptor, creating 15545an invalid descriptor. 15546 15547Fixed a disassembler problem for "Interrupt" resource descriptors. 15548The optional "Resource Source Index" and "Resource Source" fields 15549were ignored. 15550 15551 15552---------------------------------------- 1555322 November 2002. Summary of changes for version 20021122. 15554 15555 155561) ACPI CA Core Subsystem: 15557 15558Fixed a reported problem where an object stored to a Method Local 15559or Arg was not copied to a new object during the store - the 15560object pointer was simply copied to the Local/Arg. This caused 15561all subsequent operations on the Local/Arg to also affect the 15562original source of the store operation. 15563 15564Fixed a problem where a store operation to a Method Local or Arg 15565was not completed properly if the Local/Arg contained a reference 15566(from RefOf) to a named field. The general-purpose store-to- 15567namespace-node code is now used so that this case is handled 15568automatically. 15569 15570Fixed a problem where the internal object copy routine would cause 15571a protection fault if the object being copied was a Package and 15572contained either 1) a NULL package element or 2) a nested sub- 15573package. 15574 15575Fixed a problem with the GPE initialization that resulted from an 15576ambiguity in the ACPI specification. One section of the 15577specification states that both the address and length of the GPE 15578block must be zero if the block is not supported. Another section 15579implies that only the address need be zero if the block is not 15580supported. The code has been changed so that both the address and 15581the length must be non-zero to indicate a valid GPE block (i.e., 15582if either the address or the length is zero, the GPE block is 15583invalid.) 15584 15585Code and Data Size: Current core subsystem library sizes are shown 15586below. These are the code and data sizes for the acpica.lib 15587produced by the Microsoft Visual C++ 6.0 compiler, and these 15588values do not include any ACPI driver or OSPM code. The debug 15589version of the code includes the debug output trace mechanism and 15590has a much larger code and data size. Note that these values will 15591vary depending on the efficiency of the compiler and the compiler 15592options used during generation. 15593 15594 Previous Release 15595 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15596 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15597 Current Release: 15598 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15599 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15600 15601 156022) Linux 15603 15604Cleaned up EC driver. Exported an external EC read/write 15605interface. By going through this, other drivers (most notably 15606sonypi) will be able to serialize access to the EC. 15607 15608 156093) iASL Compiler/Disassembler 15610 15611Implemented support to optionally generate include files for both 15612ASM and C (the -i switch). This simplifies BIOS development by 15613automatically creating include files that contain external 15614declarations for the symbols that are created within the 15615 15616(optionally generated) ASM and C AML source files. 15617 15618 15619---------------------------------------- 1562015 November 2002. Summary of changes for version 20021115. 15621 156221) ACPI CA Core Subsystem: 15623 15624Fixed a memory leak problem where an error during resolution of 15625 15626method arguments during a method invocation from another method 15627failed to cleanup properly by deleting all successfully resolved 15628argument objects. 15629 15630Fixed a problem where the target of the Index() operator was not 15631correctly constructed if the source object was a package. This 15632problem has not been detected because the use of a target operand 15633with Index() is very rare. 15634 15635Fixed a problem with the Index() operator where an attempt was 15636made to delete the operand objects twice. 15637 15638Fixed a problem where an attempt was made to delete an operand 15639twice during execution of the CondRefOf() operator if the target 15640did not exist. 15641 15642Implemented the first of perhaps several internal create object 15643functions that create and initialize a specific object type. This 15644consolidates duplicated code wherever the object is created, thus 15645shrinking the size of the subsystem. 15646 15647Implemented improved debug/error messages for errors that occur 15648during nested method invocations. All executing method pathnames 15649are displayed (with the error) as the call stack is unwound - thus 15650simplifying debug. 15651 15652Fixed a problem introduced in the 10/02 release that caused 15653premature deletion of a buffer object if a buffer was used as an 15654ASL operand where an integer operand is required (Thus causing an 15655implicit object conversion from Buffer to Integer.) The change in 15656the 10/02 release was attempting to fix a memory leak (albeit 15657incorrectly.) 15658 15659Code and Data Size: Current core subsystem library sizes are shown 15660below. These are the code and data sizes for the acpica.lib 15661produced by the Microsoft Visual C++ 6.0 compiler, and these 15662values do not include any ACPI driver or OSPM code. The debug 15663version of the code includes the debug output trace mechanism and 15664has a much larger code and data size. Note that these values will 15665vary depending on the efficiency of the compiler and the compiler 15666options used during generation. 15667 15668 Previous Release 15669 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15670 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15671 Current Release: 15672 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15673 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15674 15675 156762) Linux 15677 15678Changed the implementation of the ACPI semaphores to use down() 15679instead of down_interruptable(). It is important that the 15680execution of ACPI control methods not be interrupted by signals. 15681Methods must run to completion, or the system may be left in an 15682unknown/unstable state. 15683 15684Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15685(Shawn Starr) 15686 15687 156883) iASL Compiler/Disassembler 15689 15690 15691Changed the default location of output files. All output files 15692are now placed in the current directory by default instead of in 15693the directory of the source file. This change may affect some 15694existing makefiles, but it brings the behavior of the compiler in 15695line with other similar tools. The location of the output files 15696can be overridden with the -p command line switch. 15697 15698 15699---------------------------------------- 1570011 November 2002. Summary of changes for version 20021111. 15701 15702 157030) ACPI Specification 2.0B is released and is now available at: 15704http://www.acpi.info/index.html 15705 15706 157071) ACPI CA Core Subsystem: 15708 15709Implemented support for the ACPI 2.0 SMBus Operation Regions. 15710This includes the early detection and handoff of the request to 15711the SMBus region handler (avoiding all of the complex field 15712support code), and support for the bidirectional return packet 15713from an SMBus write operation. This paves the way for the 15714development of SMBus drivers in each host operating system. 15715 15716Fixed a problem where the semaphore WAIT_FOREVER constant was 15717defined as 32 bits, but must be 16 bits according to the ACPI 15718specification. This had the side effect of causing ASL 15719Mutex/Event timeouts even though the ASL code requested a wait 15720forever. Changed all internal references to the ACPI timeout 15721parameter to 16 bits to prevent future problems. Changed the name 15722of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15723 15724Code and Data Size: Current core subsystem library sizes are shown 15725below. These are the code and data sizes for the acpica.lib 15726produced by the Microsoft Visual C++ 6.0 compiler, and these 15727values do not include any ACPI driver or OSPM code. The debug 15728version of the code includes the debug output trace mechanism and 15729has a much larger code and data size. Note that these values will 15730vary depending on the efficiency of the compiler and the compiler 15731options used during generation. 15732 15733 Previous Release 15734 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15735 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15736 Current Release: 15737 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15738 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15739 15740 157412) Linux 15742 15743Module loading/unloading fixes (John Cagle) 15744 15745 157463) iASL Compiler/Disassembler 15747 15748Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15749 15750Implemented support for the disassembly of all SMBus protocol 15751keywords (SMBQuick, SMBWord, etc.) 15752 15753---------------------------------------- 1575401 November 2002. Summary of changes for version 20021101. 15755 15756 157571) ACPI CA Core Subsystem: 15758 15759Fixed a problem where platforms that have a GPE1 block but no GPE0 15760block were not handled correctly. This resulted in a "GPE 15761overlap" error message. GPE0 is no longer required. 15762 15763Removed code added in the previous release that inserted nodes 15764into the namespace in alphabetical order. This caused some side- 15765effects on various machines. The root cause of the problem is 15766still under investigation since in theory, the internal ordering 15767of the namespace nodes should not matter. 15768 15769 15770Enhanced error reporting for the case where a named object is not 15771found during control method execution. The full ACPI namepath 15772(name reference) of the object that was not found is displayed in 15773this case. 15774 15775Note: as a result of the overhaul of the namespace object types in 15776the previous release, the namespace nodes for the predefined 15777scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15778instead of ACPI_TYPE_ANY. This simplifies the namespace 15779management code but may affect code that walks the namespace tree 15780looking for specific object types. 15781 15782Code and Data Size: Current core subsystem library sizes are shown 15783below. These are the code and data sizes for the acpica.lib 15784produced by the Microsoft Visual C++ 6.0 compiler, and these 15785values do not include any ACPI driver or OSPM code. The debug 15786version of the code includes the debug output trace mechanism and 15787has a much larger code and data size. Note that these values will 15788vary depending on the efficiency of the compiler and the compiler 15789options used during generation. 15790 15791 Previous Release 15792 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15793 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15794 Current Release: 15795 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15796 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15797 15798 157992) Linux 15800 15801Fixed a problem introduced in the previous release where the 15802Processor and Thermal objects were not recognized and installed in 15803/proc. This was related to the scope type change described above. 15804 15805 158063) iASL Compiler/Disassembler 15807 15808Implemented the -g option to get all of the required ACPI tables 15809from the registry and save them to files (Windows version of the 15810compiler only.) The required tables are the FADT, FACS, and DSDT. 15811 15812Added ACPI table checksum validation during table disassembly in 15813order to catch corrupted tables. 15814 15815 15816---------------------------------------- 1581722 October 2002. Summary of changes for version 20021022. 15818 158191) ACPI CA Core Subsystem: 15820 15821Implemented a restriction on the Scope operator that the target 15822must already exist in the namespace at the time the operator is 15823encountered (during table load or method execution). In other 15824words, forward references are not allowed and Scope() cannot 15825create a new object. This changes the previous behavior where the 15826interpreter would create the name if not found. This new behavior 15827correctly enables the search-to-root algorithm during namespace 15828lookup of the target name. Because of this upsearch, this fixes 15829the known Compaq _SB_.OKEC problem and makes both the AML 15830interpreter and iASL compiler compatible with other ACPI 15831implementations. 15832 15833Completed a major overhaul of the internal ACPI object types for 15834the ACPI Namespace and the associated operand objects. Many of 15835these types had become obsolete with the introduction of the two- 15836pass namespace load. This cleanup simplifies the code and makes 15837the entire namespace load mechanism much clearer and easier to 15838understand. 15839 15840Improved debug output for tracking scope opening/closing to help 15841diagnose scoping issues. The old scope name as well as the new 15842scope name are displayed. Also improved error messages for 15843problems with ASL Mutex objects and error messages for GPE 15844problems. 15845 15846Cleaned up the namespace dump code, removed obsolete code. 15847 15848All string output (for all namespace/object dumps) now uses the 15849common ACPI string output procedure which handles escapes properly 15850and does not emit non-printable characters. 15851 15852Fixed some issues with constants in the 64-bit version of the 15853local C library (utclib.c) 15854 15855 158562) Linux 15857 15858EC Driver: No longer attempts to acquire the Global Lock at 15859interrupt level. 15860 15861 158623) iASL Compiler/Disassembler 15863 15864Implemented ACPI 2.0B grammar change that disallows all Type 1 and 158652 opcodes outside of a control method. This means that the 15866"executable" operators (versus the "namespace" operators) cannot 15867be used at the table level; they can only be used within a control 15868method. 15869 15870Implemented the restriction on the Scope() operator where the 15871target must already exist in the namespace at the time the 15872operator is encountered (during ASL compilation). In other words, 15873forward references are not allowed and Scope() cannot create a new 15874object. This makes the iASL compiler compatible with other ACPI 15875implementations and makes the Scope() implementation adhere to the 15876ACPI specification. 15877 15878Fixed a problem where namepath optimization for the Alias operator 15879was optimizing the wrong path (of the two namepaths.) This caused 15880a "Missing alias link" error message. 15881 15882Fixed a problem where an "unknown reserved name" warning could be 15883incorrectly generated for names like "_SB" when the trailing 15884underscore is not used in the original ASL. 15885 15886Fixed a problem where the reserved name check did not handle 15887NamePaths with multiple NameSegs correctly. The first nameseg of 15888the NamePath was examined instead of the last NameSeg. 15889 15890 15891---------------------------------------- 15892 1589302 October 2002. Summary of changes for this release. 15894 15895 158961) ACPI CA Core Subsystem version 20021002: 15897 15898Fixed a problem where a store/copy of a string to an existing 15899string did not always set the string length properly in the String 15900object. 15901 15902Fixed a reported problem with the ToString operator where the 15903behavior was identical to the ToHexString operator instead of just 15904simply converting a raw buffer to a string data type. 15905 15906Fixed a problem where CopyObject and the other "explicit" 15907conversion operators were not updating the internal namespace node 15908type as part of the store operation. 15909 15910Fixed a memory leak during implicit source operand conversion 15911where the original object was not deleted if it was converted to a 15912new object of a different type. 15913 15914Enhanced error messages for all problems associated with namespace 15915lookups. Common procedure generates and prints the lookup name as 15916well as the formatted status. 15917 15918Completed implementation of a new design for the Alias support 15919within the namespace. The existing design did not handle the case 15920where a new object was assigned to one of the two names due to the 15921use of an explicit conversion operator, resulting in the two names 15922pointing to two different objects. The new design simply points 15923the Alias name to the original name node - not to the object. 15924This results in a level of indirection that must be handled in the 15925name resolution mechanism. 15926 15927Code and Data Size: Current core subsystem library sizes are shown 15928below. These are the code and data sizes for the acpica.lib 15929produced by the Microsoft Visual C++ 6.0 compiler, and these 15930values do not include any ACPI driver or OSPM code. The debug 15931version of the code includes the debug output trace mechanism and 15932has a larger code and data size. Note that these values will vary 15933depending on the efficiency of the compiler and the compiler 15934options used during generation. 15935 15936 Previous Release 15937 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15938 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15939 Current Release: 15940 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15941 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15942 15943 159442) Linux 15945 15946Initialize thermal driver's timer before it is used. (Knut 15947Neumann) 15948 15949Allow handling negative celsius values. (Kochi Takayoshi) 15950 15951Fix thermal management and make trip points. R/W (Pavel Machek) 15952 15953Fix /proc/acpi/sleep. (P. Christeas) 15954 15955IA64 fixes. (David Mosberger) 15956 15957Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15958 15959Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15960Brodowski) 15961 15962 159633) iASL Compiler/Disassembler 15964 15965Clarified some warning/error messages. 15966 15967 15968---------------------------------------- 1596918 September 2002. Summary of changes for this release. 15970 15971 159721) ACPI CA Core Subsystem version 20020918: 15973 15974Fixed a reported problem with reference chaining (via the Index() 15975and RefOf() operators) in the ObjectType() and SizeOf() operators. 15976The definition of these operators includes the dereferencing of 15977all chained references to return information on the base object. 15978 15979Fixed a problem with stores to indexed package elements - the 15980existing code would not complete the store if an "implicit 15981conversion" was not performed. In other words, if the existing 15982object (package element) was to be replaced completely, the code 15983didn't handle this case. 15984 15985Relaxed typechecking on the ASL "Scope" operator to allow the 15986target name to refer to an object of type Integer, String, or 15987Buffer, in addition to the scoping object types (Device, 15988predefined Scopes, Processor, PowerResource, and ThermalZone.) 15989This allows existing AML code that has workarounds for a bug in 15990Windows to function properly. A warning is issued, however. This 15991affects both the AML interpreter and the iASL compiler. Below is 15992an example of this type of ASL code: 15993 15994 Name(DEB,0x00) 15995 Scope(DEB) 15996 { 15997 15998Fixed some reported problems with 64-bit integer support in the 15999local implementation of C library functions (clib.c) 16000 16001 160022) Linux 16003 16004Use ACPI fix map region instead of IOAPIC region, since it is 16005undefined in non-SMP. 16006 16007Ensure that the SCI has the proper polarity and trigger, even on 16008systems that do not have an interrupt override entry in the MADT. 16009 160102.5 big driver reorganization (Pat Mochel) 16011 16012Use early table mapping code from acpitable.c (Andi Kleen) 16013 16014New blacklist entries (Andi Kleen) 16015 16016Blacklist improvements. Split blacklist code out into a separate 16017file. Move checking the blacklist to very early. Previously, we 16018would use ACPI tables, and then halfway through init, check the 16019blacklist -- too late. Now, it's early enough to completely fall- 16020back to non-ACPI. 16021 16022 160233) iASL Compiler/Disassembler version 20020918: 16024 16025Fixed a problem where the typechecking code didn't know that an 16026alias could point to a method. In other words, aliases were not 16027being dereferenced during typechecking. 16028 16029 16030---------------------------------------- 1603129 August 2002. Summary of changes for this release. 16032 160331) ACPI CA Core Subsystem Version 20020829: 16034 16035If the target of a Scope() operator already exists, it must be an 16036object type that actually opens a scope -- such as a Device, 16037Method, Scope, etc. This is a fatal runtime error. Similar error 16038check has been added to the iASL compiler also. 16039 16040Tightened up the namespace load to disallow multiple names in the 16041same scope. This previously was allowed if both objects were of 16042the same type. (i.e., a lookup was the same as entering a new 16043name). 16044 16045 160462) Linux 16047 16048Ensure that the ACPI interrupt has the proper trigger and 16049polarity. 16050 16051local_irq_disable is extraneous. (Matthew Wilcox) 16052 16053Make "acpi=off" actually do what it says, and not use the ACPI 16054interpreter *or* the tables. 16055 16056Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 16057Takayoshi) 16058 16059 160603) iASL Compiler/Disassembler Version 20020829: 16061 16062Implemented namepath optimization for name declarations. For 16063example, a declaration like "Method (\_SB_.ABCD)" would get 16064optimized to "Method (ABCD)" if the declaration is within the 16065\_SB_ scope. This optimization is in addition to the named 16066reference path optimization first released in the previous 16067version. This would seem to complete all possible optimizations 16068for namepaths within the ASL/AML. 16069 16070If the target of a Scope() operator already exists, it must be an 16071object type that actually opens a scope -- such as a Device, 16072Method, Scope, etc. 16073 16074Implemented a check and warning for unreachable code in the same 16075block below a Return() statement. 16076 16077Fixed a problem where the listing file was not generated if the 16078compiler aborted if the maximum error count was exceeded (200). 16079 16080Fixed a problem where the typechecking of method return values was 16081broken. This includes the check for a return value when the 16082method is invoked as a TermArg (a return value is expected.) 16083 16084Fixed a reported problem where EOF conditions during a quoted 16085string or comment caused a fault. 16086 16087 16088---------------------------------------- 1608915 August 2002. Summary of changes for this release. 16090 160911) ACPI CA Core Subsystem Version 20020815: 16092 16093Fixed a reported problem where a Store to a method argument that 16094contains a reference did not perform the indirect store correctly. 16095This problem was created during the conversion to the new 16096reference object model - the indirect store to a method argument 16097code was not updated to reflect the new model. 16098 16099Reworked the ACPI mode change code to better conform to ACPI 2.0, 16100handle corner cases, and improve code legibility (Kochi Takayoshi) 16101 16102Fixed a problem with the pathname parsing for the carat (^) 16103prefix. The heavy use of the carat operator by the new namepath 16104optimization in the iASL compiler uncovered a problem with the AML 16105interpreter handling of this prefix. In the case where one or 16106more carats precede a single nameseg, the nameseg was treated as 16107standalone and the search rule (to root) was inadvertently 16108applied. This could cause both the iASL compiler and the 16109interpreter to find the wrong object or to miss the error that 16110should occur if the object does not exist at that exact pathname. 16111 16112Found and fixed the problem where the HP Pavilion DSDT would not 16113load. This was a relatively minor tweak to the table loading code 16114(a problem caused by the unexpected encounter with a method 16115invocation not within a control method), but it does not solve the 16116overall issue of the execution of AML code at the table level. 16117This investigation is still ongoing. 16118 16119Code and Data Size: Current core subsystem library sizes are shown 16120below. These are the code and data sizes for the acpica.lib 16121produced by the Microsoft Visual C++ 6.0 compiler, and these 16122values do not include any ACPI driver or OSPM code. The debug 16123version of the code includes the debug output trace mechanism and 16124has a larger code and data size. Note that these values will vary 16125depending on the efficiency of the compiler and the compiler 16126options used during generation. 16127 16128 Previous Release 16129 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16130 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16131 Current Release: 16132 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 16133 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16134 16135 161362) Linux 16137 16138Remove redundant slab.h include (Brad Hards) 16139 16140Fix several bugs in thermal.c (Herbert Nachtnebel) 16141 16142Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16143 16144Change acpi_system_suspend to use updated irq functions (Pavel 16145Machek) 16146 16147Export acpi_get_firmware_table (Matthew Wilcox) 16148 16149Use proper root proc entry for ACPI (Kochi Takayoshi) 16150 16151Fix early-boot table parsing (Bjorn Helgaas) 16152 16153 161543) iASL Compiler/Disassembler 16155 16156Reworked the compiler options to make them more consistent and to 16157use two-letter options where appropriate. We were running out of 16158sensible letters. This may break some makefiles, so check the 16159current options list by invoking the compiler with no parameters. 16160 16161Completed the design and implementation of the ASL namepath 16162optimization option for the compiler. This option optimizes all 16163references to named objects to the shortest possible path. The 16164first attempt tries to utilize a single nameseg (4 characters) and 16165the "search-to-root" algorithm used by the interpreter. If that 16166cannot be used (because either the name is not in the search path 16167or there is a conflict with another object with the same name), 16168the pathname is optimized using the carat prefix (usually a 16169shorter string than specifying the entire path from the root.) 16170 16171Implemented support to obtain the DSDT from the Windows registry 16172(when the disassembly option is specified with no input file). 16173Added this code as the implementation for AcpiOsTableOverride in 16174the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16175utility) to scan memory for the DSDT to the AcpiOsTableOverride 16176function in the DOS OSL to make the disassembler truly OS 16177independent. 16178 16179Implemented a new option to disassemble and compile in one step. 16180When used without an input filename, this option will grab the 16181DSDT from the local machine, disassemble it, and compile it in one 16182step. 16183 16184Added a warning message for invalid escapes (a backslash followed 16185by any character other than the allowable escapes). This catches 16186the quoted string error "\_SB_" (which should be "\\_SB_" ). 16187 16188Also, there are numerous instances in the ACPI specification where 16189this error occurs. 16190 16191Added a compiler option to disable all optimizations. This is 16192basically the "compatibility mode" because by using this option, 16193the AML code will come out exactly the same as other ASL 16194compilers. 16195 16196Added error messages for incorrectly ordered dependent resource 16197functions. This includes: missing EndDependentFn macro at end of 16198dependent resource list, nested dependent function macros (both 16199start and end), and missing StartDependentFn macro. These are 16200common errors that should be caught at compile time. 16201 16202Implemented _OSI support for the disassembler and compiler. _OSI 16203must be included in the namespace for proper disassembly (because 16204the disassembler must know the number of arguments.) 16205 16206Added an "optimization" message type that is optional (off by 16207default). This message is used for all optimizations - including 16208constant folding, integer optimization, and namepath optimization. 16209 16210---------------------------------------- 1621125 July 2002. Summary of changes for this release. 16212 16213 162141) ACPI CA Core Subsystem Version 20020725: 16215 16216The AML Disassembler has been enhanced to produce compilable ASL 16217code and has been integrated into the iASL compiler (see below) as 16218well as the single-step disassembly for the AML debugger and the 16219disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16220resource templates and macros are fully supported. The 16221disassembler has been tested on over 30 different AML files, 16222producing identical AML when the resulting disassembled ASL file 16223is recompiled with the same ASL compiler. 16224 16225Modified the Resource Manager to allow zero interrupts and zero 16226dma channels during the GetCurrentResources call. This was 16227causing problems on some platforms. 16228 16229Added the AcpiOsRedirectOutput interface to the OSL to simplify 16230output redirection for the AcpiOsPrintf and AcpiOsVprintf 16231interfaces. 16232 16233Code and Data Size: Current core subsystem library sizes are shown 16234below. These are the code and data sizes for the acpica.lib 16235produced by the Microsoft Visual C++ 6.0 compiler, and these 16236values do not include any ACPI driver or OSPM code. The debug 16237version of the code includes the debug output trace mechanism and 16238has a larger code and data size. Note that these values will vary 16239depending on the efficiency of the compiler and the compiler 16240options used during generation. 16241 16242 Previous Release 16243 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16244 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16245 Current Release: 16246 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16247 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16248 16249 162502) Linux 16251 16252Fixed a panic in the EC driver (Dominik Brodowski) 16253 16254Implemented checksum of the R/XSDT itself during Linux table scan 16255(Richard Schaal) 16256 16257 162583) iASL compiler 16259 16260The AML disassembler is integrated into the compiler. The "-d" 16261option invokes the disassembler to completely disassemble an 16262input AML file, producing as output a text ASL file with the 16263extension ".dsl" (to avoid name collisions with existing .asl 16264source files.) A future enhancement will allow the disassembler 16265to obtain the BIOS DSDT from the registry under Windows. 16266 16267Fixed a problem with the VendorShort and VendorLong resource 16268descriptors where an invalid AML sequence was created. 16269 16270Implemented a fix for BufferData term in the ASL parser. It was 16271inadvertently defined twice, allowing invalid syntax to pass and 16272causing reduction conflicts. 16273 16274Fixed a problem where the Ones opcode could get converted to a 16275value of zero if "Ones" was used where a byte, word or dword value 16276was expected. The 64-bit value is now truncated to the correct 16277size with the correct value. 16278 16279 16280 16281---------------------------------------- 1628202 July 2002. Summary of changes for this release. 16283 16284 162851) ACPI CA Core Subsystem Version 20020702: 16286 16287The Table Manager code has been restructured to add several new 16288features. Tables that are not required by the core subsystem 16289(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16290validated in any way and are returned from AcpiGetFirmwareTable if 16291requested. The AcpiOsTableOverride interface is now called for 16292each table that is loaded by the subsystem in order to allow the 16293host to override any table it chooses. Previously, only the DSDT 16294could be overridden. Added one new files, tbrsdt.c and 16295tbgetall.c. 16296 16297Fixed a problem with the conversion of internal package objects to 16298external objects (when a package is returned from a control 16299method.) The return buffer length was set to zero instead of the 16300proper length of the package object. 16301 16302Fixed a reported problem with the use of the RefOf and DeRefOf 16303operators when passing reference arguments to control methods. A 16304new type of Reference object is used internally for references 16305produced by the RefOf operator. 16306 16307Added additional error messages in the Resource Manager to explain 16308AE_BAD_DATA errors when they occur during resource parsing. 16309 16310Split the AcpiEnableSubsystem into two primitives to enable a 16311finer granularity initialization sequence. These two calls should 16312be called in this order: AcpiEnableSubsystem (flags), 16313AcpiInitializeObjects (flags). The flags parameter remains the 16314same. 16315 16316 163172) Linux 16318 16319Updated the ACPI utilities module to understand the new style of 16320fully resolved package objects that are now returned from the core 16321subsystem. This eliminates errors of the form: 16322 16323 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16324 acpi_utils-0430 [145] acpi_evaluate_reference: 16325 Invalid element in package (not a device reference) 16326 16327The method evaluation utility uses the new buffer allocation 16328scheme instead of calling AcpiEvaluate Object twice. 16329 16330Added support for ECDT. This allows the use of the Embedded 16331 16332Controller before the namespace has been fully initialized, which 16333is necessary for ACPI 2.0 support, and for some laptops to 16334initialize properly. (Laptops using ECDT are still rare, so only 16335limited testing was performed of the added functionality.) 16336 16337Fixed memory leaks in the EC driver. 16338 16339Eliminated a brittle code structure in acpi_bus_init(). 16340 16341Eliminated the acpi_evaluate() helper function in utils.c. It is 16342no longer needed since acpi_evaluate_object can optionally 16343allocate memory for the return object. 16344 16345Implemented fix for keyboard hang when getting battery readings on 16346some systems (Stephen White) 16347 16348PCI IRQ routing update (Dominik Brodowski) 16349 16350Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16351support 16352 16353---------------------------------------- 1635411 June 2002. Summary of changes for this release. 16355 16356 163571) ACPI CA Core Subsystem Version 20020611: 16358 16359Fixed a reported problem where constants such as Zero and One 16360appearing within _PRT packages were not handled correctly within 16361the resource manager code. Originally reported against the ASL 16362compiler because the code generator now optimizes integers to 16363their minimal AML representation (i.e. AML constants if possible.) 16364The _PRT code now handles all AML constant opcodes correctly 16365(Zero, One, Ones, Revision). 16366 16367Fixed a problem with the Concatenate operator in the AML 16368interpreter where a buffer result object was incorrectly marked as 16369not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16370 16371All package sub-objects are now fully resolved before they are 16372returned from the external ACPI interfaces. This means that name 16373strings are resolved to object handles, and constant operators 16374(Zero, One, Ones, Revision) are resolved to Integers. 16375 16376Implemented immediate resolution of the AML Constant opcodes 16377(Zero, One, Ones, Revision) to Integer objects upon detection 16378within the AML stream. This has simplified and reduced the 16379generated code size of the subsystem by eliminating about 10 16380switch statements for these constants (which previously were 16381contained in Reference objects.) The complicating issues are that 16382the Zero opcode is used as a "placeholder" for unspecified 16383optional target operands and stores to constants are defined to be 16384no-ops. 16385 16386Code and Data Size: Current core subsystem library sizes are shown 16387below. These are the code and data sizes for the acpica.lib 16388produced by the Microsoft Visual C++ 6.0 compiler, and these 16389values do not include any ACPI driver or OSPM code. The debug 16390version of the code includes the debug output trace mechanism and 16391has a larger code and data size. Note that these values will vary 16392depending on the efficiency of the compiler and the compiler 16393options used during generation. 16394 16395 Previous Release 16396 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16397 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16398 Current Release: 16399 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16400 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16401 16402 164032) Linux 16404 16405 16406Added preliminary support for obtaining _TRA data for PCI root 16407bridges (Bjorn Helgaas). 16408 16409 164103) iASL Compiler Version X2046: 16411 16412Fixed a problem where the "_DDN" reserved name was defined to be a 16413control method with one argument. There are no arguments, and 16414_DDN does not have to be a control method. 16415 16416Fixed a problem with the Linux version of the compiler where the 16417source lines printed with error messages were the wrong lines. 16418This turned out to be the "LF versus CR/LF" difference between 16419Windows and Unix. This appears to be the longstanding issue 16420concerning listing output and error messages. 16421 16422Fixed a problem with the Linux version of compiler where opcode 16423names within error messages were wrong. This was caused by a 16424slight difference in the output of the Flex tool on Linux versus 16425Windows. 16426 16427Fixed a problem with the Linux compiler where the hex output files 16428contained some garbage data caused by an internal buffer overrun. 16429 16430 16431---------------------------------------- 1643217 May 2002. Summary of changes for this release. 16433 16434 164351) ACPI CA Core Subsystem Version 20020517: 16436 16437Implemented a workaround to an BIOS bug discovered on the HP 16438OmniBook where the FADT revision number and the table size are 16439inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16440behavior is to fallback to using only the ACPI 1.0 fields of the 16441FADT if the table is too small to be a ACPI 2.0 table as claimed 16442by the revision number. Although this is a BIOS bug, this is a 16443case where the workaround is simple enough and with no side 16444effects, so it seemed prudent to add it. A warning message is 16445issued, however. 16446 16447Implemented minimum size checks for the fixed-length ACPI tables - 16448- the FADT and FACS, as well as consistency checks between the 16449revision number and the table size. 16450 16451Fixed a reported problem in the table override support where the 16452new table pointer was incorrectly treated as a physical address 16453instead of a logical address. 16454 16455Eliminated the use of the AE_AML_ERROR exception and replaced it 16456with more descriptive codes. 16457 16458Fixed a problem where an exception would occur if an ASL Field was 16459defined with no named Field Units underneath it (used by some 16460index fields). 16461 16462Code and Data Size: Current core subsystem library sizes are shown 16463below. These are the code and data sizes for the acpica.lib 16464produced by the Microsoft Visual C++ 6.0 compiler, and these 16465values do not include any ACPI driver or OSPM code. The debug 16466version of the code includes the debug output trace mechanism and 16467has a larger code and data size. Note that these values will vary 16468depending on the efficiency of the compiler and the compiler 16469options used during generation. 16470 16471 Previous Release 16472 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16473 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16474 Current Release: 16475 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16476 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16477 16478 16479 164802) Linux 16481 16482Much work done on ACPI init (MADT and PCI IRQ routing support). 16483(Paul D. and Dominik Brodowski) 16484 16485Fix PCI IRQ-related panic on boot (Sam Revitch) 16486 16487Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16488 16489Fix "MHz" typo (Dominik Brodowski) 16490 16491Fix RTC year 2000 issue (Dominik Brodowski) 16492 16493Preclude multiple button proc entries (Eric Brunet) 16494 16495Moved arch-specific code out of include/platform/aclinux.h 16496 164973) iASL Compiler Version X2044: 16498 16499Implemented error checking for the string used in the EISAID macro 16500(Usually used in the definition of the _HID object.) The code now 16501strictly enforces the PnP format - exactly 7 characters, 3 16502uppercase letters and 4 hex digits. 16503 16504If a raw string is used in the definition of the _HID object 16505(instead of the EISAID macro), the string must contain all 16506alphanumeric characters (e.g., "*PNP0011" is not allowed because 16507of the asterisk.) 16508 16509Implemented checking for invalid use of ACPI reserved names for 16510most of the name creation operators (Name, Device, Event, Mutex, 16511OperationRegion, PowerResource, Processor, and ThermalZone.) 16512Previously, this check was only performed for control methods. 16513 16514Implemented an additional check on the Name operator to emit an 16515error if a reserved name that must be implemented in ASL as a 16516control method is used. We know that a reserved name must be a 16517method if it is defined with input arguments. 16518 16519The warning emitted when a namespace object reference is not found 16520during the cross reference phase has been changed into an error. 16521The "External" directive should be used for names defined in other 16522modules. 16523 16524 165254) Tools and Utilities 16526 16527The 16-bit tools (adump16 and aexec16) have been regenerated and 16528tested. 16529 16530Fixed a problem with the output of both acpidump and adump16 where 16531the indentation of closing parentheses and brackets was not 16532 16533aligned properly with the parent block. 16534 16535 16536---------------------------------------- 1653703 May 2002. Summary of changes for this release. 16538 16539 165401) ACPI CA Core Subsystem Version 20020503: 16541 16542Added support a new OSL interface that allows the host operating 16543 16544system software to override the DSDT found in the firmware - 16545AcpiOsTableOverride. With this interface, the OSL can examine the 16546version of the firmware DSDT and replace it with a different one 16547if desired. 16548 16549Added new external interfaces for accessing ACPI registers from 16550device drivers and other system software - AcpiGetRegister and 16551AcpiSetRegister. This was simply an externalization of the 16552existing AcpiHwBitRegister interfaces. 16553 16554Fixed a regression introduced in the previous build where the 16555ASL/AML CreateField operator always returned an error, 16556"destination must be a NS Node". 16557 16558Extended the maximum time (before failure) to successfully enable 16559ACPI mode to 3 seconds. 16560 16561Code and Data Size: Current core subsystem library sizes are shown 16562below. These are the code and data sizes for the acpica.lib 16563produced by the Microsoft Visual C++ 6.0 compiler, and these 16564values do not include any ACPI driver or OSPM code. The debug 16565version of the code includes the debug output trace mechanism and 16566has a larger code and data size. Note that these values will vary 16567depending on the efficiency of the compiler and the compiler 16568options used during generation. 16569 16570 Previous Release 16571 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16572 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16573 Current Release: 16574 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16575 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16576 16577 165782) Linux 16579 16580Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 16581free. While 3 out of 4 of our in-house systems work fine, the last 16582one still hangs when testing the LAPIC timer. 16583 16584Renamed many files in 2.5 kernel release to omit "acpi_" from the 16585name. 16586 16587Added warning on boot for Presario 711FR. 16588 16589Sleep improvements (Pavel Machek) 16590 16591ACPI can now be built without CONFIG_PCI enabled. 16592 16593IA64: Fixed memory map functions (JI Lee) 16594 16595 165963) iASL Compiler Version X2043: 16597 16598Added support to allow the compiler to be integrated into the MS 16599VC++ development environment for one-button compilation of single 16600files or entire projects -- with error-to-source-line mapping. 16601 16602Implemented support for compile-time constant folding for the 16603Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16604specification. This allows the ASL writer to use expressions 16605instead of Integer/Buffer/String constants in terms that must 16606evaluate to constants at compile time and will also simplify the 16607emitted AML in any such sub-expressions that can be folded 16608(evaluated at compile-time.) This increases the size of the 16609compiler significantly because a portion of the ACPI CA AML 16610interpreter is included within the compiler in order to pre- 16611evaluate constant expressions. 16612 16613 16614Fixed a problem with the "Unicode" ASL macro that caused the 16615compiler to fault. (This macro is used in conjunction with the 16616_STR reserved name.) 16617 16618Implemented an AML opcode optimization to use the Zero, One, and 16619Ones opcodes where possible to further reduce the size of integer 16620constants and thus reduce the overall size of the generated AML 16621code. 16622 16623Implemented error checking for new reserved terms for ACPI version 166242.0A. 16625 16626Implemented the -qr option to display the current list of ACPI 16627reserved names known to the compiler. 16628 16629Implemented the -qc option to display the current list of ASL 16630operators that are allowed within constant expressions and can 16631therefore be folded at compile time if the operands are constants. 16632 16633 166344) Documentation 16635 16636Updated the Programmer's Reference for new interfaces, data types, 16637and memory allocation model options. 16638 16639Updated the iASL Compiler User Reference to apply new format and 16640add information about new features and options. 16641 16642---------------------------------------- 1664319 April 2002. Summary of changes for this release. 16644 166451) ACPI CA Core Subsystem Version 20020419: 16646 16647The source code base for the Core Subsystem has been completely 16648cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16649versions. The Lint option files used are included in the 16650/acpi/generate/lint directory. 16651 16652Implemented enhanced status/error checking across the entire 16653Hardware manager subsystem. Any hardware errors (reported from 16654the OSL) are now bubbled up and will abort a running control 16655method. 16656 16657 16658Fixed a problem where the per-ACPI-table integer width (32 or 64) 16659was stored only with control method nodes, causing a fault when 16660non-control method code was executed during table loading. The 16661solution implemented uses a global variable to indicate table 16662width across the entire ACPI subsystem. Therefore, ACPI CA does 16663not support mixed integer widths across different ACPI tables 16664(DSDT, SSDT). 16665 16666Fixed a problem where NULL extended fields (X fields) in an ACPI 166672.0 ACPI FADT caused the table load to fail. Although the 16668existing ACPI specification is a bit fuzzy on this topic, the new 16669behavior is to fall back on a ACPI 1.0 field if the corresponding 16670ACPI 2.0 X field is zero (even though the table revision indicates 16671a full ACPI 2.0 table.) The ACPI specification will be updated to 16672clarify this issue. 16673 16674Fixed a problem with the SystemMemory operation region handler 16675where memory was always accessed byte-wise even if the AML- 16676specified access width was larger than a byte. This caused 16677problems on systems with memory-mapped I/O. Memory is now 16678accessed with the width specified. On systems that do not support 16679non-aligned transfers, a check is made to guarantee proper address 16680alignment before proceeding in order to avoid an AML-caused 16681alignment fault within the kernel. 16682 16683 16684Fixed a problem with the ExtendedIrq resource where only one byte 16685of the 4-byte Irq field was extracted. 16686 16687Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16688function was out of date and required a rewrite. 16689 16690Code and Data Size: Current core subsystem library sizes are shown 16691below. These are the code and data sizes for the acpica.lib 16692produced by the Microsoft Visual C++ 6.0 compiler, and these 16693values do not include any ACPI driver or OSPM code. The debug 16694version of the code includes the debug output trace mechanism and 16695has a larger code and data size. Note that these values will vary 16696depending on the efficiency of the compiler and the compiler 16697options used during generation. 16698 16699 Previous Release 16700 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16701 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16702 Current Release: 16703 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16704 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16705 16706 167072) Linux 16708 16709PCI IRQ routing fixes (Dominik Brodowski) 16710 16711 167123) iASL Compiler Version X2042: 16713 16714Implemented an additional compile-time error check for a field 16715unit whose size + minimum access width would cause a run-time 16716access beyond the end-of-region. Previously, only the field size 16717itself was checked. 16718 16719The Core subsystem and iASL compiler now share a common parse 16720object in preparation for compile-time evaluation of the type 167213/4/5 ASL operators. 16722 16723 16724---------------------------------------- 16725Summary of changes for this release: 03_29_02 16726 167271) ACPI CA Core Subsystem Version 20020329: 16728 16729Implemented support for late evaluation of TermArg operands to 16730Buffer and Package objects. This allows complex expressions to be 16731used in the declarations of these object types. 16732 16733Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 167341.0, if the field was larger than 32 bits, it was returned as a 16735buffer - otherwise it was returned as an integer. In ACPI 2.0, 16736the field is returned as a buffer only if the field is larger than 1673764 bits. The TableRevision is now considered when making this 16738conversion to avoid incompatibility with existing ASL code. 16739 16740Implemented logical addressing for AcpiOsGetRootPointer. This 16741allows an RSDP with either a logical or physical address. With 16742this support, the host OS can now override all ACPI tables with 16743one logical RSDP. Includes implementation of "typed" pointer 16744support to allow a common data type for both physical and logical 16745pointers internally. This required a change to the 16746AcpiOsGetRootPointer interface. 16747 16748Implemented the use of ACPI 2.0 Generic Address Structures for all 16749GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16750mapped I/O for these ACPI features. 16751 16752Initialization now ignores not only non-required tables (All 16753tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16754not validate the table headers of unrecognized tables. 16755 16756Fixed a problem where a notify handler could only be 16757installed/removed on an object of type Device. All "notify" 16758 16759objects are now supported -- Devices, Processor, Power, and 16760Thermal. 16761 16762Removed most verbosity from the ACPI_DB_INFO debug level. Only 16763critical information is returned when this debug level is enabled. 16764 16765Code and Data Size: Current core subsystem library sizes are shown 16766below. These are the code and data sizes for the acpica.lib 16767produced by the Microsoft Visual C++ 6.0 compiler, and these 16768values do not include any ACPI driver or OSPM code. The debug 16769version of the code includes the debug output trace mechanism and 16770has a larger code and data size. Note that these values will vary 16771depending on the efficiency of the compiler and the compiler 16772options used during generation. 16773 16774 Previous Release 16775 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16776 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16777 Current Release: 16778 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16779 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16780 16781 167822) Linux: 16783 16784The processor driver (acpi_processor.c) now fully supports ACPI 167852.0-based processor performance control (e.g. Intel(R) 16786SpeedStep(TM) technology) Note that older laptops that only have 16787the Intel "applet" interface are not supported through this. The 16788'limit' and 'performance' interface (/proc) are fully functional. 16789[Note that basic policy for controlling performance state 16790transitions will be included in the next version of ospmd.] The 16791idle handler was modified to more aggressively use C2, and PIIX4 16792errata handling underwent a complete overhaul (big thanks to 16793Dominik Brodowski). 16794 16795Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16796based devices in the ACPI namespace are now dynamically bound 16797(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16798This allows, among other things, ACPI to resolve bus numbers for 16799subordinate PCI bridges. 16800 16801Enhanced PCI IRQ routing to get the proper bus number for _PRT 16802entries defined underneath PCI bridges. 16803 16804Added IBM 600E to bad bios list due to invalid _ADR value for 16805PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16806 16807In the process of adding full MADT support (e.g. IOAPIC) for IA32 16808(acpi.c, mpparse.c) -- stay tuned. 16809 16810Added back visual differentiation between fixed-feature and 16811control-method buttons in dmesg. Buttons are also subtyped (e.g. 16812button/power/PWRF) to simplify button identification. 16813 16814We no longer use -Wno-unused when compiling debug. Please ignore 16815any "_THIS_MODULE defined but not used" messages. 16816 16817Can now shut down the system using "magic sysrq" key. 16818 16819 168203) iASL Compiler version 2041: 16821 16822Fixed a problem where conversion errors for hex/octal/decimal 16823constants were not reported. 16824 16825Implemented a fix for the General Register template Address field. 16826This field was 8 bits when it should be 64. 16827 16828Fixed a problem where errors/warnings were no longer being emitted 16829within the listing output file. 16830 16831Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16832exactly 4 characters, alphanumeric only. 16833 16834 16835 16836 16837---------------------------------------- 16838Summary of changes for this release: 03_08_02 16839 16840 168411) ACPI CA Core Subsystem Version 20020308: 16842 16843Fixed a problem with AML Fields where the use of the "AccessAny" 16844keyword could cause an interpreter error due to attempting to read 16845or write beyond the end of the parent Operation Region. 16846 16847Fixed a problem in the SystemMemory Operation Region handler where 16848an attempt was made to map memory beyond the end of the region. 16849This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16850errors on some Linux systems. 16851 16852Fixed a problem where the interpreter/namespace "search to root" 16853algorithm was not functioning for some object types. Relaxed the 16854internal restriction on the search to allow upsearches for all 16855external object types as well as most internal types. 16856 16857 168582) Linux: 16859 16860We now use safe_halt() macro versus individual calls to sti | hlt. 16861 16862Writing to the processor limit interface should now work. "echo 1" 16863will increase the limit, 2 will decrease, and 0 will reset to the 16864 16865default. 16866 16867 168683) ASL compiler: 16869 16870Fixed segfault on Linux version. 16871 16872 16873---------------------------------------- 16874Summary of changes for this release: 02_25_02 16875 168761) ACPI CA Core Subsystem: 16877 16878 16879Fixed a problem where the GPE bit masks were not initialized 16880properly, causing erratic GPE behavior. 16881 16882Implemented limited support for multiple calling conventions. The 16883code can be generated with either the VPL (variable parameter 16884list, or "C") convention, or the FPL (fixed parameter list, or 16885"Pascal") convention. The core subsystem is about 3.4% smaller 16886when generated with FPL. 16887 16888 168892) Linux 16890 16891Re-add some /proc/acpi/event functionality that was lost during 16892the rewrite 16893 16894Resolved issue with /proc events for fixed-feature buttons showing 16895up as the system device. 16896 16897Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16898 16899Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16900 16901Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16902 16903Fixed limit interface & usage to fix bugs with passive cooling 16904hysterisis. 16905 16906Restructured PRT support. 16907 16908 16909---------------------------------------- 16910Summary of changes for this label: 02_14_02 16911 16912 169131) ACPI CA Core Subsystem: 16914 16915Implemented support in AcpiLoadTable to allow loading of FACS and 16916FADT tables. 16917 16918Support for the now-obsolete interim 0.71 64-bit ACPI tables has 16919been removed. All 64-bit platforms should be migrated to the ACPI 169202.0 tables. The actbl71.h header has been removed from the source 16921tree. 16922 16923All C macros defined within the subsystem have been prefixed with 16924"ACPI_" to avoid collision with other system include files. 16925 16926Removed the return value for the two AcpiOsPrint interfaces, since 16927it is never used and causes lint warnings for ignoring the return 16928value. 16929 16930Added error checking to all internal mutex acquire and release 16931calls. Although a failure from one of these interfaces is 16932probably a fatal system error, these checks will cause the 16933immediate abort of the currently executing method or interface. 16934 16935Fixed a problem where the AcpiSetCurrentResources interface could 16936fault. This was a side effect of the deployment of the new memory 16937allocation model. 16938 16939Fixed a couple of problems with the Global Lock support introduced 16940in the last major build. The "common" (1.0/2.0) internal FACS was 16941being overwritten with the FACS signature and clobbering the 16942Global Lock pointer. Also, the actual firmware FACS was being 16943unmapped after construction of the "common" FACS, preventing 16944access to the actual Global Lock field within it. The "common" 16945internal FACS is no longer installed as an actual ACPI table; it 16946is used simply as a global. 16947 16948Code and Data Size: Current core subsystem library sizes are shown 16949below. These are the code and data sizes for the acpica.lib 16950produced by the Microsoft Visual C++ 6.0 compiler, and these 16951values do not include any ACPI driver or OSPM code. The debug 16952version of the code includes the debug output trace mechanism and 16953has a larger code and data size. Note that these values will vary 16954depending on the efficiency of the compiler and the compiler 16955options used during generation. 16956 16957 Previous Release (02_07_01) 16958 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16959 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16960 Current Release: 16961 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16962 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16963 16964 169652) Linux 16966 16967Updated Linux-specific code for core macro and OSL interface 16968changes described above. 16969 16970Improved /proc/acpi/event. It now can be opened only once and has 16971proper poll functionality. 16972 16973Fixed and restructured power management (acpi_bus). 16974 16975Only create /proc "view by type" when devices of that class exist. 16976 16977Fixed "charging/discharging" bug (and others) in acpi_battery. 16978 16979Improved thermal zone code. 16980 16981 169823) ASL Compiler, version X2039: 16983 16984 16985Implemented the new compiler restriction on ASL String hex/octal 16986escapes to non-null, ASCII values. An error results if an invalid 16987value is used. (This will require an ACPI 2.0 specification 16988change.) 16989 16990AML object labels that are output to the optional C and ASM source 16991are now prefixed with both the ACPI table signature and table ID 16992to help guarantee uniqueness within a large BIOS project. 16993 16994 16995---------------------------------------- 16996Summary of changes for this label: 02_01_02 16997 169981) ACPI CA Core Subsystem: 16999 17000ACPI 2.0 support is complete in the entire Core Subsystem and the 17001ASL compiler. All new ACPI 2.0 operators are implemented and all 17002other changes for ACPI 2.0 support are complete. With 17003simultaneous code and data optimizations throughout the subsystem, 17004ACPI 2.0 support has been implemented with almost no additional 17005cost in terms of code and data size. 17006 17007Implemented a new mechanism for allocation of return buffers. If 17008the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 17009be allocated on behalf of the caller. Consolidated all return 17010buffer validation and allocation to a common procedure. Return 17011buffers will be allocated via the primary OSL allocation interface 17012since it appears that a separate pool is not needed by most users. 17013If a separate pool is required for these buffers, the caller can 17014still use the original mechanism and pre-allocate the buffer(s). 17015 17016Implemented support for string operands within the DerefOf 17017operator. 17018 17019Restructured the Hardware and Event managers to be table driven, 17020simplifying the source code and reducing the amount of generated 17021code. 17022 17023Split the common read/write low-level ACPI register bitfield 17024procedure into a separate read and write, simplifying the code 17025considerably. 17026 17027Obsoleted the AcpiOsCallocate OSL interface. This interface was 17028used only a handful of times and didn't have enough critical mass 17029for a separate interface. Replaced with a common calloc procedure 17030in the core. 17031 17032Fixed a reported problem with the GPE number mapping mechanism 17033that allows GPE1 numbers to be non-contiguous with GPE0. 17034Reorganized the GPE information and shrunk a large array that was 17035originally large enough to hold info for all possible GPEs (256) 17036to simply large enough to hold all GPEs up to the largest GPE 17037number on the machine. 17038 17039Fixed a reported problem with resource structure alignment on 64- 17040bit platforms. 17041 17042Changed the AcpiEnableEvent and AcpiDisableEvent external 17043interfaces to not require any flags for the common case of 17044enabling/disabling a GPE. 17045 17046Implemented support to allow a "Notify" on a Processor object. 17047 17048Most TBDs in comments within the source code have been resolved 17049and eliminated. 17050 17051 17052Fixed a problem in the interpreter where a standalone parent 17053prefix (^) was not handled correctly in the interpreter and 17054debugger. 17055 17056Removed obsolete and unnecessary GPE save/restore code. 17057 17058Implemented Field support in the ASL Load operator. This allows a 17059table to be loaded from a named field, in addition to loading a 17060table directly from an Operation Region. 17061 17062Implemented timeout and handle support in the external Global Lock 17063interfaces. 17064 17065Fixed a problem in the AcpiDump utility where pathnames were no 17066longer being generated correctly during the dump of named objects. 17067 17068Modified the AML debugger to give a full display of if/while 17069predicates instead of just one AML opcode at a time. (The 17070predicate can have several nested ASL statements.) The old method 17071was confusing during single stepping. 17072 17073Code and Data Size: Current core subsystem library sizes are shown 17074below. These are the code and data sizes for the acpica.lib 17075produced by the Microsoft Visual C++ 6.0 compiler, and these 17076values do not include any ACPI driver or OSPM code. The debug 17077version of the code includes the debug output trace mechanism and 17078has a larger code and data size. Note that these values will vary 17079depending on the efficiency of the compiler and the compiler 17080options used during generation. 17081 17082 Previous Release (12_18_01) 17083 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17084 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17085 Current Release: 17086 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 17087 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 17088 170892) Linux 17090 17091 Implemented fix for PIIX reverse throttling errata (Processor 17092driver) 17093 17094Added new Limit interface (Processor and Thermal drivers) 17095 17096New thermal policy (Thermal driver) 17097 17098Many updates to /proc 17099 17100Battery "low" event support (Battery driver) 17101 17102Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 17103 17104IA32 - IA64 initialization unification, no longer experimental 17105 17106Menuconfig options redesigned 17107 171083) ASL Compiler, version X2037: 17109 17110Implemented several new output features to simplify integration of 17111AML code into firmware: 1) Output the AML in C source code with 17112labels for each named ASL object. The original ASL source code 17113is interleaved as C comments. 2) Output the AML in ASM source code 17114with labels and interleaved ASL source. 3) Output the AML in 17115raw hex table form, in either C or ASM. 17116 17117Implemented support for optional string parameters to the 17118LoadTable operator. 17119 17120Completed support for embedded escape sequences within string 17121literals. The compiler now supports all single character escapes 17122as well as the Octal and Hex escapes. Note: the insertion of a 17123null byte into a string literal (via the hex/octal escape) causes 17124the string to be immediately terminated. A warning is issued. 17125 17126Fixed a problem where incorrect AML was generated for the case 17127where an ASL namepath consists of a single parent prefix ( 17128 17129) with no trailing name segments. 17130 17131The compiler has been successfully generated with a 64-bit C 17132compiler. 17133 17134 17135 17136 17137---------------------------------------- 17138Summary of changes for this label: 12_18_01 17139 171401) Linux 17141 17142Enhanced blacklist with reason and severity fields. Any table's 17143signature may now be used to identify a blacklisted system. 17144 17145Call _PIC control method to inform the firmware which interrupt 17146model the OS is using. Turn on any disabled link devices. 17147 17148Cleaned up busmgr /proc error handling (Andreas Dilger) 17149 17150 2) ACPI CA Core Subsystem: 17151 17152Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17153while loop) 17154 17155Completed implementation of the ACPI 2.0 "Continue", 17156"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17157operators. All new ACPI 2.0 operators are now implemented in both 17158the ASL compiler and the AML interpreter. The only remaining ACPI 171592.0 task is support for the String data type in the DerefOf 17160operator. Fixed a problem with AcquireMutex where the status code 17161was lost if the caller had to actually wait for the mutex. 17162 17163Increased the maximum ASL Field size from 64K bits to 4G bits. 17164 17165Completed implementation of the external Global Lock interfaces -- 17166AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17167Handler parameters were added. 17168 17169Completed another pass at removing warnings and issues when 17170compiling with 64-bit compilers. The code now compiles cleanly 17171with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17172add and subtract (diff) macros have changed considerably. 17173 17174 17175Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1717664-bit platforms, 32-bits on all others. This type is used 17177wherever memory allocation and/or the C sizeof() operator is used, 17178and affects the OSL memory allocation interfaces AcpiOsAllocate 17179and AcpiOsCallocate. 17180 17181Implemented sticky user breakpoints in the AML debugger. 17182 17183Code and Data Size: Current core subsystem library sizes are shown 17184below. These are the code and data sizes for the acpica.lib 17185produced by the Microsoft Visual C++ 6.0 compiler, and these 17186values do not include any ACPI driver or OSPM code. The debug 17187version of the code includes the debug output trace mechanism and 17188has a larger code and data size. Note that these values will vary 17189depending on the efficiency of the compiler and the compiler 17190options used during generation. 17191 17192 Previous Release (12_05_01) 17193 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17194 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17195 Current Release: 17196 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17197 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17198 17199 3) ASL Compiler, version X2034: 17200 17201Now checks for (and generates an error if detected) the use of a 17202Break or Continue statement without an enclosing While statement. 17203 17204 17205Successfully generated the compiler with the Intel 64-bit C 17206compiler. 17207 17208 ---------------------------------------- 17209Summary of changes for this label: 12_05_01 17210 17211 1) ACPI CA Core Subsystem: 17212 17213The ACPI 2.0 CopyObject operator is fully implemented. This 17214operator creates a new copy of an object (and is also used to 17215bypass the "implicit conversion" mechanism of the Store operator.) 17216 17217The ACPI 2.0 semantics for the SizeOf operator are fully 17218implemented. The change is that performing a SizeOf on a 17219reference object causes an automatic dereference of the object to 17220tha actual value before the size is evaluated. This behavior was 17221undefined in ACPI 1.0. 17222 17223The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17224have been implemented. The interrupt polarity and mode are now 17225independently set. 17226 17227Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17228appearing in Package objects were not properly converted to 17229integers when the internal Package was converted to an external 17230object (via the AcpiEvaluateObject interface.) 17231 17232Fixed a problem with the namespace object deletion mechanism for 17233objects created by control methods. There were two parts to this 17234problem: 1) Objects created during the initialization phase method 17235parse were not being deleted, and 2) The object owner ID mechanism 17236to track objects was broken. 17237 17238Fixed a problem where the use of the ASL Scope operator within a 17239control method would result in an invalid opcode exception. 17240 17241Fixed a problem introduced in the previous label where the buffer 17242length required for the _PRT structure was not being returned 17243correctly. 17244 17245Code and Data Size: Current core subsystem library sizes are shown 17246below. These are the code and data sizes for the acpica.lib 17247produced by the Microsoft Visual C++ 6.0 compiler, and these 17248values do not include any ACPI driver or OSPM code. The debug 17249version of the code includes the debug output trace mechanism and 17250has a larger code and data size. Note that these values will vary 17251depending on the efficiency of the compiler and the compiler 17252options used during generation. 17253 17254 Previous Release (11_20_01) 17255 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17256 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17257 17258 Current Release: 17259 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17260 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17261 17262 2) Linux: 17263 17264Updated all files to apply cleanly against 2.4.16. 17265 17266Added basic PCI Interrupt Routing Table (PRT) support for IA32 17267(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17268version supports both static and dynamic PRT entries, but dynamic 17269entries are treated as if they were static (not yet 17270reconfigurable). Architecture- specific code to use this data is 17271absent on IA32 but should be available shortly. 17272 17273Changed the initialization sequence to start the ACPI interpreter 17274(acpi_init) prior to initialization of the PCI driver (pci_init) 17275in init/main.c. This ordering is required to support PRT and 17276facilitate other (future) enhancement. A side effect is that the 17277ACPI bus driver and certain device drivers can no longer be loaded 17278as modules. 17279 17280Modified the 'make menuconfig' options to allow PCI Interrupt 17281Routing support to be included without the ACPI Bus and other 17282device drivers. 17283 17284 3) ASL Compiler, version X2033: 17285 17286Fixed some issues with the use of the new CopyObject and 17287DataTableRegion operators. Both are fully functional. 17288 17289 ---------------------------------------- 17290Summary of changes for this label: 11_20_01 17291 17292 20 November 2001. Summary of changes for this release. 17293 17294 1) ACPI CA Core Subsystem: 17295 17296Updated Index support to match ACPI 2.0 semantics. Storing a 17297Integer, String, or Buffer to an Index of a Buffer will store only 17298the least-significant byte of the source to the Indexed buffer 17299byte. Multiple writes are not performed. 17300 17301Fixed a problem where the access type used in an AccessAs ASL 17302operator was not recorded correctly into the field object. 17303 17304Fixed a problem where ASL Event objects were created in a 17305signalled state. Events are now created in an unsignalled state. 17306 17307The internal object cache is now purged after table loading and 17308initialization to reduce the use of dynamic kernel memory -- on 17309the assumption that object use is greatest during the parse phase 17310of the entire table (versus the run-time use of individual control 17311methods.) 17312 17313ACPI 2.0 variable-length packages are now fully operational. 17314 17315Code and Data Size: Code and Data optimizations have permitted new 17316feature development with an actual reduction in the library size. 17317Current core subsystem library sizes are shown below. These are 17318the code and data sizes for the acpica.lib produced by the 17319Microsoft Visual C++ 6.0 compiler, and these values do not include 17320any ACPI driver or OSPM code. The debug version of the code 17321includes the debug output trace mechanism and has a larger code 17322and data size. Note that these values will vary depending on the 17323efficiency of the compiler and the compiler options used during 17324generation. 17325 17326 Previous Release (11_09_01): 17327 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17328 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17329 17330 Current Release: 17331 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17332 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17333 17334 2) Linux: 17335 17336Enhanced the ACPI boot-time initialization code to allow the use 17337of Local APIC tables for processor enumeration on IA-32, and to 17338pave the way for a fully MPS-free boot (on SMP systems) in the 17339near future. This functionality replaces 17340arch/i386/kernel/acpitables.c, which was introduced in an earlier 173412.4.15-preX release. To enable this feature you must add 17342"acpi_boot=on" to the kernel command line -- see the help entry 17343for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17344the works... 17345 17346Restructured the configuration options to allow boot-time table 17347parsing support without inclusion of the ACPI Interpreter (and 17348other) code. 17349 17350NOTE: This release does not include fixes for the reported events, 17351power-down, and thermal passive cooling issues (coming soon). 17352 17353 3) ASL Compiler: 17354 17355Added additional typechecking for Fields within restricted access 17356Operation Regions. All fields within EC and CMOS regions must be 17357declared with ByteAcc. All fields within SMBus regions must be 17358declared with the BufferAcc access type. 17359 17360Fixed a problem where the listing file output of control methods 17361no longer interleaved the actual AML code with the ASL source 17362code. 17363 17364 17365 17366 17367---------------------------------------- 17368Summary of changes for this label: 11_09_01 17369 173701) ACPI CA Core Subsystem: 17371 17372Implemented ACPI 2.0-defined support for writes to fields with a 17373Buffer, String, or Integer source operand that is smaller than the 17374target field. In these cases, the source operand is zero-extended 17375to fill the target field. 17376 17377Fixed a problem where a Field starting bit offset (within the 17378parent operation region) was calculated incorrectly if the 17379 17380alignment of the field differed from the access width. This 17381affected CreateWordField, CreateDwordField, CreateQwordField, and 17382possibly other fields that use the "AccessAny" keyword. 17383 17384Fixed a problem introduced in the 11_02_01 release where indirect 17385stores through method arguments did not operate correctly. 17386 173872) Linux: 17388 17389Implemented boot-time ACPI table parsing support 17390(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17391facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17392legacy BIOS interfaces (e.g. MPS) for the configuration of system 17393processors, memory, and interrupts during setup_arch(). Note that 17394this patch does not include the required architecture-specific 17395changes required to apply this information -- subsequent patches 17396will be posted for both IA32 and IA64 to achieve this. 17397 17398Added low-level sleep support for IA32 platforms, courtesy of Pat 17399Mochel. This allows IA32 systems to transition to/from various 17400sleeping states (e.g. S1, S3), although the lack of a centralized 17401driver model and power-manageable drivers will prevent its 17402(successful) use on most systems. 17403 17404Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17405submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17406tables" option, etc. 17407 17408Increased the default timeout for the EC driver from 1ms to 10ms 17409(1000 cycles of 10us) to try to address AE_TIME errors during EC 17410transactions. 17411 17412 ---------------------------------------- 17413Summary of changes for this label: 11_02_01 17414 174151) ACPI CA Core Subsystem: 17416 17417ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17418(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17419implemented. 17420 17421OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17422changes to support ACPI 2.0 Qword field access. Read/Write 17423PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17424accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17425the value parameter for the address space handler interface is now 17426an ACPI_INTEGER. OSL implementations of these interfaces must now 17427handle the case where the Width parameter is 64. 17428 17429Index Fields: Fixed a problem where unaligned bit assembly and 17430disassembly for IndexFields was not supported correctly. 17431 17432Index and Bank Fields: Nested Index and Bank Fields are now 17433supported. During field access, a check is performed to ensure 17434that the value written to an Index or Bank register is not out of 17435the range of the register. The Index (or Bank) register is 17436written before each access to the field data. Future support will 17437include allowing individual IndexFields to be wider than the 17438DataRegister width. 17439 17440Fields: Fixed a problem where the AML interpreter was incorrectly 17441attempting to write beyond the end of a Field/OpRegion. This was 17442a boundary case that occurred when a DWORD field was written to a 17443BYTE access OpRegion, forcing multiple writes and causing the 17444interpreter to write one datum too many. 17445 17446Fields: Fixed a problem with Field/OpRegion access where the 17447starting bit address of a field was incorrectly calculated if the 17448current access type was wider than a byte (WordAcc, DwordAcc, or 17449QwordAcc). 17450 17451Fields: Fixed a problem where forward references to individual 17452FieldUnits (individual Field names within a Field definition) were 17453not resolved during the AML table load. 17454 17455Fields: Fixed a problem where forward references from a Field 17456definition to the parent Operation Region definition were not 17457resolved during the AML table load. 17458 17459Fields: Duplicate FieldUnit names within a scope are now detected 17460during AML table load. 17461 17462Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17463returned an incorrect name for the root node. 17464 17465Code and Data Size: Code and Data optimizations have permitted new 17466feature development with an actual reduction in the library size. 17467Current core subsystem library sizes are shown below. These are 17468the code and data sizes for the acpica.lib produced by the 17469Microsoft Visual C++ 6.0 compiler, and these values do not include 17470any ACPI driver or OSPM code. The debug version of the code 17471includes the debug output trace mechanism and has a larger code 17472and data size. Note that these values will vary depending on the 17473efficiency of the compiler and the compiler options used during 17474generation. 17475 17476 Previous Release (10_18_01): 17477 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17478 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17479 17480 Current Release: 17481 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17482 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17483 17484 2) Linux: 17485 17486Improved /proc processor output (Pavel Machek) Re-added 17487MODULE_LICENSE("GPL") to all modules. 17488 17489 3) ASL Compiler version X2030: 17490 17491Duplicate FieldUnit names within a scope are now detected and 17492flagged as errors. 17493 17494 4) Documentation: 17495 17496Programmer Reference updated to reflect OSL and address space 17497handler interface changes described above. 17498 17499---------------------------------------- 17500Summary of changes for this label: 10_18_01 17501 17502ACPI CA Core Subsystem: 17503 17504Fixed a problem with the internal object reference count mechanism 17505that occasionally caused premature object deletion. This resolves 17506all of the outstanding problem reports where an object is deleted 17507in the middle of an interpreter evaluation. Although this problem 17508only showed up in rather obscure cases, the solution to the 17509problem involved an adjustment of all reference counts involving 17510objects attached to namespace nodes. 17511 17512Fixed a problem with Field support in the interpreter where 17513writing to an aligned field whose length is an exact multiple (2 17514or greater) of the field access granularity would cause an attempt 17515to write beyond the end of the field. 17516 17517The top level AML opcode execution functions within the 17518interpreter have been renamed with a more meaningful and 17519consistent naming convention. The modules exmonad.c and 17520exdyadic.c were eliminated. New modules are exoparg1.c, 17521exoparg2.c, exoparg3.c, and exoparg6.c. 17522 17523Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17524 17525Fixed a problem where the AML debugger was causing some internal 17526objects to not be deleted during subsystem termination. 17527 17528Fixed a problem with the external AcpiEvaluateObject interface 17529where the subsystem would fault if the named object to be 17530evaluated referred to a constant such as Zero, Ones, etc. 17531 17532Fixed a problem with IndexFields and BankFields where the 17533subsystem would fault if the index, data, or bank registers were 17534not defined in the same scope as the field itself. 17535 17536Added printf format string checking for compilers that support 17537this feature. Corrected more than 50 instances of issues with 17538format specifiers within invocations of ACPI_DEBUG_PRINT 17539throughout the core subsystem code. 17540 17541The ASL "Revision" operator now returns the ACPI support level 17542implemented in the core - the value "2" since the ACPI 2.0 support 17543is more than 50% implemented. 17544 17545Enhanced the output of the AML debugger "dump namespace" command 17546to output in a more human-readable form. 17547 17548Current core subsystem library code sizes are shown below. These 17549 17550are the code and data sizes for the acpica.lib produced by the 17551Microsoft Visual C++ 6.0 compiler, and these values do not include 17552any ACPI driver or OSPM code. The debug version of the code 17553includes the full debug trace mechanism -- leading to a much 17554 17555larger code and data size. Note that these values will vary 17556depending on the efficiency of the compiler and the compiler 17557options used during generation. 17558 17559 Previous Label (09_20_01): 17560 Non-Debug Version: 65K Code, 5K Data, 70K Total 17561 Debug Version: 138K Code, 58K Data, 196K Total 17562 17563 This Label: 17564 17565 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17566 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17567 17568Linux: 17569 17570Implemented a "Bad BIOS Blacklist" to track machines that have 17571known ASL/AML problems. 17572 17573Enhanced the /proc interface for the thermal zone driver and added 17574support for _HOT (the critical suspend trip point). The 'info' 17575file now includes threshold/policy information, and allows setting 17576of _SCP (cooling preference) and _TZP (polling frequency) values 17577to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 17578frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 17579preference to the passive/quiet mode (if supported by the ASL). 17580 17581Implemented a workaround for a gcc bug that resuted in an OOPs 17582when loading the control method battery driver. 17583 17584 ---------------------------------------- 17585Summary of changes for this label: 09_20_01 17586 17587 ACPI CA Core Subsystem: 17588 17589The AcpiEnableEvent and AcpiDisableEvent interfaces have been 17590modified to allow individual GPE levels to be flagged as wake- 17591enabled (i.e., these GPEs are to remain enabled when the platform 17592sleeps.) 17593 17594The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 17595support wake-enabled GPEs. This means that upon entering the 17596sleep state, all GPEs that are not wake-enabled are disabled. 17597When leaving the sleep state, these GPEs are re-enabled. 17598 17599A local double-precision divide/modulo module has been added to 17600enhance portability to OS kernels where a 64-bit math library is 17601not available. The new module is "utmath.c". 17602 17603Several optimizations have been made to reduce the use of CPU 17604stack. Originally over 2K, the maximum stack usage is now below 176052K at 1860 bytes (1.82k) 17606 17607Fixed a problem with the AcpiGetFirmwareTable interface where the 17608root table pointer was not mapped into a logical address properly. 17609 17610Fixed a problem where a NULL pointer was being dereferenced in the 17611interpreter code for the ASL Notify operator. 17612 17613Fixed a problem where the use of the ASL Revision operator 17614returned an error. This operator now returns the current version 17615of the ACPI CA core subsystem. 17616 17617Fixed a problem where objects passed as control method parameters 17618to AcpiEvaluateObject were always deleted at method termination. 17619However, these objects may end up being stored into the namespace 17620by the called method. The object reference count mechanism was 17621applied to these objects instead of a force delete. 17622 17623Fixed a problem where static strings or buffers (contained in the 17624AML code) that are declared as package elements within the ASL 17625code could cause a fault because the interpreter would attempt to 17626delete them. These objects are now marked with the "static 17627object" flag to prevent any attempt to delete them. 17628 17629Implemented an interpreter optimization to use operands directly 17630from the state object instead of extracting the operands to local 17631variables. This reduces stack use and code size, and improves 17632performance. 17633 17634The module exxface.c was eliminated as it was an unnecessary extra 17635layer of code. 17636 17637Current core subsystem library code sizes are shown below. These 17638are the code and data sizes for the acpica.lib produced by the 17639Microsoft Visual C++ 6.0 compiler, and these values do not include 17640any ACPI driver or OSPM code. The debug version of the code 17641includes the full debug trace mechanism -- leading to a much 17642larger code and data size. Note that these values will vary 17643depending on the efficiency of the compiler and the compiler 17644options used during generation. 17645 17646 Non-Debug Version: 65K Code, 5K Data, 70K Total 17647(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17648Total (Previously 195K) 17649 17650Linux: 17651 17652Support for ACPI 2.0 64-bit integers has been added. All ACPI 17653Integer objects are now 64 bits wide 17654 17655All Acpi data types and structures are now in lower case. Only 17656Acpi macros are upper case for differentiation. 17657 17658 Documentation: 17659 17660Changes to the external interfaces as described above. 17661 17662 ---------------------------------------- 17663Summary of changes for this label: 08_31_01 17664 17665 ACPI CA Core Subsystem: 17666 17667A bug with interpreter implementation of the ASL Divide operator 17668was found and fixed. The implicit function return value (not the 17669explicit store operands) was returning the remainder instead of 17670the quotient. This was a longstanding bug and it fixes several 17671known outstanding issues on various platforms. 17672 17673The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17674been further optimized for size. There are 700 invocations of the 17675DEBUG_PRINT macro alone, so each optimization reduces the size of 17676the debug version of the subsystem significantly. 17677 17678A stack trace mechanism has been implemented. The maximum stack 17679usage is about 2K on 32-bit platforms. The debugger command "stat 17680stack" will display the current maximum stack usage. 17681 17682All public symbols and global variables within the subsystem are 17683now prefixed with the string "Acpi". This keeps all of the 17684symbols grouped together in a kernel map, and avoids conflicts 17685with other kernel subsystems. 17686 17687Most of the internal fixed lookup tables have been moved into the 17688code segment via the const operator. 17689 17690Several enhancements have been made to the interpreter to both 17691reduce the code size and improve performance. 17692 17693Current core subsystem library code sizes are shown below. These 17694are the code and data sizes for the acpica.lib produced by the 17695Microsoft Visual C++ 6.0 compiler, and these values do not include 17696any ACPI driver or OSPM code. The debug version of the code 17697includes the full debug trace mechanism which contains over 700 17698invocations of the DEBUG_PRINT macro, 500 function entry macro 17699invocations, and over 900 function exit macro invocations -- 17700leading to a much larger code and data size. Note that these 17701values will vary depending on the efficiency of the compiler and 17702the compiler options used during generation. 17703 17704 Non-Debug Version: 64K Code, 5K Data, 69K Total 17705Debug Version: 137K Code, 58K Data, 195K Total 17706 17707 Linux: 17708 17709Implemented wbinvd() macro, pending a kernel-wide definition. 17710 17711Fixed /proc/acpi/event to handle poll() and short reads. 17712 17713 ASL Compiler, version X2026: 17714 17715Fixed a problem introduced in the previous label where the AML 17716 17717code emitted for package objects produced packages with zero 17718length. 17719 17720 ---------------------------------------- 17721Summary of changes for this label: 08_16_01 17722 17723ACPI CA Core Subsystem: 17724 17725The following ACPI 2.0 ASL operators have been implemented in the 17726AML interpreter (These are already supported by the Intel ASL 17727compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17728ToBuffer. Support for 64-bit AML constants is implemented in the 17729AML parser, debugger, and disassembler. 17730 17731The internal memory tracking mechanism (leak detection code) has 17732been upgraded to reduce the memory overhead (a separate tracking 17733block is no longer allocated for each memory allocation), and now 17734supports all of the internal object caches. 17735 17736The data structures and code for the internal object caches have 17737been coelesced and optimized so that there is a single cache and 17738memory list data structure and a single group of functions that 17739implement generic cache management. This has reduced the code 17740size in both the debug and release versions of the subsystem. 17741 17742The DEBUG_PRINT macro(s) have been optimized for size and replaced 17743by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17744different, because it generates a single call to an internal 17745function. This results in a savings of about 90 bytes per 17746invocation, resulting in an overall code and data savings of about 1774716% in the debug version of the subsystem. 17748 17749 Linux: 17750 17751Fixed C3 disk corruption problems and re-enabled C3 on supporting 17752machines. 17753 17754Integrated low-level sleep code by Patrick Mochel. 17755 17756Further tweaked source code Linuxization. 17757 17758Other minor fixes. 17759 17760 ASL Compiler: 17761 17762Support for ACPI 2.0 variable length packages is fixed/completed. 17763 17764Fixed a problem where the optional length parameter for the ACPI 177652.0 ToString operator. 17766 17767Fixed multiple extraneous error messages when a syntax error is 17768detected within the declaration line of a control method. 17769 17770 ---------------------------------------- 17771Summary of changes for this label: 07_17_01 17772 17773ACPI CA Core Subsystem: 17774 17775Added a new interface named AcpiGetFirmwareTable to obtain any 17776ACPI table via the ACPI signature. The interface can be called at 17777any time during kernel initialization, even before the kernel 17778virtual memory manager is initialized and paging is enabled. This 17779allows kernel subsystems to obtain ACPI tables very early, even 17780before the ACPI CA subsystem is initialized. 17781 17782Fixed a problem where Fields defined with the AnyAcc attribute 17783could be resolved to the incorrect address under the following 17784conditions: 1) the field width is larger than 8 bits and 2) the 17785parent operation region is not defined on a DWORD boundary. 17786 17787Fixed a problem where the interpreter is not being locked during 17788namespace initialization (during execution of the _INI control 17789methods), causing an error when an attempt is made to release it 17790later. 17791 17792ACPI 2.0 support in the AML Interpreter has begun and will be 17793ongoing throughout the rest of this year. In this label, The Mod 17794operator is implemented. 17795 17796Added a new data type to contain full PCI addresses named 17797ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17798and Function values. 17799 17800 Linux: 17801 17802Enhanced the Linux version of the source code to change most 17803capitalized ACPI type names to lowercase. For example, all 17804instances of ACPI_STATUS are changed to acpi_status. This will 17805result in a large diff, but the change is strictly cosmetic and 17806aligns the CA code closer to the Linux coding standard. 17807 17808OSL Interfaces: 17809 17810The interfaces to the PCI configuration space have been changed to 17811add the PCI Segment number and to split the single 32-bit combined 17812DeviceFunction field into two 16-bit fields. This was 17813accomplished by moving the four values that define an address in 17814PCI configuration space (segment, bus, device, and function) to 17815the new ACPI_PCI_ID structure. 17816 17817The changes to the PCI configuration space interfaces led to a 17818reexamination of the complete set of address space access 17819interfaces for PCI, I/O, and Memory. The previously existing 18 17820interfaces have proven difficult to maintain (any small change 17821must be propagated across at least 6 interfaces) and do not easily 17822allow for future expansion to 64 bits if necessary. Also, on some 17823systems, it would not be appropriate to demultiplex the access 17824width (8, 16, 32,or 64) before calling the OSL if the 17825corresponding native OS interfaces contain a similar access width 17826parameter. For these reasons, the 18 address space interfaces 17827have been replaced by these 6 new ones: 17828 17829AcpiOsReadPciConfiguration 17830AcpiOsWritePciConfiguration 17831AcpiOsReadMemory 17832AcpiOsWriteMemory 17833AcpiOsReadPort 17834AcpiOsWritePort 17835 17836Added a new interface named AcpiOsGetRootPointer to allow the OSL 17837to perform the platform and/or OS-specific actions necessary to 17838obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17839interface will simply call down to the CA core to perform the low- 17840memory search for the table. On IA-64, the RSDP is obtained from 17841EFI. Migrating this interface to the OSL allows the CA core to 17842 17843remain OS and platform independent. 17844 17845Added a new interface named AcpiOsSignal to provide a generic 17846"function code and pointer" interface for various miscellaneous 17847signals and notifications that must be made to the host OS. The 17848first such signals are intended to support the ASL Fatal and 17849Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17850interface has been obsoleted. 17851 17852The definition of the AcpiFormatException interface has been 17853changed to simplify its use. The caller no longer must supply a 17854buffer to the call; A pointer to a const string is now returned 17855directly. This allows the call to be easily used in printf 17856statements, etc. since the caller does not have to manage a local 17857buffer. 17858 17859 17860 ASL Compiler, Version X2025: 17861 17862The ACPI 2.0 Switch/Case/Default operators have been implemented 17863and are fully functional. They will work with all ACPI 1.0 17864interpreters, since the operators are simply translated to If/Else 17865pairs. 17866 17867The ACPI 2.0 ElseIf operator is implemented and will also work 17868with 1.0 interpreters, for the same reason. 17869 17870Implemented support for ACPI 2.0 variable-length packages. These 17871packages have a separate opcode, and their size is determined by 17872the interpreter at run-time. 17873 17874Documentation The ACPI CA Programmer Reference has been updated to 17875reflect the new interfaces and changes to existing interfaces. 17876 17877 ------------------------------------------ 17878Summary of changes for this label: 06_15_01 17879 17880 ACPI CA Core Subsystem: 17881 17882Fixed a problem where a DWORD-accessed field within a Buffer 17883object would get its byte address inadvertently rounded down to 17884the nearest DWORD. Buffers are always Byte-accessible. 17885 17886 ASL Compiler, version X2024: 17887 17888Fixed a problem where the Switch() operator would either fault or 17889hang the compiler. Note however, that the AML code for this ACPI 178902.0 operator is not yet implemented. 17891 17892Compiler uses the new AcpiOsGetTimer interface to obtain compile 17893timings. 17894 17895Implementation of the CreateField operator automatically converts 17896a reference to a named field within a resource descriptor from a 17897byte offset to a bit offset if required. 17898 17899Added some missing named fields from the resource descriptor 17900support. These are the names that are automatically created by the 17901compiler to reference fields within a descriptor. They are only 17902valid at compile time and are not passed through to the AML 17903interpreter. 17904 17905Resource descriptor named fields are now typed as Integers and 17906subject to compile-time typechecking when used in expressions. 17907 17908 ------------------------------------------ 17909Summary of changes for this label: 05_18_01 17910 17911 ACPI CA Core Subsystem: 17912 17913Fixed a couple of problems in the Field support code where bits 17914from adjacent fields could be returned along with the proper field 17915bits. Restructured the field support code to improve performance, 17916readability and maintainability. 17917 17918New DEBUG_PRINTP macro automatically inserts the procedure name 17919into the output, saving hundreds of copies of procedure name 17920strings within the source, shrinking the memory footprint of the 17921debug version of the core subsystem. 17922 17923 Source Code Structure: 17924 17925The source code directory tree was restructured to reflect the 17926current organization of the component architecture. Some files 17927and directories have been moved and/or renamed. 17928 17929 Linux: 17930 17931Fixed leaking kacpidpc processes. 17932 17933Fixed queueing event data even when /proc/acpi/event is not 17934opened. 17935 17936 ASL Compiler, version X2020: 17937 17938Memory allocation performance enhancement - over 24X compile time 17939improvement on large ASL files. Parse nodes and namestring 17940buffers are now allocated from a large internal compiler buffer. 17941 17942The temporary .SRC file is deleted unless the "-s" option is 17943specified 17944 17945The "-d" debug output option now sends all output to the .DBG file 17946instead of the console. 17947 17948"External" second parameter is now optional 17949 17950"ElseIf" syntax now properly allows the predicate 17951 17952Last operand to "Load" now recognized as a Target operand 17953 17954Debug object can now be used anywhere as a normal object. 17955 17956ResourceTemplate now returns an object of type BUFFER 17957 17958EISAID now returns an object of type INTEGER 17959 17960"Index" now works with a STRING operand 17961 17962"LoadTable" now accepts optional parameters 17963 17964"ToString" length parameter is now optional 17965 17966"Interrupt (ResourceType," parse error fixed. 17967 17968"Register" with a user-defined region space parse error fixed 17969 17970Escaped backslash at the end of a string ("\\") scan/parse error 17971fixed 17972 17973"Revision" is now an object of type INTEGER. 17974 17975 17976 17977------------------------------------------ 17978Summary of changes for this label: 05_02_01 17979 17980Linux: 17981 17982/proc/acpi/event now blocks properly. 17983 17984Removed /proc/sys/acpi. You can still dump your DSDT from 17985/proc/acpi/dsdt. 17986 17987 ACPI CA Core Subsystem: 17988 17989Fixed a problem introduced in the previous label where some of the 17990"small" resource descriptor types were not recognized. 17991 17992Improved error messages for the case where an ASL Field is outside 17993the range of the parent operation region. 17994 17995 ASL Compiler, version X2018: 17996 17997 17998Added error detection for ASL Fields that extend beyond the length 17999of the parent operation region (only if the length of the region 18000is known at compile time.) This includes fields that have a 18001minimum access width that is smaller than the parent region, and 18002individual field units that are partially or entirely beyond the 18003extent of the parent. 18004 18005 18006 18007------------------------------------------ 18008Summary of changes for this label: 04_27_01 18009 18010 ACPI CA Core Subsystem: 18011 18012Fixed a problem where the namespace mutex could be released at the 18013wrong time during execution of AcpiRemoveAddressSpaceHandler. 18014 18015Added optional thread ID output for debug traces, to simplify 18016debugging of multiple threads. Added context switch notification 18017when the debug code realizes that a different thread is now 18018executing ACPI code. 18019 18020Some additional external data types have been prefixed with the 18021string "ACPI_" for consistency. This may effect existing code. 18022The data types affected are the external callback typedefs - e.g., 18023 18024WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 18025 18026 Linux: 18027 18028Fixed an issue with the OSL semaphore implementation where a 18029thread was waking up with an error from receiving a SIGCHLD 18030signal. 18031 18032Linux version of ACPI CA now uses the system C library for string 18033manipulation routines instead of a local implementation. 18034 18035Cleaned up comments and removed TBDs. 18036 18037 ASL Compiler, version X2017: 18038 18039Enhanced error detection and reporting for all file I/O 18040operations. 18041 18042 Documentation: 18043 18044Programmer Reference updated to version 1.06. 18045 18046 18047 18048------------------------------------------ 18049Summary of changes for this label: 04_13_01 18050 18051 ACPI CA Core Subsystem: 18052 18053Restructured support for BufferFields and RegionFields. 18054BankFields support is now fully operational. All known 32-bit 18055limitations on field sizes have been removed. Both BufferFields 18056and (Operation) RegionFields are now supported by the same field 18057management code. 18058 18059Resource support now supports QWORD address and IO resources. The 1806016/32/64 bit address structures and the Extended IRQ structure 18061have been changed to properly handle Source Resource strings. 18062 18063A ThreadId of -1 is now used to indicate a "mutex not acquired" 18064condition internally and must never be returned by AcpiOsThreadId. 18065This reserved value was changed from 0 since Unix systems allow a 18066thread ID of 0. 18067 18068Linux: 18069 18070Driver code reorganized to enhance portability 18071 18072Added a kernel configuration option to control ACPI_DEBUG 18073 18074Fixed the EC driver to honor _GLK. 18075 18076ASL Compiler, version X2016: 18077 18078Fixed support for the "FixedHw" keyword. Previously, the FixedHw 18079address space was set to 0, not 0x7f as it should be. 18080 18081 ------------------------------------------ 18082Summary of changes for this label: 03_13_01 18083 18084 ACPI CA Core Subsystem: 18085 18086During ACPI initialization, the _SB_._INI method is now run if 18087present. 18088 18089Notify handler fix - notifies are deferred until the parent method 18090completes execution. This fixes the "mutex already acquired" 18091issue seen occasionally. 18092 18093Part of the "implicit conversion" rules in ACPI 2.0 have been 18094found to cause compatibility problems with existing ASL/AML. The 18095convert "result-to-target-type" implementation has been removed 18096for stores to method Args and Locals. Source operand conversion 18097is still fully implemented. Possible changes to ACPI 2.0 18098specification pending. 18099 18100Fix to AcpiRsCalculatePciRoutingTableLength to return correct 18101length. 18102 18103Fix for compiler warnings for 64-bit compiles. 18104 18105 Linux: 18106 18107/proc output aligned for easier parsing. 18108 18109Release-version compile problem fixed. 18110 18111New kernel configuration options documented in Configure.help. 18112 18113IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 18114context" message. 18115 18116 OSPM: 18117 18118Power resource driver integrated with bus manager. 18119 18120Fixed kernel fault during active cooling for thermal zones. 18121 18122Source Code: 18123 18124The source code tree has been restructured. 18125 18126 18127 18128------------------------------------------ 18129Summary of changes for this label: 03_02_01 18130 18131 Linux OS Services Layer (OSL): 18132 18133Major revision of all Linux-specific code. 18134 18135Modularized all ACPI-specific drivers. 18136 18137Added new thermal zone and power resource drivers. 18138 18139Revamped /proc interface (new functionality is under /proc/acpi). 18140 18141New kernel configuration options. 18142 18143 Linux known issues: 18144 18145New kernel configuration options not documented in Configure.help 18146yet. 18147 18148 18149Module dependencies not currently implemented. If used, they 18150should be loaded in this order: busmgr, power, ec, system, 18151processor, battery, ac_adapter, button, thermal. 18152 18153Modules will not load if CONFIG_MODVERSION is set. 18154 18155IBM 600E - entering S5 may reboot instead of shutting down. 18156 18157IBM 600E - Sleep button may generate "Invalid <NULL> context" 18158message. 18159 18160Some systems may fail with "execution mutex already acquired" 18161message. 18162 18163 ACPI CA Core Subsystem: 18164 18165Added a new OSL Interface, AcpiOsGetThreadId. This was required 18166for the deadlock detection code. Defined to return a non-zero, 32- 18167bit thread ID for the currently executing thread. May be a non- 18168zero constant integer on single-thread systems. 18169 18170Implemented deadlock detection for internal subsystem mutexes. We 18171may add conditional compilation for this code (debug only) later. 18172 18173ASL/AML Mutex object semantics are now fully supported. This 18174includes multiple acquires/releases by owner and support for the 18175 18176Mutex SyncLevel parameter. 18177 18178A new "Force Release" mechanism automatically frees all ASL 18179Mutexes that have been acquired but not released when a thread 18180exits the interpreter. This forces conformance to the ACPI spec 18181("All mutexes must be released when an invocation exits") and 18182prevents deadlocked ASL threads. This mechanism can be expanded 18183(later) to monitor other resource acquisitions if OEM ASL code 18184continues to misbehave (which it will). 18185 18186Several new ACPI exception codes have been added for the Mutex 18187support. 18188 18189Recursive method calls are now allowed and supported (the ACPI 18190spec does in fact allow recursive method calls.) The number of 18191recursive calls is subject to the restrictions imposed by the 18192SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18193parameter. 18194 18195Implemented support for the SyncLevel parameter for control 18196methods (ACPI 2.0 feature) 18197 18198Fixed a deadlock problem when multiple threads attempted to use 18199the interpreter. 18200 18201Fixed a problem where the string length of a String package 18202element was not always set in a package returned from 18203AcpiEvaluateObject. 18204 18205Fixed a problem where the length of a String package element was 18206not always included in the length of the overall package returned 18207from AcpiEvaluateObject. 18208 18209Added external interfaces (Acpi*) to the ACPI debug memory 18210manager. This manager keeps a list of all outstanding 18211allocations, and can therefore detect memory leaks and attempts to 18212free memory blocks more than once. Useful for code such as the 18213power manager, etc. May not be appropriate for device drivers. 18214Performance with the debug code enabled is slow. 18215 18216The ACPI Global Lock is now an optional hardware element. 18217 18218 ASL Compiler Version X2015: 18219 18220Integrated changes to allow the compiler to be generated on 18221multiple platforms. 18222 18223Linux makefile added to generate the compiler on Linux 18224 18225 Source Code: 18226 18227All platform-specific headers have been moved to their own 18228subdirectory, Include/Platform. 18229 18230New source file added, Interpreter/ammutex.c 18231 18232New header file, Include/acstruct.h 18233 18234 Documentation: 18235 18236The programmer reference has been updated for the following new 18237interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18238 18239 ------------------------------------------ 18240Summary of changes for this label: 02_08_01 18241 18242Core ACPI CA Subsystem: Fixed a problem where an error was 18243incorrectly returned if the return resource buffer was larger than 18244the actual data (in the resource interfaces). 18245 18246References to named objects within packages are resolved to the 18247 18248full pathname string before packages are returned directly (via 18249the AcpiEvaluateObject interface) or indirectly via the resource 18250interfaces. 18251 18252Linux OS Services Layer (OSL): 18253 18254Improved /proc battery interface. 18255 18256 18257Added C-state debugging output and other miscellaneous fixes. 18258 18259ASL Compiler Version X2014: 18260 18261All defined method arguments can now be used as local variables, 18262including the ones that are not actually passed in as parameters. 18263The compiler tracks initialization of the arguments and issues an 18264exception if they are used without prior assignment (just like 18265locals). 18266 18267The -o option now specifies a filename prefix that is used for all 18268output files, including the AML output file. Otherwise, the 18269default behavior is as follows: 1) the AML goes to the file 18270specified in the DSDT. 2) all other output files use the input 18271source filename as the base. 18272 18273 ------------------------------------------ 18274Summary of changes for this label: 01_25_01 18275 18276Core ACPI CA Subsystem: Restructured the implementation of object 18277store support within the interpreter. This includes support for 18278the Store operator as well as any ASL operators that include a 18279target operand. 18280 18281Partially implemented support for Implicit Result-to-Target 18282conversion. This is when a result object is converted on the fly 18283to the type of an existing target object. Completion of this 18284support is pending further analysis of the ACPI specification 18285concerning this matter. 18286 18287CPU-specific code has been removed from the subsystem (hardware 18288directory). 18289 18290New Power Management Timer functions added 18291 18292Linux OS Services Layer (OSL): Moved system state transition code 18293to the core, fixed it, and modified Linux OSL accordingly. 18294 18295Fixed C2 and C3 latency calculations. 18296 18297 18298We no longer use the compilation date for the version message on 18299initialization, but retrieve the version from AcpiGetSystemInfo(). 18300 18301Incorporated for fix Sony VAIO machines. 18302 18303Documentation: The Programmer Reference has been updated and 18304reformatted. 18305 18306 18307ASL Compiler: Version X2013: Fixed a problem where the line 18308numbering and error reporting could get out of sync in the 18309presence of multiple include files. 18310 18311 ------------------------------------------ 18312Summary of changes for this label: 01_15_01 18313 18314Core ACPI CA Subsystem: 18315 18316Implemented support for type conversions in the execution of the 18317ASL Concatenate operator (The second operand is converted to 18318match the type of the first operand before concatenation.) 18319 18320Support for implicit source operand conversion is partially 18321implemented. The ASL source operand types Integer, Buffer, and 18322String are freely interchangeable for most ASL operators and are 18323converted by the interpreter on the fly as required. Implicit 18324Target operand conversion (where the result is converted to the 18325target type before storing) is not yet implemented. 18326 18327Support for 32-bit and 64-bit BCD integers is implemented. 18328 18329Problem fixed where a field read on an aligned field could cause a 18330read past the end of the field. 18331 18332New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18333does not return a value, but the caller expects one. (The ASL 18334compiler flags this as a warning.) 18335 18336ASL Compiler: 18337 18338Version X2011: 183391. Static typechecking of all operands is implemented. This 18340prevents the use of invalid objects (such as using a Package where 18341an Integer is required) at compile time instead of at interpreter 18342run-time. 183432. The ASL source line is printed with ALL errors and warnings. 183443. Bug fix for source EOF without final linefeed. 183454. Debug option is split into a parse trace and a namespace trace. 183465. Namespace output option (-n) includes initial values for 18347integers and strings. 183486. Parse-only option added for quick syntax checking. 183497. Compiler checks for duplicate ACPI name declarations 18350 18351Version X2012: 183521. Relaxed typechecking to allow interchangeability between 18353strings, integers, and buffers. These types are now converted by 18354the interpreter at runtime. 183552. Compiler reports time taken by each internal subsystem in the 18356debug output file. 18357 18358 18359 ------------------------------------------ 18360Summary of changes for this label: 12_14_00 18361 18362ASL Compiler: 18363 18364This is the first official release of the compiler. Since the 18365compiler requires elements of the Core Subsystem, this label 18366synchronizes everything. 18367 18368------------------------------------------ 18369Summary of changes for this label: 12_08_00 18370 18371 18372Fixed a problem where named references within the ASL definition 18373of both OperationRegions and CreateXXXFields did not work 18374properly. The symptom was an AE_AML_OPERAND_TYPE during 18375initialization of the region/field. This is similar (but not 18376related internally) to the problem that was fixed in the last 18377label. 18378 18379Implemented both 32-bit and 64-bit support for the BCD ASL 18380functions ToBCD and FromBCD. 18381 18382Updated all legal headers to include "2000" in the copyright 18383years. 18384 18385 ------------------------------------------ 18386Summary of changes for this label: 12_01_00 18387 18388Fixed a problem where method invocations within the ASL definition 18389of both OperationRegions and CreateXXXFields did not work 18390properly. The symptom was an AE_AML_OPERAND_TYPE during 18391initialization of the region/field: 18392 18393 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18394[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18395(0x3005) 18396 18397Fixed a problem where operators with more than one nested 18398subexpression would fail. The symptoms were varied, by mostly 18399AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18400problem that has gone unnoticed until now. 18401 18402 Subtract (Add (1,2), Multiply (3,4)) 18403 18404Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18405previous build (The prefix part of a relative path was handled 18406incorrectly). 18407 18408Fixed a problem where Operation Region initialization failed if 18409the operation region name was a "namepath" instead of a simple 18410"nameseg". Symptom was an AE_NO_OPERAND error. 18411 18412Fixed a problem where an assignment to a local variable via the 18413indirect RefOf mechanism only worked for the first such 18414assignment. Subsequent assignments were ignored. 18415 18416 ------------------------------------------ 18417Summary of changes for this label: 11_15_00 18418 18419ACPI 2.0 table support with backwards support for ACPI 1.0 and the 184200.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18421the AML interpreter does NOT have support for the new 2.0 ASL 18422grammar terms at this time. 18423 18424All ACPI hardware access is via the GAS structures in the ACPI 2.0 18425FADT. 18426 18427All physical memory addresses across all platforms are now 64 bits 18428wide. Logical address width remains dependent on the platform 18429(i.e., "void *"). 18430 18431AcpiOsMapMemory interface changed to a 64-bit physical address. 18432 18433The AML interpreter integer size is now 64 bits, as per the ACPI 184342.0 specification. 18435 18436For backwards compatibility with ACPI 1.0, ACPI tables with a 18437revision number less than 2 use 32-bit integers only. 18438 18439Fixed a problem where the evaluation of OpRegion operands did not 18440always resolve them to numbers properly. 18441 18442------------------------------------------ 18443Summary of changes for this label: 10_20_00 18444 18445Fix for CBN_._STA issue. This fix will allow correct access to 18446CBN_ OpRegions when the _STA returns 0x8. 18447 18448Support to convert ACPI constants (Ones, Zeros, One) to actual 18449values before a package object is returned 18450 18451Fix for method call as predicate to if/while construct causing 18452incorrect if/while behavior 18453 18454Fix for Else block package lengths sometimes calculated wrong (if 18455block > 63 bytes) 18456 18457Fix for Processor object length field, was always zero 18458 18459Table load abort if FACP sanity check fails 18460 18461Fix for problem with Scope(name) if name already exists 18462 18463Warning emitted if a named object referenced cannot be found 18464(resolved) during method execution. 18465 18466 18467 18468 18469 18470------------------------------------------ 18471Summary of changes for this label: 9_29_00 18472 18473New table initialization interfaces: AcpiInitializeSubsystem no 18474longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18475necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18476>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18477AcpiLoadTables 18478 18479Note: These interface changes require changes to all existing OSDs 18480 18481The PCI_Config default address space handler is always installed 18482at the root namespace object. 18483 18484------------------------------------------- 18485Summary of changes for this label: 09_15_00 18486 18487The new initialization architecture is implemented. New 18488interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18489AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18490 18491(Namespace is automatically loaded when a table is loaded) 18492 18493The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1849452 bytes to 32 bytes. There is usually one of these for every 18495namespace object, so the memory savings is significant. 18496 18497Implemented just-in-time evaluation of the CreateField operators. 18498 18499Bug fixes for IA-64 support have been integrated. 18500 18501Additional code review comments have been implemented 18502 18503The so-called "third pass parse" has been replaced by a final walk 18504through the namespace to initialize all operation regions (address 18505spaces) and fields that have not yet been initialized during the 18506execution of the various _INI and REG methods. 18507 18508New file - namespace/nsinit.c 18509 18510------------------------------------------- 18511Summary of changes for this label: 09_01_00 18512 18513Namespace manager data structures have been reworked to change the 18514primary object from a table to a single object. This has 18515resulted in dynamic memory savings of 3X within the namespace and 185162X overall in the ACPI CA subsystem. 18517 18518Fixed problem where the call to AcpiEvFindPciRootBuses was 18519inadvertently left commented out. 18520 18521Reduced the warning count when generating the source with the GCC 18522compiler. 18523 18524Revision numbers added to each module header showing the 18525SourceSafe version of the file. Please refer to this version 18526number when giving us feedback or comments on individual modules. 18527 18528The main object types within the subsystem have been renamed to 18529clarify their purpose: 18530 18531ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18532ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18533ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18534 18535NOTE: no changes to the initialization sequence are included in 18536this label. 18537 18538------------------------------------------- 18539Summary of changes for this label: 08_23_00 18540 18541Fixed problem where TerminateControlMethod was being called 18542multiple times per method 18543 18544Fixed debugger problem where single stepping caused a semaphore to 18545be oversignalled 18546 18547Improved performance through additional parse object caching - 18548added ACPI_EXTENDED_OP type 18549 18550------------------------------------------- 18551Summary of changes for this label: 08_10_00 18552 18553Parser/Interpreter integration: Eliminated the creation of 18554complete parse trees for ACPI tables and control methods. 18555Instead, parse subtrees are created and then deleted as soon as 18556they are processed (Either entered into the namespace or executed 18557by the interpreter). This reduces the use of dynamic kernel 18558memory significantly. (about 10X) 18559 18560Exception codes broken into classes and renumbered. Be sure to 18561recompile all code that includes acexcep.h. Hopefully we won't 18562have to renumber the codes again now that they are split into 18563classes (environment, programmer, AML code, ACPI table, and 18564internal). 18565 18566Fixed some additional alignment issues in the Resource Manager 18567subcomponent 18568 18569Implemented semaphore tracking in the AcpiExec utility, and fixed 18570several places where mutexes/semaphores were being unlocked 18571without a corresponding lock operation. There are no known 18572semaphore or mutex "leaks" at this time. 18573 18574Fixed the case where an ASL Return operator is used to return an 18575unnamed package. 18576 18577------------------------------------------- 18578Summary of changes for this label: 07_28_00 18579 18580Fixed a problem with the way addresses were calculated in 18581AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 18582manifested itself when a Field was created with WordAccess or 18583DwordAccess, but the field unit defined within the Field was less 18584 18585than a Word or Dword. 18586 18587Fixed a problem in AmlDumpOperands() module's loop to pull 18588operands off of the operand stack to display information. The 18589problem manifested itself as a TLB error on 64-bit systems when 18590accessing an operand stack with two or more operands. 18591 18592Fixed a problem with the PCI configuration space handlers where 18593context was getting confused between accesses. This required a 18594change to the generic address space handler and address space 18595setup definitions. Handlers now get both a global handler context 18596(this is the one passed in by the user when executing 18597AcpiInstallAddressSpaceHandler() and a specific region context 18598that is unique to each region (For example, the _ADR, _SEG and 18599_BBN values associated with a specific region). The generic 18600function definitions have changed to the following: 18601 18602typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18603UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18604*HandlerContext, // This used to be void *Context void 18605*RegionContext); // This is an additional parameter 18606 18607typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18608RegionHandle, UINT32 Function, void *HandlerContext, void 18609**RegionContext); // This used to be **ReturnContext 18610 18611------------------------------------------- 18612Summary of changes for this label: 07_21_00 18613 18614Major file consolidation and rename. All files within the 18615interpreter have been renamed as well as most header files. This 18616was done to prevent collisions with existing files in the host 18617OSs -- filenames such as "config.h" and "global.h" seem to be 18618quite common. The VC project files have been updated. All 18619makefiles will require modification. 18620 18621The parser/interpreter integration continues in Phase 5 with the 18622implementation of a complete 2-pass parse (the AML is parsed 18623twice) for each table; This avoids the construction of a huge 18624parse tree and therefore reduces the amount of dynamic memory 18625required by the subsystem. Greater use of the parse object cache 18626means that performance is unaffected. 18627 18628Many comments from the two code reviews have been rolled in. 18629 18630The 64-bit alignment support is complete. 18631 18632------------------------------------------- 18633Summary of changes for this label: 06_30_00 18634 18635With a nod and a tip of the hat to the technology of yesteryear, 18636we've added support in the source code for 80 column output 18637devices. The code is now mostly constrained to 80 columns or 18638less to support environments and editors that 1) cannot display 18639or print more than 80 characters on a single line, and 2) cannot 18640disable line wrapping. 18641 18642A major restructuring of the namespace data structure has been 18643completed. The result is 1) cleaner and more 18644understandable/maintainable code, and 2) a significant reduction 18645in the dynamic memory requirement for each named ACPI object 18646(almost half). 18647 18648------------------------------------------- 18649Summary of changes for this label: 06_23_00 18650 18651Linux support has been added. In order to obtain approval to get 18652the ACPI CA subsystem into the Linux kernel, we've had to make 18653quite a few changes to the base subsystem that will affect all 18654users (all the changes are generic and OS- independent). The 18655effects of these global changes have been somewhat far reaching. 18656Files have been merged and/or renamed and interfaces have been 18657renamed. The major changes are described below. 18658 18659Osd* interfaces renamed to AcpiOs* to eliminate namespace 18660pollution/confusion within our target kernels. All OSD 18661interfaces must be modified to match the new naming convention. 18662 18663Files merged across the subsystem. A number of the smaller source 18664and header files have been merged to reduce the file count and 18665increase the density of the existing files. There are too many 18666to list here. In general, makefiles that call out individual 18667files will require rebuilding. 18668 18669Interpreter files renamed. All interpreter files now have the 18670prefix am* instead of ie* and is*. 18671 18672Header files renamed: The acapi.h file is now acpixf.h. The 18673acpiosd.h file is now acpiosxf.h. We are removing references to 18674the acronym "API" since it is somewhat windowsy. The new name is 18675"external interface" or xface or xf in the filenames.j 18676 18677 18678All manifest constants have been forced to upper case (some were 18679mixed case.) Also, the string "ACPI_" has been prepended to many 18680(not all) of the constants, typedefs, and structs. 18681 18682The globals "DebugLevel" and "DebugLayer" have been renamed 18683"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18684 18685All other globals within the subsystem are now prefixed with 18686"AcpiGbl_" Internal procedures within the subsystem are now 18687prefixed with "Acpi" (with only a few exceptions). The original 18688two-letter abbreviation for the subcomponent remains after "Acpi" 18689- for example, CmCallocate became AcpiCmCallocate. 18690 18691Added a source code translation/conversion utility. Used to 18692generate the Linux source code, it can be modified to generate 18693other types of source as well. Can also be used to cleanup 18694existing source by removing extraneous spaces and blank lines. 18695Found in tools/acpisrc/* 18696 18697OsdUnMapMemory was renamed to OsdUnmapMemory and then 18698AcpiOsUnmapMemory. (UnMap became Unmap). 18699 18700A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18701When set to one, this indicates that the caller wants to use the 18702 18703semaphore as a mutex, not a counting semaphore. ACPI CA uses 18704both types. However, implementers of this call may want to use 18705different OS primitives depending on the type of semaphore 18706requested. For example, some operating systems provide separate 18707 18708"mutex" and "semaphore" interfaces - where the mutex interface is 18709much faster because it doesn't have all the overhead of a full 18710semaphore implementation. 18711 18712Fixed a deadlock problem where a method that accesses the PCI 18713address space can block forever if it is the first access to the 18714space. 18715 18716------------------------------------------- 18717Summary of changes for this label: 06_02_00 18718 18719Support for environments that cannot handle unaligned data 18720accesses (e.g. firmware and OS environments devoid of alignment 18721handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18722been added (via configurable macros) in these three areas: - 18723Transfer of data from the raw AML byte stream is done via byte 18724moves instead of word/dword/qword moves. - External objects are 18725aligned within the user buffer, including package elements (sub- 18726objects). - Conversion of name strings to UINT32 Acpi Names is now 18727done byte-wise. 18728 18729The Store operator was modified to mimic Microsoft's 18730implementation when storing to a Buffer Field. 18731 18732Added a check of the BM_STS bit before entering C3. 18733 18734The methods subdirectory has been obsoleted and removed. A new 18735file, cmeval.c subsumes the functionality. 18736 18737A 16-bit (DOS) version of AcpiExec has been developed. The 18738makefile is under the acpiexec directory. 18739