1---------------------------------------- 203 July 2019. Summary of changes for version 20190703: 3 4 51) ACPICA kernel-resident subsystem: 6 7Remove legacy module-level support code. There were still some remnants 8of the legacy module-level code executions. Since we no longer support 9this option, this is essentially dead code and has been removed from the 10ACPICA source. 11 12iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 13scope. If these named objects are declared outside the root scope, they 14will not be invoked by any host Operating System. 15 16Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC 17one) can be enabled in two situations. First, the GPEs with existing _Lxx 18and _Exx methods are enabled implicitly by ACPICA during system 19initialization. Second, the GPEs without these methods (like GPEs listed 20by _PRW objects for wakeup devices) need to be enabled directly by the 21code that is going to use them (e.g. ACPI power management or device 22drivers). 23 24In the former case, if the status of a given GPE is set to start with, 25its handler method (either _Lxx or _Exx) needs to be invoked to take care 26of the events (possibly) signaled before the GPE was enabled. In the 27latter case, however, the first caller of AcpiEnableGpe() for a given GPE 28should not be expected to care about any events that might be signaled 29through it earlier. In that case, it is better to clear the status of 30the GPE before enabling it, to prevent stale events from triggering 31unwanted actions (like spurious system resume, for example). 32 33For this reason, modify AcpiEvAddGpeReference() to take an additional 34boolean argument indicating whether or not the GPE status needs to be 35cleared when its reference counter changes from zero to one and make 36AcpiEnableGpe() pass TRUE to it through that new argument. 37 38 392) iASL Compiler/Disassembler and ACPICA tools: 40 41The tool generation process has been migrated to MSVC 2017, and all 42project files have been upgraded. The new project files appear in the 43directory \acpica\generate\msvc2017. This change effectively deprecates 44the older project files in \acpica\generate\msvc9. 45 46iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root 47scope. If these named objects are declared outside the root scope, they 48will not be invoked by any host Operating System 49 50---------------------------------------- 5109 May 2019. Summary of changes for version 20190509: 52 53 541) ACPICA kernel-resident subsystem: 55 56Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling 57them") that causes problems with Thunderbolt controllers to occur if a 58dock device is connected at init time (the xhci_hcd and thunderbolt 59modules crash which prevents peripherals connected through them from 60working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA: 61Dispatch active GPEs at init time") to get undone, so the problem 62addressed by commit ecc1165b8b74 appears again as a result of it. 63 64 652) iASL Compiler/Disassembler and ACPICA tools: 66 67Reverted iASL: Additional forward reference detection. This change 68reverts forward reference detection for field declarations. The feature 69unintentionally emitted AML bytecode with incorrect package lengths for 70some ASL code related to Fields and OperationRegions. This malformed AML 71can cause systems to crash 72during boot. The malformed AML bytecode is emitted in iASL version 7320190329 and 20190405. 74 75iASL: improve forward reference detection. This change improves forward 76reference detection for named objects inside of scopes. If a parse object 77has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to 78a named object that is declared later in the AML bytecode. This is 79allowed if the reference is inside of a method and the declaration is 80outside of a method like so: 81 82DefinitionBlock(...) 83{ 84 Method (TEST) 85 { 86 Return (NUM0) 87 } 88 Name (NUM0,0) 89} 90 91However, if the declaration and reference are both in the same method or 92outside any methods, this is a forward reference and should be marked as 93an error because it would result in runtime errors. 94 95DefinitionBlock(...) 96{ 97 Name (BUFF, Buffer (NUM0) {}) // Forward reference 98 Name (NUM0, 0x0) 99 100 Method (TEST) 101 { 102 Local0 = NUM1 103 Name (NUM1, 0x1) // Forward reference 104 return (Local0) 105 } 106} 107 108iASL: Implemented additional buffer overflow analysis for BufferField 109declarations. Check if a buffer index argument to a create buffer field 110operation is beyond the end of the target buffer. 111 112This affects these AML operators: 113 114 AML_CREATE_FIELD_OP 115 AML_CREATE_BIT_FIELD_OP 116 AML_CREATE_BYTE_FIELD_OP 117 AML_CREATE_WORD_FIELD_OP 118 AML_CREATE_DWORD_FIELD_OP 119 AML_CREATE_QWORD_FIELD_OP 120 121 There are three conditions that must be satisfied in order to allow this 122validation at compile time: 123 124 1) The length of the target buffer must be an integer constant 125 2) The index specified in the create* must be an integer constant 126 3) For CreateField, the bit length argument must be non-zero. 127 128Example: 129 Name (BUF1, Buffer() {1,2}) 130 CreateField (BUF1, 7, 9, CF03) // 3: ERR 131 132dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR 133Error 6165 - ^ Buffer index beyond end of 134target buffer 135 136 137---------------------------------------- 13805 April 2019. Summary of changes for version 20190405: 139 140 1411) ACPICA kernel-resident subsystem: 142 143Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop 144unconditionally clearing ACPI IRQs during suspend/resume") was added 145earlier to stop clearing of event status bits unconditionally on suspend 146and resume paths. Though this change fixed an issue on suspend path, it 147introduced regressions on several resume paths. In the case of S0ix, 148events are enabled as part of device suspend path. If status bits for the 149events are set when they are enabled, it could result in premature wake 150from S0ix. If status is cleared for any event that is being enabled so 151that any stale events are cleared out. In case of S0ix, events are 152enabled as part of device suspend path. If status bits for the events are 153set when they are enabled, it could result in premature wake from S0ix. 154 155This change ensures that status is cleared for any event that is being 156enabled so that any stale events are cleared out. 157 158 1592) iASL Compiler/Disassembler and ACPICA tools: 160 161iASL: Implemented an enhanced multiple file compilation that combines 162named objects from all input files to a single namespace. With this 163feature, any unresolved external declarations as well as duplicate named 164object declarations can be detected during compilation rather than 165generating errors much later at runtime. The following commands are 166examples that utilize this feature: 167 iasl dsdt.asl ssdt.asl 168 iasl dsdt.asl ssdt1.asl ssdt2.asl 169 iasl dsdt.asl ssdt*.asl 170 171---------------------------------------- 17229 March 2019. Summary of changes for version 20190329: 173 174 1751) ACPICA kernel-resident subsystem: 176 177Namespace support: Remove the address nodes from global list after method 178termination. The global address list contains pointers to namespace nodes 179that represent Operation Regions. This change properly removes Operation 180Region namespace nodes that are declared dynamically during method 181execution. 182 183Linux: Use a different debug default than ACPICA. There was a divergence 184between Linux and the ACPICA codebases. In order to resolve this 185divergence, Linux now declares its own debug default in aclinux.h 186 187Renamed some internal macros to improve code understanding and 188maintenance. The macros below all operate on single 4-character ACPI 189NameSegs, not generic strings (old -> new): 190 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE 191 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG 192 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG 193 194Fix for missing comma in array declaration for the AcpiGbl_GenericNotify 195table. 196 197Test suite: Update makefiles, add PCC operation region support 198 199 2002) iASL Compiler/Disassembler and Tools: 201 202iASL: Implemented additional illegal forward reference detection. Now 203detect and emit an error upon detection of a forward reference from a 204Field to an Operation Region. This will fail at runtime if allowed to 205pass the compiler. 206 207AcpiExec: Add an address list check for dynamic Operation Regions. This 208feature performs a sanity test for each node the global address list. 209This is done in order to ensure that all dynamic operation regions are 210properly removed from the global address list and no dangling pointers 211are left behind. 212 213Disassembler: Improved generation of resource pathnames. This change 214improves the code that generates resource descriptor and resource tag 215pathnames. The original code used a bunch of str* C library functions 216that caused warnings on some compilers. 217 218iASL: Removed some uses of strncpy and replaced with memmove. The strncpy 219function can overwrite buffers if the calling code is not very careful. 220In the case of generating a module/table header, use of memmove is a 221better implementation. 222 223 2243) Status of new features that have not been completed at this time: 225 226iASL: Implementing an enhanced multiple file compilation into a single 227namespace feature (Status): This feature will be released soon, and 228allows multiple ASL files to be compiled into the same single namespace. 229By doing so, any unresolved external declarations as well as duplicate 230named object declarations can be detected during compilation (rather than 231later during runtime). The following commands are examples that utilize 232this feature: 233 iasl dsdt.asl ssdt.asl 234 iasl dsdt.asl ssdt1.asl ssdt2.asl 235 iasl dsdt.asl ssdt*.asl 236 237ASL tutorial status: Feedback is being gathered internally and the 238current plan is to publish this tutorial on the ACPICA website after a 239final review by a tech writer. 240 241---------------------------------------- 24215 February 2019. Summary of changes for version 20190215: 243 244 2450) Support for ACPI specification version 6.3: 246 247Add PCC operation region support for the AML interpreter. This adds PCC 248operation region support in the AML interpreter and a default handler for 249acpiexec. The change also renames the PCC region address space keyword to 250PlatformCommChannel. 251 252Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 253These methods provide OSPM with health information and device boot 254status. 255 256PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 257defines if the trigger needs to be invoked by OSPM before or at the end 258of kernel crash dump processing/handling operation. 259 260SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 261is used for describing devices such as heterogeneous processors, 262accelerators, GPUs, and IO devices with integrated compute or DMA 263engines. 264 265MADT: Add support for statistical profiling in GICC. Statistical 266profiling extension (SPE) is an architecture-specific feature for ARM. 267 268MADT: Add online capable flag. If this bit is set, system hardware 269supports enabling this processor during OS runtime. 270 271New Error Disconnect Recover Notification value. There are a number of 272scenarios where system Firmware in collaboration with hardware may 273disconnect one or more devices from the rest of the system for purposes 274of error containment. Firmware can use this new notification value to 275alert OSPM of such a removal. 276 277PPTT: New additional fields in Processor Structure Flags. These flags 278provide more information about processor topology. 279 280NFIT/Disassembler: Change a field name from "Address Range" to "Region 281Type". 282 283HMAT updates: make several existing fields to be reserved as well as 284rename subtable 0 to "memory proximity domain attributes". 285 286GTDT: Add support for new GTDT Revision 3. This revision adds information 287for the EL2 timer. 288 289iASL: Update the HMAT example template for new fields. 290 291iASL: Add support for the new revision of the GTDT (Rev 3). 292 293 2941) ACPICA kernel-resident subsystem: 295 296AML Parser: fix the main AML parse loop to correctly skip erroneous 297extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 298byte extended opcodes. If an error occurs during an AML table load, the 299AML parser will continue loading the table by skipping the offending 300opcode. This implements a "load table at any cost" philosophy. 301 302 3032) iASL Compiler/Disassembler and Tools: 304 305iASL: Add checks for illegal object references, such as a reference 306outside of method to an object within a method. Such an object is only 307temporary. 308 309iASL: Emit error for creation of a zero-length operation region. Such a 310region is rather pointless. If encountered, a runtime error is also 311implemented in the interpeter. 312 313Debugger: Fix a possible fault with the "test objects" command. 314 315iASL: Makefile: support parent directory filenames containing embedded 316spaces. 317 318iASL: Update the TPM2 template to revision 4. 319 320iASL: Add the ability to report specific warnings or remarks as errors. 321 322Disassembler: Disassemble OEMx tables as actual AML byte code. 323Previously, these tables were treated as "unknown table". 324 325iASL: Add definition and disassembly for TPM2 revision 3. 326 327iASL: Add support for TPM2 rev 3 compilation. 328 329 330---------------------------------------- 33108 January 2019. Summary of changes for version 20190108: 332 333 3341) ACPICA kernel-resident subsystem: 335 336Updated all copyrights to 2019. This affects all source code modules. 337 338 3392) iASL Compiler/Disassembler and Tools: 340 341ASL test suite (ASLTS): Updated all copyrights to 2019. 342 343Tools: Updated all signon copyrights to 2019. 344 345AcpiExec: Added a new option to dump extra information concerning any 346memory leaks detected by the internal object/cache tracking mechanism. - 347va 348 349iASL: Updated the table template for the TPM2 table to the newest version 350of the table (Revision 4) 351 352 353---------------------------------------- 35413 December 2018. Summary of changes for version 20181213: 355 356 3571) ACPICA Kernel-resident Subsystem: 358 359Fixed some buffer length issues with the GenericSerialBus, related to two 360of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 361which are rarely seen in the field. For these, the LEN field of the ASL 362buffer is now ignored. Hans de Goede 363 364Implemented a new object evaluation trace mechanism for control methods 365and data objects. This includes nested control methods. It is 366particularly useful for examining the ACPI execution during system 367initialization since the output is relatively terse. The flag below 368enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 369 #define ACPI_LV_EVALUATION 0x00080000 370 371Examples: 372 Enter evaluation : _SB.PCI0._INI (Method) 373 Exit evaluation : _SB.PCI0._INI 374 Enter evaluation : _OSI (Method) 375 Exit evaluation : _OSI 376 Enter evaluation : _SB.PCI0.TEST (Method) 377 Nested method call : _SB.PCI0.NST1 378 Exit nested method : _SB.PCI0.NST1 379 Exit evaluation : _SB.PCI0.TEST 380 381Added two recently-defined _OSI strings. See 382https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 383osi. 384 "Windows 2018" 385 "Windows 2018.2" 386 387Update for buffer-to-string conversions via the ToHexString ASL operator. 388A "0x" is now prepended to each of the hex values in the output string. 389This provides compatibility with other ACPI implementations. The ACPI 390specification is somewhat vague on this issue. 391 Example output string after conversion: 392"0x01,0x02,0x03,0x04,0x05,0x06" 393 394Return a run-time error for TermArg expressions within individual package 395elements. Although this is technically supported by the ASL grammar, 396other ACPI implementations do not support this either. Also, this fixes a 397fault if this type of construct is ever encountered (it never has been). 398 399 4002) iASL Compiler/Disassembler and Tools: 401 402iASL: Implemented a new compile option (-ww) that will promote individual 403warnings and remarks to errors. This is intended to enhance the firmware 404build process. 405 406AcpiExec: Implemented a new command-line option (-eo) to support the new 407object evaluation trace mechanism described above. 408 409Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 410instead of a "unknown table" message. 411 412AcpiHelp: Improved support for the "special" predefined names such as 413_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 414used for "xx" and "x". 415 416---------------------------------------- 41731 October 2018. Summary of changes for version 20181031: 418 419 420An Operation Region regression was fixed by properly adding address 421ranges to a global list during initialization. This allows OS to 422accurately check for overlapping regions between native devices (such as 423PCI) and Operation regions as well as checking for region conflicts 424between two Operation Regions. 425 426Added support for the 2-byte extended opcodes in the code/feature that 427attempts to continue parsing during the table load phase. Skip parsing 428Device declarations (and other extended opcodes) when an error occurs 429during parsing. Previously, only single-byte opcodes were supported. 430 431Cleanup: Simplified the module-level code support by eliminating a 432useless global variable (AcpiGbl_GroupModuleLeveCode). 433 434 4352) iASL Compiler/Disassembler and Tools: 436 437iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 438could cause a fault in the preprocessor. This was an inadvertent side- 439effect from moving more allocations/frees to the local cache/memory 440mechanism. 441 442iASL: Enhanced error detection by validating that all NameSeg elements 443within a NamePatch actually exist. The previous behavior was spotty at 444best, and such errors could be improperly ignored at compiler time (never 445at runtime, however. There are two new error messages, as shown in the 446examples below: 447 448dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 449Error 6161 - ^ One or more objects within 450the Pathname do not exist (TTTT.BXXX) 451 452dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 453Error 6160 - One or more prefix Scopes do not exist ^ 454(BBBB.CBF1) 455 456iASL: Disassembler/table-compiler: Added support for the static data 457table TPM2 revision 3 (an older version of TPM2). The support has been 458added for the compiler and the disassembler. 459 460Fixed compilation of DOS format data table file on Unix/Linux systems. 461iASL now properly detects line continuations (\) for DOS format data 462table definition language files on when executing on Unix/Linux. 463 464---------------------------------------- 46503 October 2018. Summary of changes for version 20181003: 466 467 4682) iASL Compiler/Disassembler and Tools: 469 470Fixed a regression introduced in version 20180927 that could cause the 471compiler to fault, especially with NamePaths containing one or more 472carats (^). Such as: ^^_SB_PCI0 473 474Added a new remark for the Sleep() operator when the sleep time operand 475is larger than one second. This is a very long time for the ASL/BIOS code 476and may not be what was intended by the ASL writer. 477 478---------------------------------------- 47927 September 2018. Summary of changes for version 20180927: 480 481 4821) ACPICA kernel-resident subsystem: 483 484Updated the GPE support to clear the status of all ACPI events when 485entering any/all sleep states in order to avoid premature wakeups. In 486theory, this may cause some wakeup events to be missed, but the 487likelihood of this is small. This change restores the original behavior 488of the ACPICA code in order to fix a regression seen from the previous 489"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 490This regression could cause some systems to incorrectly wake immediately. 491 492Updated the execution of the _REG methods during initialization and 493namespace loading to bring the behavior into closer conformance to the 494ACPI specification and other ACPI implementations: 495 496From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 497 "Control methods must assume all operation regions are inaccessible 498until the _REG(RegionSpace, 1) method is executed" 499 500 "The exceptions to this rule are: 5011. OSPM must guarantee that the following operation regions are always 502accessible: 503 SystemIO operation regions. 504 SystemMemory operation regions when accessing memory returned by the 505System Address Map reporting interfaces." 506 507Since the state of both the SystemIO and SystemMemory address spaces are 508defined by the specification to never change, this ACPICA change ensures 509that now _REG is never called on them. This solves some problems seen in 510the field and provides compatibility with other ACPI implementations. An 511update to the upcoming new version of the ACPI specification will help 512clarify this behavior. 513 514Updated the implementation of support for the Generic Serial Bus. For the 515"bidirectional" protocols, the internal implementation now automatically 516creates a return data buffer of the maximum size (255). This handles the 517worst-case for data that is returned from the serial bus handler, and 518fixes some problems seen in the field. This new buffer is directly 519returned to the ASL. As such, there is no true "bidirectional" buffer, 520which matches the ACPI specification. This is the reason for the "double 521store" seen in the example ASL code in the specification, shown below: 522 523Word Process Call (AttribProcessCall): 524 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 525 Field(TOP1, BufferAcc, NoLock, Preserve) 526 { 527 FLD1, 8, // Virtual register at command value 1. 528 } 529 530 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 531 // as BUFF 532 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 533 534 Store(0x5416, DATA) // Save 0x5416 into the data buffer 535 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 536transaction 537 // This is the "double store". The write to 538 // FLD1 returns a new buffer, which is stored 539 // back into BUFF with the second Store. 540 541 5422) iASL Compiler/Disassembler and Tools: 543 544iASL: Implemented detection of extraneous/redundant uses of the Offset() 545operator within a Field Unit list. A remark is now issued for these. For 546example, the first two of the Offset() operators below are extraneous. 547Because both the compiler and the interpreter track the offsets 548automatically, these Offsets simply refer to the current offset and are 549unnecessary. Note, when optimization is enabled, the iASL compiler will 550in fact remove the redundant Offset operators and will not emit any AML 551code for them. 552 553 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 554 Field (OPR1) 555 { 556 Offset (0), // Never needed 557 FLD1, 32, 558 Offset (4), // Redundant, offset is already 4 (bytes) 559 FLD2, 8, 560 Offset (64), // OK use of Offset. 561 FLD3, 16, 562 } 563dsdt.asl 14: Offset (0), 564Remark 2158 - ^ Unnecessary/redundant use of Offset 565operator 566 567dsdt.asl 16: Offset (4), 568Remark 2158 - ^ Unnecessary/redundant use of Offset 569operator 570 571---------------------------------------- 57210 August 2018. Summary of changes for version 20180810: 573 574 5751) ACPICA kernel-resident subsystem: 576 577Initial ACPI table loading: Attempt to continue loading ACPI tables 578regardless of malformed AML. Since migrating table initialization to the 579new module-level code support, the AML interpreter rejected tables upon 580any ACPI error encountered during table load. This is a problem because 581non-serious ACPI errors during table load do not necessarily mean that 582the entire definition block (DSDT or SSDT) is invalid. This change 583improves the table loading by ignoring some types of errors that can be 584generated by incorrect AML. This can range from object type errors, scope 585errors, and index errors. 586 587Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 588during suspend/resume. The status of ACPI events is no longer cleared 589when entering the ACPI S5 system state (power off) which caused some 590systems to power up immediately after turning off power in certain 591situations. This was a functional regression. It was fixed by clearing 592the status of all ACPI events again when entering S5 (for system-wide 593suspend or hibernation the clearing of the status of all events is not 594desirable, as it might cause the kernel to miss wakeup events sometimes). 595Rafael Wysocki. 596 597 5982) iASL Compiler/Disassembler and Tools: 599 600AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 601elements listed in the initialization file were previously initialized 602after the table load and before executing module-level code blocks. 603Recent changes in the module-level code support means that the table load 604becomes a large control method execution. If fields are used within 605module-level code and we are executing with the -fi option, the 606initialization values were used to initialize the namespace object(s) 607only after the table was finished loading. This change Provides an early 608initialization of objects specified in the initialization file so that 609field unit values are populated during the table load (not after the 610load). 611 612AcpiExec: Fixed a small memory leak regression that could result in 613warnings during exit of the utility. These warnings were similar to 614these: 615 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 616 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 617 618---------------------------------------- 61929 June 2018. Summary of changes for version 20180629: 620 621 6221) iASL Compiler/Disassembler and Tools: 623 624iASL: Fixed a regression related to the use of the ASL External 625statement. Error checking for the use of the External() statement has 626been relaxed. Previously, a restriction on the use of External meant that 627the referenced named object was required to be defined in a different 628table (an SSDT). Thus it would be an error to declare an object as an 629external and then define the same named object in the same table. For 630example: 631 DefinitionBlock (...) 632 { 633 External (DEV1) 634 Device (DEV1){...} // This was an error 635 } 636However, this behavior has caused regressions in some existing ASL code, 637because there is code that depends on named objects and externals (with 638the same name) being declared in the same table. This change will allow 639the ASL code above to compile without errors or warnings. 640 641iASL: Implemented ASL language extensions for four operators to make some 642of their arguments optional instead of required: 643 1) Field (RegionName, AccessType, LockRule, UpdateRule) 644 2) BankField (RegionName, BankName, BankValue, 645 AccessType, LockRule, UpdateRule) 646 3) IndexField (IndexName, DataName, 647 AccessType, LockRule, UpdateRule) 648For the Field operators above, the AccessType, LockRule, and UpdateRule 649are now optional arguments. The default values are: 650 AccessType: AnyAcc 651 LockRule: NoLock 652 UpdateRule: Preserve 653 4) Mutex (MutexName, SyncLevel) 654For this operator, the SyncLevel argument is now optional. This argument 655is rarely used in any meaningful way by ASL code, and thus it makes sense 656to make it optional. The default value is: 657 SyncLevel: 0 658 659iASL: Attempted use of the ASL Unload() operator now results in the 660following warning: 661 "Unload is not supported by all operating systems" 662This is in fact very true, and the Unload operator may be completely 663deprecated in the near future. 664 665AcpiExec: Fixed a regression for the -fi option (Namespace initialization 666file. Recent changes in the ACPICA module-level code support altered the 667table load/initialization sequence . This means that the table load has 668become a large method execution of the table itself. If Operation Region 669Fields are used within any module-level code and the -fi option was 670specified, the initialization values were populated only after the table 671had completely finished loading (and thus the module-level code had 672already been executed). This change moves the initialization of objects 673listed in the initialization file to before the table is executed as a 674method. Field unit values are now initialized before the table execution 675is performed. 676 677---------------------------------------- 67831 May 2018. Summary of changes for version 20180531: 679 680 6811) ACPICA kernel-resident Subsystem: 682 683Implemented additional support to help ensure that a DSDT or SSDT is 684fully loaded even if errors are incurred during the load. The majority of 685the problems that are seen is the failure of individual AML operators 686that occur during execution of any module-level code (MLC) existing in 687the table. This support adds a mechanism to abort the current ASL 688statement (AML opcode), emit an error message, and to simply move on to 689the next opcode -- instead of aborting the entire table load. This is 690different than the execution of a control method where the entire method 691is aborted upon any error. The goal is to perform a very "best effort" to 692load the ACPI tables. The most common MLC errors that have been seen in 693the field are direct references to unresolved ASL/AML symbols (referenced 694directly without the use of the CondRefOf operator to validate the 695symbol). This new ACPICA behavior is now compatible with other ACPI 696implementations. 697 698Interpreter: The Unload AML operator is no longer supported for the 699reasons below. An AE_NOT_IMPLEMENTED exception is returned. 7001) A correct implementation on at least some hosts may not be possible. 7012) Other ACPI implementations do not correctly/fully support it. 7023) It requires host device driver support which is not known to exist. 703 (To properly support namespace unload out from underneath.) 7044) This AML operator has never been seen in the field. 705 706Parser: Added a debug option to dump AML parse sub-trees as they are 707being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 708ACPI_DB_PARSE_TREES. 709 710Debugger: Reduced the verbosity for errors incurred during table load and 711module-level code execution. 712 713Completed an investigation into adding a namespace node "owner list" 714instead of the current "owner ID" associated with namespace nodes. This 715list would link together all nodes that are owned by an individual 716control method. The purpose would be to enhance control method execution 717by speeding up cleanup during method exit (all namespace nodes created by 718a method are deleted upon method termination.) Currently, the entire 719namespace must be searched for matching owner IDs if (and only if) the 720method creates named objects outside of the local scope. However, by far 721the most common case is that methods create objects locally, not outside 722the method scope. There is already an ACPICA optimization in place that 723only searches the entire namespace in the rare case of a method creating 724objects elsewhere in the namespace. Therefore, it is felt that the 725overhead of adding an additional pointer to each namespace node to 726implement the owner list makes this feature unnecessary. 727 728 7292) iASL Compiler/Disassembler and Tools: 730 731iASL, Disassembler, and Template generator: Implemented support for 732Revision D of the IORT table. Adds a new subtable that is used to specify 733SMMUv3 PMCGs. rmurphy-arm. 734 735Disassembler: Restored correct table header validation for the "special" 736ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 737table header and must be special-cased. This was a regression that has 738been present for apparently a long time. 739 740AcpiExec: Reduced verbosity of the local exception handler implemented 741within acpiexec. This handler is invoked by ACPICA upon any exceptions 742generated during control method execution. A new option was added: -vh 743restores the original verbosity level if desired. 744 745AcpiExec: Changed the default base from decimal to hex for the -x option 746(set debug level). This simplifies the use of this option and matches the 747behavior of the corresponding iASL -x option. 748 749AcpiExec: Restored a force-exit on multiple control-c (sigint) 750interrupts. This allows program termination even if other issues cause 751the control-c to fail. 752 753ASL test suite (ASLTS): Added tests for the recently implemented package 754element resolution mechanism that allows forward references to named 755objects from individual package elements (this mechanism provides 756compatibility with other ACPI implementations.) 757 758 759---------------------------------------- 7608 May 2018. Summary of changes for version 20180508: 761 762 7631) ACPICA kernel-resident subsystem: 764 765Completed the new (recently deployed) package resolution mechanism for 766the Load and LoadTable ASL/AML operators. This fixes a regression that 767was introduced in version 20180209 that could result in an 768AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 769(SSDT) that contains package objects. 770 771 7722) iASL Compiler/Disassembler and Tools: 773 774AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 7751 MB. This change allows for table offsets within the acpidump file to be 776up to 8 characters. These changes are backwards compatible with existing 777acpidump files. 778 779 780---------------------------------------- 78127 April 2018. Summary of changes for version 20180427: 782 783 7841) ACPICA kernel-resident subsystem: 785 786Debugger: Added support for Package objects in the "Test Objects" 787command. This command walks the entire namespace and evaluates all named 788data objects (Integers, Strings, Buffers, and now Packages). 789 790Improved error messages for the namespace root node. Originally, the root 791was referred to by the confusing string "\___". This has been replaced by 792"Namespace Root" for clarification. 793 794Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 795Ian King <colin.king@canonical.com>. 796 797 7982) iASL Compiler/Disassembler and Tools: 799 800iASL: Implemented support to detect and flag illegal forward references. 801For compatibility with other ACPI implementations, these references are 802now illegal at the root level of the DSDT or SSDTs. Forward references 803have always been illegal within control methods. This change should not 804affect existing ASL/AML code because of the fact that these references 805have always been illegal in the other ACPI implementation. 806 807iASL: Added error messages for the case where a table OEM ID and OEM 808TABLE ID strings are longer than the ACPI-defined length. Previously, 809these strings were simply silently truncated. 810 811iASL: Enhanced the -tc option (which creates an AML hex file in C, 812suitable for import into a firmware project): 813 1) Create a unique name for the table, to simplify use of multiple 814SSDTs. 815 2) Add a protection #ifdef in the file, similar to a .h header file. 816With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 817evan.lloyd@arm.com 818 819AcpiExec: Added a new option, -df, to disable the local fault handler. 820This is useful during debugging, where it may be desired to drop into a 821debugger on a fault. 822 823---------------------------------------- 82413 March 2018. Summary of changes for version 20180313: 825 826 8271) ACPICA kernel-resident subsystem: 828 829Implemented various improvements to the GPE support: 830 8311) Dispatch all active GPEs at initialization time so that no GPEs are 832lost. 8332) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 834before devices are enumerated. 8353) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 836IRQs are not lost. 8374) Add parallel GPE handling to eliminate the possibility of dispatching 838the same GPE twice. 8395) Dispatch any pending GPEs after enabling for the first time. 840 841AcpiGetObjectInfo - removed support for the _STA method. This was causing 842problems on some platforms. 843 844Added a new _OSI string, "Windows 2017.2". 845 846Cleaned up and simplified the module-level code support. These changes 847are in preparation for the eventual removal of the legacy MLC support 848(deferred execution), replaced by the new MLC architecture which executes 849the MLC as a table is loaded (DSDT/SSDTs). 850 851Changed a compile-time option to a runtime option. Changes the option to 852ignore ACPI table load-time package resolution errors into a runtime 853option. Used only for platforms that generate many AE_NOT_FOUND errors 854during boot. AcpiGbl_IgnorePackageResolutionErrors. 855 856Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 857ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 858compilation errors from unused variables (seen with some compilers). 859 860 8612) iASL Compiler/Disassembler and Tools: 862 863ASLTS: parallelized execution in order to achieve an (approximately) 2X 864performance increase. 865 866ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 867error reporting. 868 869---------------------------------------- 87009 February 2018. Summary of changes for version 20180209: 871 872 8731) ACPICA kernel-resident subsystem: 874 875Completed the final integration of the recent changes to Package Object 876handling and the module-level AML code support. This allows forward 877references from individual package elements when the package object is 878declared from within module-level code blocks. Provides compatibility 879with other ACPI implementations. 880 881The new architecture for the AML module-level code has been completed and 882is now the default for the ACPICA code. This new architecture executes 883the module-level code in-line as the ACPI table is loaded/parsed instead 884of the previous architecture which deferred this code until after the 885table was fully loaded. This solves some ASL code ordering issues and 886provides compatibility with other ACPI implementations. At this time, 887there is an option to fallback to the earlier architecture, but this 888support is deprecated and is planned to be completely removed later this 889year. 890 891Added a compile-time option to ignore AE_NOT_FOUND exceptions during 892resolution of named reference elements within Package objects. Although 893this is potentially a serious problem, it can generate a lot of 894noise/errors on platforms whose firmware carries around a bunch of unused 895Package objects. To disable these errors, define 896ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 897errors are always reported for ACPICA applications such as AcpiExec. 898 899Fixed a regression related to the explicit type-conversion AML operators 900(ToXXXX). The regression was introduced early in 2017 but was not seen 901until recently because these operators are not fully supported by other 902ACPI implementations and are thus rarely used by firmware developers. The 903operators are defined by the ACPI specification to not implement the 904"implicit result object conversion". The regression incorrectly 905introduced this object conversion for the following explicit conversion 906operators: 907 ToInteger 908 ToString 909 ToBuffer 910 ToDecimalString 911 ToHexString 912 ToBCD 913 FromBCD 914 915 9162) iASL Compiler/Disassembler and Tools: 917 918iASL: Fixed a problem with the compiler constant folding feature as 919related to the ToXXXX explicit conversion operators. These operators do 920not support the "implicit result object conversion" by definition. Thus, 921ASL expressions that use these operators cannot be folded to a simple 922Store operator because Store implements the implicit conversion. This 923change uses the CopyObject operator for the ToXXXX operator folding 924instead. CopyObject is defined to not implement implicit result 925conversions and is thus appropriate for folding the ToXXXX operators. 926 927iASL: Changed the severity of an error condition to a simple warning for 928the case where a symbol is declared both locally and as an external 929symbol. This accommodates existing ASL code. 930 931AcpiExec: The -ep option to enable the new architecture for module-level 932code has been removed. It is replaced by the -dp option which instead has 933the opposite effect: it disables the new architecture (the default) and 934enables the legacy architecture. When the legacy code is removed in the 935future, the -dp option will be removed also. 936 937---------------------------------------- 93805 January 2018. Summary of changes for version 20180105: 939 940 9411) ACPICA kernel-resident subsystem: 942 943Updated all copyrights to 2018. This affects all source code modules. 944 945Fixed a possible build error caused by an unresolved reference to the 946AcpiUtSafeStrncpy function. 947 948Removed NULL pointer arithmetic in the various pointer manipulation 949macros. All "(void *) NULL" constructs are converted to "(void *) 0". 950This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 951 952Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 953Mittal. 954 955 9562) iASL Compiler/Disassembler and Tools: 957 958ASLTS: Updated all copyrights to 2018. 959 960Tools: Updated all signon copyrights to 2018. 961 962AcpiXtract: Fixed a regression related to ACPI table signatures where the 963signature was truncated to 3 characters (instead of 4). 964 965AcpiExec: Restore the original terminal mode after the use of the -v and 966-vd options. 967 968ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 969 970---------------------------------------- 97114 December 2017. Summary of changes for version 20171214: 972 973 9741) ACPICA kernel-resident subsystem: 975 976Fixed a regression in the external (public) AcpiEvaluateObjectTyped 977interface where the optional "pathname" argument had inadvertently become 978a required argument returning an error if omitted (NULL pointer 979argument). 980 981Fixed two possible memory leaks related to the recently developed "late 982resolution" of reference objects within ASL Package Object definitions. 983 984Added two recently defined _OSI strings: "Windows 2016" and "Windows 9852017". Mario Limonciello. 986 987Implemented and deployed a safer version of the C library function 988strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 989creation of unterminated strings as a possible result of a standard 990strncpy. 991 992Cleaned up and restructured the global variable file (acglobal.h). There 993are many changes, but no functional changes. 994 995 9962) iASL Compiler/Disassembler and Tools: 997 998iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 999optional OemData field at the end of the table was incorrectly required 1000for proper compilation. It is now correctly an optional field. 1001 1002ASLTS: The entire suite was converted from standard ASL to the ASL+ 1003language, using the ASL-to-ASL+ converter which is integrated into the 1004iASL compiler. A binary compare of all output files has verified the 1005correctness of the conversion. 1006 1007iASL: Fixed the source code build for platforms where "char" is unsigned. 1008This affected the iASL lexer only. Jung-uk Kim. 1009 1010---------------------------------------- 101110 November 2017. Summary of changes for version 20171110: 1012 1013 10141) ACPICA kernel-resident subsystem: 1015 1016This release implements full support for ACPI 6.2A: 1017 NFIT - Added a new subtable, "Platform Capabilities Structure" 1018No other changes to ACPICA were required, since ACPI 6.2A is primarily an 1019errata release of the specification. 1020 1021Other ACPI table changes: 1022 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 1023 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 1024Linton 1025 1026Utilities: Modified the string/integer conversion functions to use 1027internal 64-bit divide support instead of a native divide. On 32-bit 1028platforms, a 64-bit divide typically requires a library function which 1029may not be present in the build (kernel or otherwise). 1030 1031Implemented a targeted error message for timeouts returned from the 1032Embedded Controller device driver. This is seen frequently enough to 1033special-case an AE_TIME returned from an EC operation region access: 1034 "Timeout from EC hardware or EC device driver" 1035 1036Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 1037runtime error messages have the identical prefix. 1038 1039 10402) iASL Compiler/Disassembler and Tools: 1041 1042AcpiXtract: Fixed a problem with table header detection within the 1043acpidump file. Processing a table could be ended early if a 0x40 (@) 1044appears in the original binary table, resulting in the @ symbol appearing 1045in the decoded ASCII field at the end of the acpidump text line. The 1046symbol caused acpixtract to incorrectly think it had reached the end of 1047the current table and the beginning of a new table. 1048 1049AcpiXtract: Added an option (-f) to ignore some errors during table 1050extraction. This initial implementation ignores non-ASCII and non- 1051printable characters found in the acpidump text file. 1052 1053TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 1054for ASLTS. This feature is used to track memory allocations from 1055different memory caches within the ACPICA code. At the end of an ASLTS 1056run, these memory statistics are recorded and stored in a log file. 1057 1058Debugger (user-space version): Implemented a simple "Background" command. 1059Creates a new thread to execute a control method in the background, while 1060control returns to the debugger prompt to allow additional commands. 1061 Syntax: Background <Namepath> [Arguments] 1062 1063---------------------------------------- 106429 September 2017. Summary of changes for version 20170929: 1065 1066 10671) ACPICA kernel-resident subsystem: 1068 1069Redesigned and implemented an improved ASL While() loop timeout 1070mechanism. This mechanism is used to prevent infinite loops in the kernel 1071AML interpreter caused by either non-responsive hardware or incorrect AML 1072code. The new implementation uses AcpiOsGetTimer instead of a simple 1073maximum loop count, and is thus more accurate and constant across 1074different machines. The default timeout is currently 30 seconds, but this 1075may be adjusted later. 1076 1077Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 1078better reflect the new implementation of the loop timeout mechanism. 1079 1080Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 1081and to fix an off-by-one error. Jung-uk Kim. 1082 1083Fixed an EFI build problem by updating the makefiles to for a new file 1084that was added, utstrsuppt.c 1085 1086 10872) iASL Compiler/Disassembler and Tools: 1088 1089Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 1090includes support in the table disassembler, compiler, and template 1091generator. 1092 1093iASL: Added an exception for an illegal type of recursive method 1094invocation. If a method creates named objects, the first recursive call 1095will fail at runtime. This change adds an error detection at compile time 1096to catch the problem up front. Note: Marking such a method as 1097"serialized" will not help with this problem, because the same thread can 1098acquire the method mutex more than once. Example compiler and runtime 1099output: 1100 1101 Method (MTH1) 1102 { 1103 Name (INT1, 1) 1104 MTH1 () 1105 } 1106 1107 dsdt.asl 22: MTH1 () 1108 Error 6152 - ^ Illegal recursive call to method 1109 that creates named objects (MTH1) 1110 1111Previous runtime exception: 1112 ACPI Error: [INT1] Namespace lookup failure, 1113 AE_ALREADY_EXISTS (20170831/dswload2-465) 1114 1115iASL: Updated support for External() opcodes to improve namespace 1116management and error detection. These changes are related to issues seen 1117with multiple-segment namespace pathnames within External declarations, 1118such as below: 1119 1120 External(\_SB.PCI0.GFX0, DeviceObj) 1121 External(\_SB.PCI0.GFX0.ALSI) 1122 1123iASL: Implemented support for multi-line error/warning messages. This 1124enables more detailed and helpful error messages as below, from the 1125initial deployment for the duplicate names error: 1126 1127 DSDT.iiii 1692: Device(PEG2) { 1128 Error 6074 - ^ Name already exists in scope 1129(PEG2) 1130 1131 Original name creation/declaration below: 1132 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 1133 1134AcpiXtract: Added additional flexibility to support differing input hex 1135dump formats. Specifically, hex dumps that contain partial disassembly 1136and/or comments within the ACPI table data definition. There exist some 1137dump utilities seen in the field that create this type of hex dump (such 1138as Simics). For example: 1139 1140 DSDT @ 0xdfffd0c0 (10999 bytes) 1141 Signature DSDT 1142 Length 10999 1143 Revision 1 1144 Checksum 0xf3 (Ok) 1145 OEM_ID BXPC 1146 OEM_table_id BXDSDT 1147 OEM_revision 1 1148 Creator_id 1280593481 1149 Creator_revision 537399345 1150 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 1151 ... 1152 2af0: 5f 4c 30 46 00 a4 01 1153 1154Test suite: Miscellaneous changes/fixes: 1155 More cleanup and simplification of makefiles 1156 Continue compilation of test cases after a compile failure 1157 Do not perform binary compare unless both files actually exist 1158 1159iASL: Performed some code/module restructuring. Moved all memory 1160allocation functions to new modules. Two new files, aslallocate.c and 1161aslcache.c 1162 1163---------------------------------------- 116431 August 2017. Summary of changes for version 20170831: 1165 1166 11671) ACPICA kernel-resident subsystem: 1168 1169Implemented internal support for full 64-bit addresses that appear in all 1170Generic Address Structure (GAS) structures. Previously, only the lower 32 1171bits were used. Affects the use of GAS structures in the FADT and other 1172tables, as well as the GAS structures passed to the AcpiRead and 1173AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 1174 1175Added header support for the PDTT ACPI table (Processor Debug Trigger 1176Table). Full support in the iASL Data Table Compiler and disassembler is 1177forthcoming. 1178 1179 11802) iASL Compiler/Disassembler and Tools: 1181 1182iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 1183Properties Topology Table) where a flag bit was specified in the wrong 1184bit position ("Line Size Valid", bit 6). 1185 1186iASL: Implemented support for Octal integer constants as defined by the 1187ASL language grammar, per the ACPI specification. Any integer constant 1188that starts with a zero is an octal constant. For example, 1189 Store (037777, Local0) /* Octal constant */ 1190 Store (0x3FFF, Local0) /* Hex equivalent */ 1191 Store (16383, Local0) /* Decimal equivalent */ 1192 1193iASL: Improved overflow detection for 64-bit string conversions during 1194compilation of integer constants. "Overflow" in this case means a string 1195that represents an integer that is too large to fit into a 64-bit value. 1196Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 1197the low-order 32 bits with a warning, as previously implemented. Several 1198new exceptions are defined that indicate a 64-bit overflow, as well as 1199the base (radix) that was used during the attempted conversion. Examples: 1200 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 1201 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 1202 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 1203 1204iASL: Added a warning for the case where a ResourceTemplate is declared 1205with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 1206this case, the resulting template is created with a single END_TAG 1207descriptor, which is essentially useless. 1208 1209iASL: Expanded the -vw option (ignore specific warnings/remarks) to 1210include compilation error codes as well. 1211 1212---------------------------------------- 121328 July 2017. Summary of changes for version 20170728: 1214 1215 12161) ACPICA kernel-resident subsystem: 1217 1218Fixed a regression seen with small resource descriptors that could cause 1219an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 1220 1221AML interpreter: Implemented a new feature that allows forward references 1222from individual named references within package objects that are 1223contained within blocks of "module-level code". This provides 1224compatibility with other ACPI implementations and supports existing 1225firmware that depends on this feature. Example: 1226 1227 Name (ABCD, 1) 1228 If (ABCD) /* An If() at module-level */ 1229 { 1230 Name (PKG1, Package() 1231 { 1232 INT1 /* Forward reference to object INT1 1233*/ 1234 }) 1235 Name (INT1, 0x1234) 1236 } 1237 1238AML Interpreter: Fixed a problem with the Alias() operator where aliases 1239to some ASL objects were not handled properly. Objects affected are: 1240Mutex, Event, and OperationRegion. 1241 1242AML Debugger: Enhanced to properly handle AML Alias objects. These 1243objects have one level of indirection which was not fully supported by 1244the debugger. 1245 1246Table Manager: Added support to detect and ignore duplicate SSDTs within 1247the XSDT/RSDT. This error in the XSDT has been seen in the field. 1248 1249EFI and EDK2 support: 1250 Enabled /WX flag for MSVC builds 1251 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1252 Added local support for 64-bit multiply and shift operations 1253 Added support to compile acpidump.efi on Windows 1254 Added OSL function stubs for interfaces not used under EFI 1255 1256Added additional support for the _DMA predefined name. _DMA returns a 1257buffer containing a resource template. This change add support within the 1258resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1259resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1260 1261 12622) iASL Compiler/Disassembler and Tools: 1263 1264iASL: Fixed a problem where the internal input line buffer(s) could 1265overflow if there are very long lines in the input ASL source code file. 1266Implemented buffer management that automatically increases the size of 1267the buffers as necessary. 1268 1269iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1270errors. If the specified exception is not raised during compilation, the 1271compiler emits an error. This is intended to support the ASL test suite, 1272but may be useful in other contexts. 1273 1274iASL: Implemented a new predefined macro, __METHOD__, which returns a 1275string containing the name of the current control method that is being 1276compiled. 1277 1278iASL: Implemented debugger and table compiler support for the SDEI ACPI 1279table (Software Delegated Exception Interface). James Morse 1280<james.morse@arm.com> 1281 1282Unix/Linux makefiles: Added an option to disable compile optimizations. 1283The disable occurs when the NOOPT flag is set to TRUE. 1284theracermaster@gmail.com 1285 1286Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1287when there are different tables for 32-bit versus 64-bit. 1288 1289Enhanced error reporting for the ASL test suite (ASLTS) by removing 1290unnecessary/verbose text, and emit the actual line number where an error 1291has occurred. These changes are intended to improve the usefulness of the 1292test suite. 1293 1294---------------------------------------- 129529 June 2017. Summary of changes for version 20170629: 1296 1297 12981) ACPICA kernel-resident subsystem: 1299 1300Tables: Implemented a deferred ACPI table verification. This is useful 1301for operating systems where the tables cannot be verified in the early 1302initialization stage due to early memory mapping limitations on some 1303architectures. Lv Zheng. 1304 1305Tables: Removed the signature validation for dynamically loaded tables. 1306Provides compatibility with other ACPI implementations. Previously, only 1307SSDT tables were allowed, as per the ACPI specification. Now, any table 1308signature can be used via the Load() operator. Lv Zheng. 1309 1310Tables: Fixed several mutex issues that could cause errors during table 1311acquisition. Lv Zheng. 1312 1313Tables: Fixed a problem where an ACPI warning could be generated if a 1314null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1315 1316Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1317AcpiPutTable interfaces. This applies to the "late stage" table loading 1318when the use of AcpiPutTable is no longer required (since the system 1319memory manager is fully running and available). Lv Zheng. 1320 1321Fixed/Reverted a regression during processing of resource descriptors 1322that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1323exception in this case. 1324 1325Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1326I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1327 1328Interpreter: Fixed a possible fault if an Alias operator with an invalid 1329or duplicate target is encountered during Alias creation in 1330AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1331 1332Added an option to use designated initializers for function pointers. 1333Kees Cook <keescook@google.com> 1334 1335 13362) iASL Compiler/Disassembler and Tools: 1337 1338iASL: Allow compilation of External declarations with target pathnames 1339that refer to existing named objects within the table. Erik Schmauss. 1340 1341iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1342FieldUnit name also is declared via External in the same table. Erik 1343Schmauss. 1344 1345iASL: Allow existing scope names within pathnames used in External 1346statements. For example: 1347 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1348 Device (ABCD) 1349 1350iASL: IORT ACPI table: Implemented changes required to decode the new 1351Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1352compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1353 1354Disassembler: Don't abort disassembly on errors from External() 1355statements. Erik Schmauss. 1356 1357Disassembler: fixed a possible fault when one of the Create*Field 1358operators references a Resource Template. ACPICA Bugzilla 1396. 1359 1360iASL: In the source code, resolved some naming inconsistences across the 1361parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1362Adds a new file, aslparseop.c 1363 1364---------------------------------------- 136531 May 2017. Summary of changes for version 20170531: 1366 1367 13680) ACPI 6.2 support: 1369 1370The ACPI specification version 6.2 has been released and is available at 1371http://uefi.org/specifications 1372 1373This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1374are summarized below. 1375 1376New ACPI tables (Table Compiler/Disassembler/Templates): 1377 HMAT (Heterogeneous Memory Attributes Table) 1378 WSMT (Windows SMM Security Mitigation Table) 1379 PPTT (Processor Properties Topology Table) 1380 1381New subtables for existing ACPI tables: 1382 HEST (New subtable, Arch-deferred machine check) 1383 SRAT (New subtable, Arch-specific affinity structure) 1384 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1385 1386Simple updates for existing ACPI tables: 1387 BGRT (two new flag bits) 1388 HEST (New bit defined for several subtables, GHES_ASSIST) 1389 1390New Resource Descriptors and Resource macros (Compiler/Disassembler): 1391 PinConfig() 1392 PinFunction() 1393 PinGroup() 1394 PinGroupConfig() 1395 PinGroupFunction() 1396 New type for hardware error notification (section 18.3.2.9) 1397 1398New predefined names/methods (Compiler/Interpreter): 1399 _HMA (Heterogeneous Memory Attributes) 1400 _LSI (Label Storage Information) 1401 _LSR (Label Storage Read) 1402 _LSW (Label Storage Write) 1403 1404ASL grammar/macro changes (Compiler): 1405 For() ASL macro, implemented with the AML while operator 1406 Extensions to Concatenate operator 1407 Support for multiple definition blocks in same ASL file 1408 Clarification for Buffer operator 1409 Allow executable AML code underneath all scopes (Devices, etc.) 1410 Clarification/change for the _OSI return value 1411 ASL grammar update for reference operators 1412 Allow a zero-length string for AML filename in DefinitionBlock 1413 1414Miscellaneous: 1415 New device object notification value 1416 Remove a notify value (0x0C) for graceful shutdown 1417 New UUIDs for processor/cache properties and 1418 physical package property 1419 New _HID, ACPI0014 (Wireless Power Calibration Device) 1420 1421 14221) ACPICA kernel-resident subsystem: 1423 1424Added support to disable ACPI events on hardware-reduced platforms. 1425Eliminates error messages of the form "Could not enable fixed event". Lv 1426Zheng 1427 1428Fixed a problem using Device/Thermal objects with the ObjectType and 1429DerefOf ASL operators. This support had not been fully/properly 1430implemented. 1431 1432Fixed a problem where if a Buffer object containing a resource template 1433was longer than the actual resource template, an error was generated -- 1434even though the AML is legal. This case has been seen in the field. 1435 1436Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 1437The values for DUAL_PIC and MULTIPLE_APIC were reversed. 1438 1439Added header file changes for the TPM2 ACPI table. Update to new version 1440of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 1441 1442Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 1443These interfaces are intended to be used only in conjunction with the 1444predefined _DLM method (Device Lock Method). "This object appears in a 1445device scope when AML access to the device must be synchronized with the 1446OS environment". 1447 1448Example Code and Data Size: These are the sizes for the OS-independent 1449acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1450debug version of the code includes the debug output trace mechanism and 1451has a much larger code and data size. 1452 1453 Current Release: 1454 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 1455 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 1456 Previous Release: 1457 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1458 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1459 1460 14612) iASL Compiler/Disassembler and Tools: 1462 1463iASL: Fixed a problem where an External() declaration could not refer to 1464a Field Unit. Erik Schmauss. 1465 1466Disassembler: Improved support for the Switch/Case operators. This 1467feature will disassemble AML code back to the original Switch operators 1468when possible, instead of an If..Else sequence. David Box 1469 1470iASL and disassembler: Improved the handling of multiple extraneous 1471parentheses for both ASL input and disassembled ASL output. 1472 1473Improved the behavior of the iASL compiler and disassembler to detect 1474improper use of external declarations 1475 1476Disassembler: Now aborts immediately upon detection of an unknown AML 1477opcode. The AML parser has no real way to recover from this, and can 1478result in the creation of an ill-formed parse tree that causes errors 1479later during the disassembly. 1480 1481All tools: Fixed a problem where the Unix application OSL did not handle 1482control-c correctly. For example, a control-c could incorrectly wake the 1483debugger. 1484 1485AcpiExec: Improved the Control-C handling and added a handler for 1486segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1487environments. 1488 1489Reduced the verbosity of the generic unix makefiles. Previously, each 1490compilation displayed the full set of compiler options. This has been 1491eliminated as the options are easily inspected within the makefiles. Each 1492compilation now results in a single line of output. 1493 1494---------------------------------------- 149503 March 2017. Summary of changes for version 20170303: 1496 1497 14980) ACPICA licensing: 1499 1500The licensing information at the start of each source code module has 1501been updated. In addition to the Intel license, the dual GPLv2/BSD 1502license has been added for completeness. Now, a single version of the 1503source code should be suitable for all ACPICA customers. This is the 1504major change for this release since it affects all source code modules. 1505 1506 15071) ACPICA kernel-resident subsystem: 1508 1509Fixed two issues with the common asltypes.h header that could cause 1510problems in some environments: (Kim Jung-uk) 1511 Removed typedef for YY_BUFFER_STATE ? 1512 Fixes an error with earlier versions of Flex. 1513 Removed use of FILE typedef (which is only defined in stdio.h) 1514 1515 15162) iASL Compiler/Disassembler and Tools: 1517 1518Disassembler: fixed a regression introduced in 20170224. A fix for a 1519memory leak related to resource descriptor tags (names) could fault when 1520the disassembler was generated with 64-bit compilers. 1521 1522The ASLTS test suite has been updated to implement a new testing 1523architecture. During generation of the suite from ASL source, both the 1524ASL and ASL+ compilers are now validated, as well as the disassembler 1525itself (Erik Schmauss). The architecture executes as follows: 1526 1527 For every ASL source module: 1528 Compile (legacy ASL compilation) 1529 Disassemble the resulting AML to ASL+ source code 1530 Compile the new ASL+ module 1531 Perform a binary compare on the legacy AML and the new ASL+ AML 1532 The ASLTS suite then executes normally using the AML binaries. 1533 1534---------------------------------------- 153524 February 2017. Summary of changes for version 20170224: 1536 1537 15381) ACPICA kernel-resident subsystem: 1539 1540Interpreter: Fixed two issues with the control method return value auto- 1541repair feature, where an attempt to double-delete an internal object 1542could result in an ACPICA warning (for _CID repair and others). No fault 1543occurs, however, because the attempted deletion (actually a release to an 1544internal cache) is detected and ignored via object poisoning. 1545 1546Debugger: Fixed an AML interpreter mutex issue during the single stepping 1547of control methods. If certain debugger commands are executed during 1548stepping, a mutex acquire/release error could occur. Lv Zheng. 1549 1550Fixed some issues generating ACPICA with the Intel C compiler by 1551restoring the original behavior and compiler-specific include file in 1552acenv.h. Lv Zheng. 1553 1554Example Code and Data Size: These are the sizes for the OS-independent 1555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1556debug version of the code includes the debug output trace mechanism and 1557has a much larger code and data size. 1558 1559 Current Release: 1560 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1561 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1562 Previous Release: 1563 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1564 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1565 1566 15672) iASL Compiler/Disassembler and Tools: 1568 1569iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1570tool has been designed, implemented, and included in this release. The 1571key feature of this utility is that the original comments within the 1572input ASL file are preserved during the conversion process, and included 1573within the converted ASL+ file -- thus creating a transparent conversion 1574of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1575 1576 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1577converted code 1578 1579iASL/Disassembler: Improved the detection and correct disassembly of 1580Switch/Case operators. This feature detects sequences of if/elseif/else 1581operators that originated from ASL Switch/Case/Default operators and 1582emits the original operators. David Box. 1583 1584iASL: Improved the IORT ACPI table support in the following areas. Lv 1585Zheng: 1586 Clear MappingOffset if the MappingCount is zero. 1587 Fix the disassembly of the SMMU GSU interrupt offset. 1588 Update the template file for the IORT table. 1589 1590Disassembler: Enhanced the detection and disassembly of resource 1591template/descriptor within a Buffer object. An EndTag descriptor is now 1592required to have a zero second byte, since all known ASL compilers emit 1593this. This helps eliminate incorrect decisions when a buffer is 1594disassembled (false positives on resource templates). 1595 1596---------------------------------------- 159719 January 2017. Summary of changes for version 20170119: 1598 1599 16001) General ACPICA software: 1601 1602Entire source code base: Added the 2017 copyright to all source code 1603legal/licensing module headers and utility/tool signons. This includes 1604the standard Linux dual-license header. This affects virtually every file 1605in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1606the ACPICA test suite. 1607 1608 16092) iASL Compiler/Disassembler and Tools: 1610 1611iASL: Removed/fixed an inadvertent remark when a method argument 1612containing a reference is used as a target operand within the method (and 1613never used as a simple argument), as in the example below. Jeffrey Hugo. 1614 1615 dsdt.asl 1507: Store(0x1, Arg0) 1616 Remark 2146 - ^ Method Argument is never used (Arg0) 1617 1618All tools: Removed the bit width of the compiler that generated the tool 1619from the common signon for all user space tools. This proved to be 1620confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1621from the generic makefiles (Thomas Petazzoni). Example below. 1622 1623 Old: 1624 ASL+ Optimizing Compiler version 20170119-32 1625 ASL+ Optimizing Compiler version 20170119-64 1626 1627 New: 1628 ASL+ Optimizing Compiler version 20170119 1629 1630---------------------------------------- 163122 December 2016. Summary of changes for version 20161222: 1632 1633 16341) ACPICA kernel-resident subsystem: 1635 1636AML Debugger: Implemented a new mechanism to simplify and enhance 1637debugger integration into all environments, including kernel debuggers 1638and user-space utilities, as well as remote debug services. This 1639mechanism essentially consists of new OSL interfaces to support debugger 1640initialization/termination, as well as wait/notify interfaces to perform 1641the debugger handshake with the host. Lv Zheng. 1642 1643 New OSL interfaces: 1644 AcpiOsInitializeDebugger (void) 1645 AcpiOsTerminateDebugger (void) 1646 AcpiOsWaitCommandReady (void) 1647 AcpiOsNotifyCommandComplete (void) 1648 1649 New OS services layer: 1650 osgendbg.c -- Example implementation, and used for AcpiExec 1651 1652Update for Generic Address Space (GAS) support: Although the AccessWidth 1653and/or BitOffset fields of the GAS are not often used, this change now 1654fully supports these fields. This affects the internal support for FADT 1655registers, registers in other ACPI data tables, and the AcpiRead and 1656AcpiWrite public interfaces. Lv Zheng. 1657 1658Sleep support: In order to simplify integration of ACPI sleep for the 1659various host operating systems, a new OSL interface has been introduced. 1660AcpiOsEnterSleep allows the host to perform any required operations 1661before the final write to the sleep control register(s) is performed by 1662ACPICA. Lv Zheng. 1663 1664 New OSL interface: 1665 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1666 1667 Called from these internal interfaces: 1668 AcpiHwLegacySleep 1669 AcpiHwExtendedSleep 1670 1671EFI support: Added a very small EFI/ACPICA example application. Provides 1672a simple demo for EFI integration, as well as assisting with resolution 1673of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1674 1675 source/tools/efihello/efihello.c 1676 1677Local C library: Implemented several new functions to enhance ACPICA 1678portability, for environments where these clib functions are not 1679available (such as EFI). Lv Zheng: 1680 putchar 1681 getchar 1682 strpbrk 1683 strtok 1684 memmove 1685 1686Fixed a regression where occasionally a valid resource descriptor was 1687incorrectly detected as invalid at runtime, and a 1688AE_AML_NO_RESOURCE_END_TAG was returned. 1689 1690Fixed a problem with the recently implemented support that enables 1691control method invocations as Target operands to many ASL operators. 1692Warnings of this form: "Needed type [Reference], found [Processor]" were 1693seen at runtime for some method invocations. 1694 1695Example Code and Data Size: These are the sizes for the OS-independent 1696acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1697debug version of the code includes the debug output trace mechanism and 1698has a much larger code and data size. 1699 1700 Current Release: 1701 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1702 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1703 Previous Release: 1704 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1705 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1706 1707 17082) iASL Compiler/Disassembler and Tools: 1709 1710Disassembler: Enhanced output by adding the capability to detect and 1711disassemble ASL Switch/Case statements back to the original ASL source 1712code instead of if/else blocks. David Box. 1713 1714AcpiHelp: Split a large file into separate files based upon 1715functionality/purpose. New files are: 1716 ahaml.c 1717 ahasl.c 1718 1719---------------------------------------- 172017 November 2016. Summary of changes for version 20161117: 1721 1722 17231) ACPICA kernel-resident subsystem: 1724 1725Table Manager: Fixed a regression introduced in 20160729, "FADT support 1726cleanup". This was an attempt to remove all references in the source to 1727the FADT version 2, which never was a legal version number. It was 1728skipped because it was an early version of 64-bit support that was 1729eventually abandoned for the current 64-bit support. 1730 1731Interpreter: Fixed a problem where runtime implicit conversion was 1732incorrectly disabled for the ASL operators below. This brings the 1733behavior into compliance with the ACPI specification: 1734 FromBCD 1735 ToBCD 1736 ToDecimalString 1737 ToHexString 1738 ToInteger 1739 ToBuffer 1740 1741Table Manager: Added a new public interface, AcpiPutTable, used to 1742release and free an ACPI table returned by AcpiGetTable and related 1743interfaces. Lv Zheng. 1744 1745Example Code and Data Size: These are the sizes for the OS-independent 1746acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1747debug version of the code includes the debug output trace mechanism and 1748has a much larger code and data size. 1749 1750 Current Release: 1751 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1752 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1753 Previous Release: 1754 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1755 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1756 1757 17582) iASL Compiler/Disassembler and Tools: 1759 1760Disassembler: Fixed a regression for disassembly of Resource Template. 1761Detection of templates in the AML stream missed some types of templates. 1762 1763iASL: Fixed a problem where an Access Size error was returned for the PCC 1764address space when the AccessSize of the GAS register is greater than a 1765DWORD. Hoan Tran. 1766 1767iASL: Implemented several grammar changes for the operators below. These 1768changes are slated for the next version of the ACPI specification: 1769 RefOf - Disallow method invocation as an operand 1770 CondRefOf - Disallow method invocation as an operand 1771 DerefOf - Disallow operands that use the result from operators 1772that 1773 do not return a reference (Changed TermArg to 1774SuperName). 1775 1776iASL: Control method invocations are now allowed for Target operands, as 1777per the ACPI specification. Removed error for using a control method 1778invocation as a Target operand. 1779 1780Disassembler: Improved detection of Resource Templates, Unicode, and 1781Strings within Buffer objects. These subtypes do not contain a specific 1782opcode to indicate the originating ASL code, and they must be detected by 1783other means within the disassembler. 1784 1785iASL: Implemented an optimization improvement for 32-bit ACPI tables 1786(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1787only after 64-bit to 32-bit truncation. A truncation warning message is 1788still emitted, however. 1789 1790AcpiXtract: Implemented handling for both types of line terminators (LF 1791or CR/LF) so that it can accept AcpiDump output files from any system. 1792Peter Wu. 1793 1794AcpiBin: Added two new options for comparing AML files: 1795 -a: compare and display ALL mismatches 1796 -o: start compare at this offset into the second file 1797 1798---------------------------------------- 179930 September 2016. Summary of changes for version 20160930: 1800 1801 18021) ACPICA kernel-resident subsystem: 1803 1804Fixed a regression in the internal AcpiTbFindTable function where a non 1805AE_OK exception could inadvertently be returned even if the function did 1806not fail. This problem affects the following operators: 1807 DataTableRegion 1808 LoadTable 1809 1810Fixed a regression in the LoadTable operator where a load to any 1811namespace location other than the root no longer worked properly. 1812 1813Increased the maximum loop count value that will result in the 1814AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1815prevent infinite loops within the AML interpreter and thus the host OS 1816kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 18171,048,575). 1818 1819Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1820acpixf.h file. This allows hosts to easily configure the maximum loop 1821count at runtime. 1822 1823Removed an illegal character in the strtoul64.c file. This character 1824caused errors with some C compilers. 1825 1826Example Code and Data Size: These are the sizes for the OS-independent 1827acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1828debug version of the code includes the debug output trace mechanism and 1829has a much larger code and data size. 1830 1831 Current Release: 1832 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1833 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1834 Previous Release: 1835 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1836 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1837 1838 18392) iASL Compiler/Disassembler and Tools: 1840 1841Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1842the simpler ASL ElseIf keyword. During the conversion, a trailing If 1843block could be lost and missing from the disassembled output. 1844 1845iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1846the missing rule caused a parse error when using the Index operator as an 1847operand to ObjectType. This construct now compiles properly. Example: 1848 ObjectType(PKG1[4]). 1849 1850iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1851option). Previously, unresolved symbols could cause a protection fault. 1852Such symbols are now marked as unresolved in the map file. 1853 1854iASL: Implemented support to allow control method invocations as an 1855operand to the ASL DeRefOf operator. Example: 1856 DeRefOf(MTH1(Local0)) 1857 1858Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1859possible _PLD buffer now includes examination of both the normal buffer 1860length (16 or 20) as well as the surrounding AML package length. 1861 1862Disassembler: Fixed a problem with the decoding of complex expressions 1863within the Divide operator for ASL+. For the case where both the quotient 1864and remainder targets are specified, the entire statement cannot be 1865disassembled. Previously, the output incorrectly contained a mix of ASL- 1866and ASL+ operators. This mixed statement causes a syntax error when 1867compiled. Example: 1868 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1869disassembled to: 1870 Divide (INT1 + 6, 128, RSLT, QUOT) 1871 1872iASL/Tools: Added support to process AML and non-AML ACPI tables 1873consistently. For the disassembler and AcpiExec, allow all types of ACPI 1874tables (AML and data tables). For the iASL -e option, allow only AML 1875tables (DSDT/SSDT). 1876 1877---------------------------------------- 187831 August 2016. Summary of changes for version 20160831: 1879 1880 18811) ACPICA kernel-resident subsystem: 1882 1883Improve support for the so-called "module-level code", which is defined 1884to be math, logical and control AML opcodes that appear outside of any 1885control method. This change improves the support by adding more opcodes 1886that can be executed in the manner. Some other issues have been solved, 1887and the ASL grammar changes to support such code under all scope 1888operators (Device, etc.) are complete. Lv Zheng. 1889 1890UEFI support: these OSL functions have been implemented. This is an 1891additional step toward supporting the AcpiExec utility natively (with 1892full hardware access) under UEFI. Marcelo Ferreira. 1893 AcpiOsReadPciConfiguration 1894 AcpiOsWritePciConfiguration 1895 1896Fixed a possible mutex error during control method auto-serialization. Lv 1897Zheng. 1898 1899Updated support for the Generic Address Structure by fully implementing 1900all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1901Zheng. 1902 1903Updated the return value for the internal _OSI method. Instead of 19040xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1905for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1906implementations, and will be reflected and clarified in the next version 1907of the ACPI specification. 1908 1909Implemented two new table events that can be passed to an ACPICA table 1910handler. These events are used to indicate a table installation or 1911uninstallation. These events are used in addition to existed table load 1912and unload events. Lv Zheng. 1913 1914Implemented a cleanup for all internal string-to-integer conversions. 1915Consolidate multiple versions of this functionality and limit possible 1916bases to either 10 or 16 to simplify the code. Adds a new file, 1917utstrtoul64. 1918 1919Cleanup the inclusion order of the various compiler-specific headers. 1920This simplifies build configuration management. The compiler-specific 1921headers are now split out from the host-specific headers. Lv Zheng. 1922 1923Example Code and Data Size: These are the sizes for the OS-independent 1924acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1925debug version of the code includes the debug output trace mechanism and 1926has a much larger code and data size. 1927 1928 Current Release: 1929 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 1930 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1931 1932 19332) iASL Compiler/Disassembler and Tools: 1934 1935iASL/AcpiExec: Added a command line option to display the build date/time 1936of the tool (-vd). This can be useful to verify that the correct version 1937of the tools are being used. 1938 1939AML Debugger: Implemented a new subcommand ("execute predef") to execute 1940all predefined control methods and names within the current namespace. 1941This can be useful for debugging problems with ACPI tables and the ACPI 1942namespace. 1943 1944---------------------------------------- 194529 July 2016. Summary of changes for version 20160729: 1946 1947 19481) ACPICA kernel-resident subsystem: 1949 1950Implemented basic UEFI support for the various ACPICA tools. This 1951includes: 19521) An OSL to implement the various AcpiOs* interfaces on UEFI. 19532) Support to obtain the ACPI tables on UEFI. 19543) Local implementation of required C library functions not available on 1955UEFI. 19564) A front-end (main) function for the tools for UEFI-related 1957initialization. 1958 1959The initial deployment of this support is the AcpiDump utility executing 1960as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1961Current environments supported are Linux/Unix. MSVC generation is not 1962supported at this time. See the generate/efi/README file for build 1963instructions. Lv Zheng. 1964 1965Future plans include porting the AcpiExec utility to execute natively on 1966the platform with I/O and memory access. This will allow viewing/dump of 1967the platform namespace and native execution of ACPI control methods that 1968access the actual hardware. To fully implement this support, the OSL 1969functions below must be implemented with UEFI interfaces. Any community 1970help in the implementation of these functions would be appreciated: 1971 AcpiOsReadPort 1972 AcpiOsWritePort 1973 AcpiOsReadMemory 1974 AcpiOsWriteMemory 1975 AcpiOsReadPciConfiguration 1976 AcpiOsWritePciConfiguration 1977 1978Restructured and standardized the C library configuration for ACPICA, 1979resulting in the various configuration options below. This includes a 1980global restructuring of the compiler-dependent and platform-dependent 1981include files. These changes may affect the existing platform-dependent 1982configuration files on some hosts. Lv Zheng. 1983 1984The current C library configuration options appear below. For any issues, 1985it may be helpful to examine the existing compiler-dependent and 1986platform-dependent files as examples. Lv Zheng. 1987 19881) Linux kernel: 1989 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1990library. 1991 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 19922) Unix/Windows/BSD applications: 1993 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1994library. 1995 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 19963) UEFI applications: 1997 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1998library. 1999 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 20004) UEFI applications (EDK2/StdLib): 2001 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 2002 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 2003 2004 2005AML interpreter: "module-level code" support. Allows for execution of so- 2006called "executable" AML code (math/logical operations, etc.) outside of 2007control methods not just at the module level (top level) but also within 2008any scope declared outside of a control method - Scope{}, Device{}, 2009Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 2010 2011Simplified the configuration of the "maximum AML loops" global option by 2012adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 2013modified at runtime. 2014 2015 2016Example Code and Data Size: These are the sizes for the OS-independent 2017acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2018debug version of the code includes the debug output trace mechanism and 2019has a much larger code and data size. 2020 2021 Current Release: 2022 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 2023 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 2024 2025 20262) iASL Compiler/Disassembler and Tools: 2027 2028iASL: Add full support for the RASF ACPI table (RAS Features Table). 2029Includes disassembler, data table compiler, and header support. 2030 2031iASL Expand "module-level code" support. Allows for 2032compilation/disassembly of so-called "executable" AML code (math/logical 2033operations, etc.) outside of control methods not just at the module level 2034(top level) but also within any scope declared outside of a control 2035method - Scope{}, Device{}, Processor{}, PowerResource{}, and 2036ThermalZone{}. 2037 2038AcpiDump: Added support for dumping all SSDTs on newer versions of 2039Windows. These tables are now easily available -- SSDTs are not available 2040through the registry on older versions. 2041 2042---------------------------------------- 204327 May 2016. Summary of changes for version 20160527: 2044 2045 20461) ACPICA kernel-resident subsystem: 2047 2048Temporarily reverted the new arbitrary bit length/alignment support in 2049AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 2050a number of regressions with the new code that need to be fully resolved 2051and tested before this support can be finally integrated into ACPICA. 2052Apologies for any inconveniences these issues may have caused. 2053 2054The ACPI message macros are not configurable (ACPI_MSG_ERROR, 2055ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 2056and ACPI_MSG_BIOS_WARNING). Lv Zheng. 2057 2058Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 2059option. Adds a new return macro, return_STR. Junk-uk Kim. 2060 2061Example Code and Data Size: These are the sizes for the OS-independent 2062acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2063debug version of the code includes the debug output trace mechanism and 2064has a much larger code and data size. 2065 2066 Current Release: 2067 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 2068 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2069 Previous Release: 2070 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2071 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 2072 2073---------------------------------------- 207422 April 2016. Summary of changes for version 20160422: 2075 20761) ACPICA kernel-resident subsystem: 2077 2078Fixed a regression in the GAS (generic address structure) arbitrary bit 2079support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 2080and incorrect return values. Lv Zheng. ACPICA BZ 1270. 2081 2082ACPI 6.0: Added support for new/renamed resource macros. One new argument 2083was added to each of these macros, and the original name has been 2084deprecated. The AML disassembler will always disassemble to the new 2085names. Support for the new macros was added to iASL, disassembler, 2086resource manager, and the acpihelp utility. ACPICA BZ 1274. 2087 2088 I2cSerialBus -> I2cSerialBusV2 2089 SpiSerialBus -> SpiSerialBusV2 2090 UartSerialBus -> UartSerialBusV2 2091 2092ACPI 6.0: Added support for a new integer field that was appended to the 2093package object returned by the _BIX method. This adds iASL compile-time 2094and AML runtime error checking. ACPICA BZ 1273. 2095 2096ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 2097Subspace Type2" (Headers, Disassembler, and data table compiler). 2098 2099Example Code and Data Size: These are the sizes for the OS-independent 2100acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2101debug version of the code includes the debug output trace mechanism and 2102has a much larger code and data size. 2103 2104 Current Release: 2105 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 2106 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 2107 Previous Release: 2108 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2109 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2110 2111 21122) iASL Compiler/Disassembler and Tools: 2113 2114iASL: Implemented an ASL grammar extension to allow/enable executable 2115"module-level code" to be created and executed under the various 2116operators that create new scopes. This type of AML code is already 2117supported in all known AML interpreters, and the grammar change will 2118appear in the next version of the ACPI specification. Simplifies the 2119conditional runtime creation of named objects under these object types: 2120 2121 Device 2122 PowerResource 2123 Processor 2124 Scope 2125 ThermalZone 2126 2127iASL: Implemented a new ASL extension, a "For" loop macro to add greater 2128ease-of-use to the ASL language. The syntax is similar to the 2129corresponding C operator, and is implemented with the existing AML While 2130opcode -- thus requiring no changes to existing AML interpreters. 2131 2132 For (Initialize, Predicate, Update) {TermList} 2133 2134Grammar: 2135 ForTerm := 2136 For ( 2137 Initializer // Nothing | TermArg => ComputationalData 2138 Predicate // Nothing | TermArg => ComputationalData 2139 Update // Nothing | TermArg => ComputationalData 2140 ) {TermList} 2141 2142 2143iASL: The _HID/_ADR detection and validation has been enhanced to search 2144under conditionals in order to allow these objects to be conditionally 2145created at runtime. 2146 2147iASL: Fixed several issues with the constant folding feature. The 2148improvement allows better detection and resolution of statements that can 2149be folded at compile time. ACPICA BZ 1266. 2150 2151iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 2152conversion to the ASL ElseIf operator where incorrect ASL code could be 2153generated. 2154 2155iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 2156sometimes an extra (and extraneous) set of parentheses were emitted for 2157some combinations of operators. Although this did not cause any problems 2158with recompilation of the disassembled code, it made the code more 2159difficult to read. David Box. ACPICA BZ 1231. 2160 2161iASL: Changed to ignore the unreferenced detection for predefined names 2162of resource descriptor elements, when the resource descriptor is 2163created/defined within a control method. 2164 2165iASL: Disassembler: Fix a possible fault with externally declared Buffer 2166objects. 2167 2168---------------------------------------- 216918 March 2016. Summary of changes for version 20160318: 2170 21711) ACPICA kernel-resident subsystem: 2172 2173Added support for arbitrary bit lengths and bit offsets for registers 2174defined by the Generic Address Structure. Previously, only aligned bit 2175lengths of 8/16/32/64 were supported. This was sufficient for many years, 2176but recently some machines have been seen that require arbitrary bit- 2177level support. ACPICA BZ 1240. Lv Zheng. 2178 2179Fixed an issue where the \_SB._INI method sometimes must be evaluated 2180before any _REG methods are evaluated. Lv Zheng. 2181 2182Implemented several changes related to ACPI table support 2183(Headers/Disassembler/TableCompiler): 2184NFIT: For ACPI 6.1, updated to add some additional new fields and 2185constants. 2186FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 21876). 2188DMAR: Added new constants per the 10/2014 DMAR spec. 2189IORT: Added new subtable per the 10/2015 IORT spec. 2190HEST: For ACPI 6.1, added new constants and new subtable. 2191DBG2: Added new constants per the 12/2015 DBG2 spec. 2192FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 2193ACPICA BZ 1249. 2194ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 2195 2196Updated header support for the DMAR table to match the current version of 2197the related spec. 2198 2199Added extensions to the ASL Concatenate operator to allow any ACPI object 2200to be passed as an operand. Any object other than Integer/String/Buffer 2201simply returns a string containing the object type. This extends the 2202usefulness of the Printf macros. Previously, Concatenate would abort the 2203control method if a non-data object was encountered. 2204 2205ACPICA source code: Deployed the C "const" keyword across the source code 2206where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 2207 2208Example Code and Data Size: These are the sizes for the OS-independent 2209acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2210debug version of the code includes the debug output trace mechanism and 2211has a much larger code and data size. 2212 2213 Current Release: 2214 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 2215 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 2216 Previous Release: 2217 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2218 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2219 2220 22212) iASL Compiler/Disassembler and Tools: 2222 2223iASL/Disassembler: Improved the heuristic used to determine the number of 2224arguments for an externally defined control method (a method in another 2225table). Although this is an improvement, there is no deterministic way to 2226"guess" the number of method arguments. Only the ACPI 6.0 External opcode 2227will completely solve this problem as it is deployed (automatically) in 2228newer BIOS code. 2229 2230iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 2231statements that could cause errors when the disassembled file is 2232compiled. ACPICA BZ 1243. David Box. 2233 2234iASL: Fixed a regression caused by the merger of the two versions of the 2235local strtoul64. Because of a dependency on a global variable, strtoul64 2236could return an error for integers greater than a 32-bit value. ACPICA BZ 22371260. 2238 2239iASL: Fixed a regression where a fault could occur for an ASL Return 2240statement if it invokes a control method that is not resolved. ACPICA BZ 22411264. 2242 2243AcpiXtract: Improved input file validation: detection of binary files and 2244non-acpidump text files. 2245 2246---------------------------------------- 224712 February 2016. Summary of changes for version 20160212: 2248 22491) ACPICA kernel-resident subsystem: 2250 2251Implemented full support for the ACPI 6.1 specification (released in 2252January). This version of the specification is available at: 2253http://www.uefi.org/specifications 2254 2255Only a relatively small number of changes were required in ACPICA to 2256support ACPI 6.1, in these areas: 2257- New predefined names 2258- New _HID values 2259- A new subtable for HEST 2260- A few other header changes for new values 2261 2262Ensure \_SB_._INI is executed before any _REG methods are executed. There 2263appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2264 2265Reverted a change made in version 20151218 which enabled method 2266invocations to be targets of various ASL operators (SuperName and Target 2267grammar elements). While the new behavior is supported by the ACPI 2268specification, other AML interpreters do not support this behavior and 2269never will. The ACPI specification will be updated for ACPI 6.2 to remove 2270this support. Therefore, the change was reverted to the original ACPICA 2271behavior. 2272 2273ACPICA now supports the GCC 6 compiler. 2274 2275Current Release: (Note: build changes increased sizes) 2276 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2277 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2278Previous Release: 2279 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2280 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2281 2282 22832) iASL Compiler/Disassembler and Tools: 2284 2285Completed full support for the ACPI 6.0 External() AML opcode. The 2286compiler emits an external AML opcode for each ASL External statement. 2287This opcode is used by the disassembler to assist with the disassembly of 2288external control methods by specifying the required number of arguments 2289for the method. AML interpreters do not use this opcode. To ensure that 2290interpreters do not even see the opcode, a block of one or more external 2291opcodes is surrounded by an "If(0)" construct. As this feature becomes 2292commonly deployed in BIOS code, the ability of disassemblers to correctly 2293disassemble AML code will be greatly improved. David Box. 2294 2295iASL: Implemented support for an optional cross-reference output file. 2296The -lx option will create a the cross-reference file with the suffix 2297"xrf". Three different types of cross-reference are created in this file: 2298- List of object references made from within each control method 2299- Invocation (caller) list for each user-defined control method 2300- List of references to each non-method object in the namespace 2301 2302iASL: Method invocations as ASL Target operands are now disallowed and 2303flagged as errors in preparation for ACPI 6.2 (see the description of the 2304problem above). 2305 2306---------------------------------------- 23078 January 2016. Summary of changes for version 20160108: 2308 23091) ACPICA kernel-resident subsystem: 2310 2311Updated all ACPICA copyrights and signons to 2016: Added the 2016 2312copyright to all source code module headers and utility/tool signons. 2313This includes the standard Linux dual-license header. This affects 2314virtually every file in the ACPICA core subsystem, iASL compiler, all 2315ACPICA utilities, and the ACPICA test suite. 2316 2317Fixed a regression introduced in version 20151218 concerning the 2318execution of so-called module-level ASL/AML code. Namespace objects 2319created under a module-level If() construct were not properly/fully 2320entered into the namespace and could cause an interpreter fault when 2321accessed. 2322 2323Example Code and Data Size: These are the sizes for the OS-independent 2324acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2325debug version of the code includes the debug output trace mechanism and 2326has a much larger code and data size. 2327 2328Current Release: 2329 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2330 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2331 Previous Release: 2332 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2333 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2334 2335 23362) iASL Compiler/Disassembler and Tools: 2337 2338Fixed a problem with the compilation of the GpioIo and GpioInt resource 2339descriptors. The _PIN field name was incorrectly defined to be an array 2340of 32-bit values, but the _PIN values are in fact 16 bits each. This 2341would cause incorrect bit width warnings when using Word (16-bit) fields 2342to access the descriptors. 2343 2344 2345---------------------------------------- 234618 December 2015. Summary of changes for version 20151218: 2347 23481) ACPICA kernel-resident subsystem: 2349 2350Implemented per-AML-table execution of "module-level code" as individual 2351ACPI tables are loaded into the namespace during ACPICA initialization. 2352In other words, any module-level code within an AML table is executed 2353immediately after the table is loaded, instead of batched and executed 2354after all of the tables have been loaded. This provides compatibility 2355with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2356David Box. 2357 2358To fully support the feature above, the default operation region handlers 2359for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2360installed before any ACPI tables are loaded. This enables module-level 2361code to access these address spaces during the table load and module- 2362level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2363Box. 2364 2365Implemented several changes to the internal _REG support in conjunction 2366with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2367utilities for the changes above. Although these tools were changed, host 2368operating systems that simply use the default handlers for SystemMemory, 2369SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2370 2371For example, in the code below, DEV1 is conditionally added to the 2372namespace by the DSDT via module-level code that accesses an operation 2373region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2374created immediately after the DSDT is loaded in order for the SSDT to 2375successfully reference DEV1. Previously, this code would cause an 2376AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2377fully supported by ACPICA. 2378 2379 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2380 { 2381 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2382 Field (OPR1, AnyAcc, NoLock, Preserve) 2383 { 2384 FLD1, 1 2385 } 2386 If (FLD1) 2387 { 2388 Device (\DEV1) 2389 { 2390 } 2391 } 2392 } 2393 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2394 { 2395 External (\DEV1, DeviceObj) 2396 Scope (\DEV1) 2397 { 2398 } 2399 } 2400 2401Fixed an AML interpreter problem where control method invocations were 2402not handled correctly when the invocation was itself a SuperName argument 2403to another ASL operator. In these cases, the method was not invoked. 2404ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 2405argument: 2406 Store 2407 Acquire, Wait 2408 CondRefOf, RefOf 2409 Decrement, Increment 2410 Load, Unload 2411 Notify 2412 Signal, Release, Reset 2413 SizeOf 2414 2415Implemented automatic String-to-ObjectReference conversion support for 2416packages returned by predefined names (such as _DEP). A common BIOS error 2417is to add double quotes around an ObjectReference namepath, which turns 2418the reference into an unexpected string object. This support detects the 2419problem and corrects it before the package is returned to the caller that 2420invoked the method. Lv Zheng. 2421 2422Implemented extensions to the Concatenate operator. Concatenate now 2423accepts any type of object, it is not restricted to simply 2424Integer/String/Buffer. For objects other than these 3 basic data types, 2425the argument is treated as a string containing the name of the object 2426type. This expands the utility of Concatenate and the Printf/Fprintf 2427macros. ACPICA BZ 1222. 2428 2429Cleaned up the output of the ASL Debug object. The timer() value is now 2430optional and no longer emitted by default. Also, the basic data types of 2431Integer/String/Buffer are simply emitted as their values, without a data 2432type string -- since the data type is obvious from the output. ACPICA BZ 24331221. 2434 2435Example Code and Data Size: These are the sizes for the OS-independent 2436acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2437debug version of the code includes the debug output trace mechanism and 2438has a much larger code and data size. 2439 2440 Current Release: 2441 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2442 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2443 Previous Release: 2444 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2445 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2446 2447 24482) iASL Compiler/Disassembler and Tools: 2449 2450iASL: Fixed some issues with the ASL Include() operator. This operator 2451was incorrectly defined in the iASL parser rules, causing a new scope to 2452be opened for the code within the include file. This could lead to 2453several issues, including allowing ASL code that is technically illegal 2454and not supported by AML interpreters. Note, this does not affect the 2455related #include preprocessor operator. ACPICA BZ 1212. 2456 2457iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 2458operator is essentially an ASL macro since there is no AML opcode 2459associated with it. The code emitted by the iASL compiler for ElseIf is 2460an Else opcode followed immediately by an If opcode. The disassembler 2461will now emit an ElseIf if it finds an Else immediately followed by an 2462If. This simplifies the decoded ASL, especially for deeply nested 2463If..Else and large Switch constructs. Thus, the disassembled code more 2464closely follows the original source ASL. ACPICA BZ 1211. Example: 2465 2466 Old disassembly: 2467 Else 2468 { 2469 If (Arg0 == 0x02) 2470 { 2471 Local0 = 0x05 2472 } 2473 } 2474 2475 New disassembly: 2476 ElseIf (Arg0 == 0x02) 2477 { 2478 Local0 = 0x05 2479 } 2480 2481AcpiExec: Added support for the new module level code behavior and the 2482early region installation. This required a small change to the 2483initialization, since AcpiExec must install its own operation region 2484handlers. 2485 2486AcpiExec: Added support to make the debug object timer optional. Default 2487is timer disabled. This cleans up the debug object output -- the timer 2488data is rarely used. 2489 2490AcpiExec: Multiple ACPI tables are now loaded in the order that they 2491appear on the command line. This can be important when there are 2492interdependencies/references between the tables. 2493 2494iASL/Templates. Add support to generate template files with multiple 2495SSDTs within a single output file. Also added ommand line support to 2496specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 24971223, 1225. 2498 2499 2500---------------------------------------- 250124 November 2015. Summary of changes for version 20151124: 2502 25031) ACPICA kernel-resident subsystem: 2504 2505Fixed a possible regression for a previous update to FADT handling. The 2506FADT no longer has a fixed table ID, causing some issues with code that 2507was hardwired to a specific ID. Lv Zheng. 2508 2509Fixed a problem where the method auto-serialization could interfere with 2510the current SyncLevel. This change makes the auto-serialization support 2511transparent to the SyncLevel support and management. 2512 2513Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2514interface is intended for early access to the namespace during the 2515initial namespace device discovery walk. The _SUB method has been seen to 2516access operation regions in some cases, causing errors because the 2517operation regions are not fully initialized. 2518 2519AML Debugger: Fixed some issues with the terminate/quit/exit commands 2520that can cause faults. Lv Zheng. 2521 2522AML Debugger: Add thread ID support so that single-step mode only applies 2523to the AML Debugger thread. This prevents runtime errors within some 2524kernels. Lv Zheng. 2525 2526Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2527methods that are invoked by this interface are optional, removed warnings 2528emitted for the case where one or more of these methods do not exist. 2529ACPICA BZ 1208, original change by Prarit Bhargava. 2530 2531Made a major pass through the entire ACPICA source code base to 2532standardize formatting that has diverged a bit over time. There are no 2533functional changes, but this will of course cause quite a few code 2534differences from the previous ACPICA release. 2535 2536Example Code and Data Size: These are the sizes for the OS-independent 2537acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2538debug version of the code includes the debug output trace mechanism and 2539has a much larger code and data size. 2540 2541 Current Release: 2542 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2543 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2544 Previous Release: 2545 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2546 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2547 2548 25492) iASL Compiler/Disassembler and Tools: 2550 2551iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2552definition blocks within a single ASL file and the resulting AML file. 2553Support for this type of file was also added to the various tools that 2554use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2555example code below shows two definition blocks within the same file: 2556 2557 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 25580x12345678) 2559 { 2560 } 2561 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2562 { 2563 } 2564 2565iASL: Enhanced typechecking for the Name() operator. All expressions for 2566the value of the named object must be reduced/folded to a single constant 2567at compile time, as per the ACPI specification (the AML definition of 2568Name()). 2569 2570iASL: Fixed some code indentation issues for the -ic and -ia options (C 2571and assembly headers). Now all emitted code correctly begins in column 1. 2572 2573iASL: Added an error message for an attempt to open a Scope() on an 2574object defined in an SSDT. The DSDT is always loaded into the namespace 2575first, so any attempt to open a Scope on an SSDT object will fail at 2576runtime. 2577 2578 2579---------------------------------------- 258030 September 2015. Summary of changes for version 20150930: 2581 25821) ACPICA kernel-resident subsystem: 2583 2584Debugger: Implemented several changes and bug fixes to assist support for 2585the in-kernel version of the AML debugger. Lv Zheng. 2586- Fix the "predefined" command for in-kernel debugger. 2587- Do not enter debug command loop for the help and version commands. 2588- Disallow "execute" command during execution/single-step of a method. 2589 2590Interpreter: Updated runtime typechecking for all operators that have 2591target operands. The operand is resolved and validated that it is legal. 2592For example, the target cannot be a non-data object such as a Device, 2593Mutex, ThermalZone, etc., as per the ACPI specification. 2594 2595Debugger: Fixed the double-mutex user I/O handshake to work when local 2596deadlock detection is enabled. 2597 2598Debugger: limited display of method locals and arguments (LocalX and 2599ArgX) to only those that have actually been initialized. This prevents 2600lines of extraneous output. 2601 2602Updated the definition of the NFIT table to correct the bit polarity of 2603one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2604 2605Example Code and Data Size: These are the sizes for the OS-independent 2606acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2607debug version of the code includes the debug output trace mechanism and 2608has a much larger code and data size. 2609 2610 Current Release: 2611 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2612 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2613 Previous Release: 2614 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2615 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2616 2617 26182) iASL Compiler/Disassembler and Tools: 2619 2620iASL: Improved the compile-time typechecking for operands of many of the 2621ASL operators: 2622 2623-- Added an option to disable compiler operand/operator typechecking (- 2624ot). 2625 2626-- For the following operators, the TermArg operands are now validated 2627when possible to be Integer data objects: BankField, OperationRegion, 2628DataTableRegion, Buffer, and Package. 2629 2630-- Store (Source, Target): Both the source and target operands are 2631resolved and checked that the operands are both legal. For example, 2632neither operand can be a non-data object such as a Device, Mutex, 2633ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2634operator can be used to store an object to any type of target object. 2635 2636-- Store (Source, Target): If the source is a Package object, the target 2637must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2638is a Package, the source must also be a Package. 2639 2640-- Store (Source, Target): A warning is issued if the source and target 2641resolve to the identical named object. 2642 2643-- Store (Source, <method invocation>): An error is generated for the 2644target method invocation, as this construct is not supported by the AML 2645interpreter. 2646 2647-- For all ASL math and logic operators, the target operand must be a 2648data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2649includes the function return value also. 2650 2651-- External declarations are also included in the typechecking where 2652possible. External objects defined using the UnknownObj keyword cannot be 2653typechecked, however. 2654 2655iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2656operator: 2657- Legacy code: Index(PKG1, 3) 2658- New ASL+ code: PKG1[3] 2659This completes the ACPI 6.0 ASL+ support as it was the only operator not 2660supported. 2661 2662iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2663spaces were inadvertently appended to the filename, causing file access 2664and deletion problems on some systems. 2665 2666ASL Test Suite (ASLTS): Updated the master makefile to generate all 2667possible compiler output files when building the test suite -- thus 2668exercising these features of the compiler. These files are automatically 2669deleted when the test suite exits. 2670 2671 2672---------------------------------------- 267318 August 2015. Summary of changes for version 20150818: 2674 26751) ACPICA kernel-resident subsystem: 2676 2677Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2678Zheng. ACPICA BZ 1186. 2679 2680Completed development to ensure that the ACPICA Disassembler and Debugger 2681are fully standalone components of ACPICA. Removed cross-component 2682dependences. Lv Zheng. 2683 2684The max-number-of-AML-loops is now runtime configurable (previously was 2685compile-time only). This is essentially a loop timeout to force-abort 2686infinite AML loops. ACPCIA BZ 1192. 2687 2688Debugger: Cleanup output to dump ACPI names and namepaths without any 2689trailing underscores. Lv Zheng. ACPICA BZ 1135. 2690 2691Removed unnecessary conditional compilations across the Debugger and 2692Disassembler components where entire modules could be left uncompiled. 2693 2694The aapits test is deprecated and has been removed from the ACPICA git 2695tree. The test has never been completed and has not been maintained, thus 2696becoming rather useless. ACPICA BZ 1015, 794. 2697 2698A batch of small changes to close bugzilla and other reports: 2699- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2700- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2701- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2702- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2703Moore. 2704- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2705ACPICA BZ 1184. 2706- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2707operators. 2708- Debugger: Split debugger initialization/termination interfaces. Lv 2709Zheng. 2710- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2711identification. 2712- AcpiExec: Add debug message during _REG method phase during table 2713load/init. 2714- AcpiNames: Fix a regression where some output was missing and no longer 2715emitted. 2716- Debugger: General cleanup and simplification. Lv Zheng. 2717- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2718 2719Example Code and Data Size: These are the sizes for the OS-independent 2720acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2721debug version of the code includes the debug output trace mechanism and 2722has a much larger code and data size. 2723 2724 Current Release: 2725 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2726 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2727 Previous Release: 2728 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2729 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2730 2731 27322) iASL Compiler/Disassembler and Tools: 2733 2734AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2735were not handled properly and caused load errors. Now, properly invoke 2736and use the ACPICA auto-reallocate mechanism for ACPI table data 2737structures. ACPICA BZ 1188 2738 2739AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2740BZ 1190. 2741 2742AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2743AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2744executed during initialization. ACPICA BZ 1187, 1189. 2745 2746iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2747that corresponds to each disassembled ASL statement, to simplify 2748debugging. ACPICA BZ 1191. 2749 2750Debugger: Add option to the "objects" command to display a summary of the 2751current namespace objects (Object type and count). This is displayed if 2752the command is entered with no arguments. 2753 2754AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2755 2756 2757---------------------------------------- 275817 July 2015. Summary of changes for version 20150717: 2759 27601) ACPICA kernel-resident subsystem: 2761 2762Improved the partitioning between the Debugger and Disassembler 2763components. This allows the Debugger to be used standalone within kernel 2764code without the Disassembler (which is used for single stepping also). 2765This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2766 2767Debugger: Implemented a new command to trace the execution of control 2768methods (Trace). This is especially useful for the in-kernel version of 2769the debugger when file I/O may not be available for method trace output. 2770See the ACPICA reference for more information. Lv Zheng. 2771 2772Moved all C library prototypes (used for the local versions of these 2773functions when requested) to a new header, acclib.h 2774Cleaned up the use of non-ANSI C library functions. These functions are 2775implemented locally in ACPICA. Moved all such functions to a common 2776source file, utnonansi.c 2777 2778Debugger: Fixed a problem with the "!!" command (get last command 2779executed) where the debugger could enter an infinite loop and eventually 2780crash. 2781 2782Removed the use of local macros that were used for some of the standard C 2783library functions to automatically cast input parameters. This mostly 2784affected the is* functions where the input parameter is defined to be an 2785int. This required a few modifications to the main ACPICA source code to 2786provide casting for these functions and eliminate possible compiler 2787warnings for these parameters. 2788 2789Across the source code, added additional status/error checking to resolve 2790issues discovered by static source code analysis tools such as Coverity. 2791 2792Example Code and Data Size: These are the sizes for the OS-independent 2793acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2794debug version of the code includes the debug output trace mechanism and 2795has a much larger code and data size. 2796 2797 Current Release: 2798 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2799 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2800 Previous Release: 2801 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2802 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2803 2804 28052) iASL Compiler/Disassembler and Tools: 2806 2807iASL: Fixed a regression where the device map file feature no longer 2808worked properly when used in conjunction with the disassembler. It only 2809worked properly with the compiler itself. 2810 2811iASL: Implemented a new warning for method LocalX variables that are set 2812but never used (similar to a C compiler such as gcc). This also applies 2813to ArgX variables that are not defined by the parent method, and are 2814instead (legally) used as local variables. 2815 2816iASL/Preprocessor: Finished the pass-through of line numbers from the 2817preprocessor to the compiler. This ensures that compiler errors/warnings 2818have the correct original line numbers and filenames, regardless of any 2819#include files. 2820 2821iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2822pass-through of comments to the preprocessor output file (which becomes 2823the compiler input file). Also fixed a problem with // comments that 2824appear after a math expression. 2825 2826iASL: Added support for the TCPA server table to the table compiler and 2827template generator. (The client table was already previously supported) 2828 2829iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2830identify the iASL compiler. 2831 2832Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2833multiple times. The new names are ACPI_SIGN_NEGATIVE and 2834ACPI_SIGN_POSITIVE. 2835 2836AcpiHelp: Update to expand help messages for the iASL preprocessor 2837directives. 2838 2839 2840---------------------------------------- 284119 June 2015. Summary of changes for version 20150619: 2842 2843Two regressions in version 20150616 have been addressed: 2844 2845Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2846etc.) This update changes ACPICA to only use the standard headers for 2847functions, or the prototypes for the local versions of the C library 2848functions. Across the source code, this required some additional casts 2849for some Clib invocations for portability. Moved all local prototypes to 2850a new file, acclib.h 2851 2852Fixes several problems with recent changes to the handling of the FACS 2853table that could cause some systems not to boot. 2854 2855 2856---------------------------------------- 285716 June 2015. Summary of changes for version 20150616: 2858 2859 28601) ACPICA kernel-resident subsystem: 2861 2862Across the entire ACPICA source code base, the various macros for the C 2863library functions (such as ACPI_STRLEN, etc.) have been removed and 2864replaced by the standard C library names (strlen, etc.) The original 2865purpose for these macros is no longer applicable. This simplification 2866reduces the number of macros used in the ACPICA source code 2867significantly, improving readability and maintainability. 2868 2869Implemented support for a new ACPI table, the OSDT. This table, the 2870"override" SDT, can be loaded directly by the host OS at boot time. It 2871enables the replacement of existing namespace objects that were installed 2872via the DSDT and/or SSDTs. The primary purpose for this is to replace 2873buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2874for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2875Moore. 2876 2877Added support for systems with (improperly) two FACS tables -- a "32-bit" 2878table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2879X field). This change will support both automatically. There continues to 2880be systems found with this issue. This support requires a change to the 2881AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2882been added to allow the host to select which FACS is desired 2883(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2884details Lv Zheng. 2885 2886Added a new feature to allow for systems that do not contain an FACS. 2887Although this is already supported on hardware-reduced platforms, the 2888feature has been extended for all platforms. The reasoning is that we do 2889not want to abort the entire ACPICA initialization just because the 2890system is seriously buggy and has no FACS. 2891 2892Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2893not correctly transcribed from the ACPI specification in ACPICA version 289420150515. 2895 2896Implemented support for the _CLS object in the AcpiGetObjectInfo external 2897interface. 2898 2899Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2900recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2901compiler also updated. Note: The TCPA "server" table is not supported by 2902the disassembler/table-compiler at this time. 2903 2904ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2905 2906Example Code and Data Size: These are the sizes for the OS-independent 2907acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2908debug version of the code includes the debug output trace mechanism and 2909has a much larger code and data size. 2910 2911 Current Release: 2912 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2913 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2914 Previous Release: 2915 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2916 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2917 2918 29192) iASL Compiler/Disassembler and Tools: 2920 2921Disassembler: Fixed a problem with the new symbolic operator disassembler 2922where incorrect ASL code could be emitted in some cases for the "non- 2923commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2924ShiftRight. The actual problem cases seem to be rather unusual in common 2925ASL code, however. David Box. 2926 2927Modified the linux version of acpidump to obtain ACPI tables from not 2928just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2929Zheng. 2930 2931iASL: Fixed a problem where the user preprocessor output file (.i) 2932contained extra data that was not expected. The compiler was using this 2933file as a temporary file and passed through #line directives in order to 2934keep compiler error messages in sync with the input file and line number 2935across multiple include files. The (.i) is no longer a temporary file as 2936the compiler uses a new, different file for the original purpose. 2937 2938iASL: Fixed a problem where comments within the original ASL source code 2939file were not passed through to the preprocessor output file, nor any 2940listing files. 2941 2942iASL: Fixed some issues for the handling of the "#include" preprocessor 2943directive and the similar (but not the same) "Include" ASL operator. 2944 2945iASL: Add support for the new OSDT in both the disassembler and compiler. 2946 2947iASL: Fixed a problem with the constant folding support where a Buffer 2948object could be incorrectly generated (incorrectly formed) during a 2949conversion to a Store() operator. 2950 2951AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2952description text for the _REV predefined name. _REV now permanently 2953returns 2, as per the ACPI 6.0 specification. 2954 2955Debugger: Enhanced the output of the Debug ASL object for references 2956produced by the Index operator. For Buffers and strings, only output the 2957actual byte pointed to by the index. For packages, only print the single 2958package element decoded by the index. Previously, the entire 2959buffer/string/package was emitted. 2960 2961iASL/Table-compiler: Fixed a regression where the "generic" data types 2962were no longer recognized, causing errors. 2963 2964 2965---------------------------------------- 296615 May 2015. Summary of changes for version 20150515: 2967 2968This release implements most of ACPI 6.0 as described below. 2969 29701) ACPICA kernel-resident subsystem: 2971 2972Implemented runtime argument checking and return value checking for all 2973new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2974_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2975 2976Example Code and Data Size: These are the sizes for the OS-independent 2977acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2978debug version of the code includes the debug output trace mechanism and 2979has a much larger code and data size. 2980 2981 Current Release: 2982 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2983 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2984 Previous Release: 2985 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2986 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2987 2988 29892) iASL Compiler/Disassembler and Tools: 2990 2991iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2992names (argument count validation and return value typechecking.) 2993 2994iASL disassembler and table compiler: implemented support for all new 2995ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2996 2997iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2998tables: FADT, MADT. 2999 3000iASL preprocessor: Added a new directive to enable inclusion of binary 3001blobs into ASL code. The new directive is #includebuffer. It takes a 3002binary file as input and emits a named ascii buffer object into the ASL 3003code. 3004 3005AcpiHelp: Added support for all new ACPI 6.0 predefined names. 3006 3007AcpiHelp: Added a new option, -d, to display all iASL preprocessor 3008directives. 3009 3010AcpiHelp: Added a new option, -t, to display all known/supported ACPI 3011tables. 3012 3013 3014---------------------------------------- 301510 April 2015. Summary of changes for version 20150410: 3016 3017Reverted a change introduced in version 20150408 that caused 3018a regression in the disassembler where incorrect operator 3019symbols could be emitted. 3020 3021 3022---------------------------------------- 302308 April 2015. Summary of changes for version 20150408: 3024 3025 30261) ACPICA kernel-resident subsystem: 3027 3028Permanently set the return value for the _REV predefined name. It now 3029returns 2 (was 5). This matches other ACPI implementations. _REV will be 3030deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 3031for ACPI 2.0 and later. It should never be used to differentiate or 3032identify operating systems. 3033 3034Added the "Windows 2015" string to the _OSI support. ACPICA will now 3035return TRUE to a query with this string. 3036 3037Fixed several issues with the local version of the printf function. 3038 3039Added the C99 compiler option (-std=c99) to the Unix makefiles. 3040 3041 Current Release: 3042 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 3043 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 3044 Previous Release: 3045 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3046 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3047 3048 30492) iASL Compiler/Disassembler and Tools: 3050 3051iASL: Implemented an enhancement to the constant folding feature to 3052transform the parse tree to a simple Store operation whenever possible: 3053 Add (2, 3, X) ==> is converted to: Store (5, X) 3054 X = 2 + 3 ==> is converted to: Store (5, X) 3055 3056Updated support for the SLIC table (Software Licensing Description Table) 3057in both the Data Table compiler and the disassembler. The SLIC table 3058support now conforms to "Microsoft Software Licensing Tables (SLIC and 3059MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 3060following the ACPI header is now defined to be "Proprietary Data", and as 3061such, can only be entered or displayed as a hex data block. 3062 3063Implemented full support for the MSDM table as described in the document 3064above. Note: The format of MSDM is similar to SLIC. Any MSDM data 3065following the ACPI header is defined to be "Proprietary Data", and can 3066only be entered or displayed as a hex data block. 3067 3068Implemented the -Pn option for the iASL Table Compiler (was only 3069implemented for the ASL compiler). This option disables the iASL 3070preprocessor. 3071 3072Disassembler: For disassembly of Data Tables, added a comment field 3073around the Ascii equivalent data that is emitted as part of the "Raw 3074Table Data" block. This prevents the iASL Preprocessor from possible 3075confusion if/when the table is compiled. 3076 3077Disassembler: Added an option (-df) to force the disassembler to assume 3078that the table being disassembled contains valid AML. This feature is 3079useful for disassembling AML files that contain ACPI signatures other 3080than DSDT or SSDT (such as OEMx or other signatures). 3081 3082Changes for the EFI version of the tools: 30831) Fixed a build error/issue 30842) Fixed a cast warning 3085 3086iASL: Fixed a path issue with the __FILE__ operator by making the 3087directory prefix optional within the internal SplitInputFilename 3088function. 3089 3090Debugger: Removed some unused global variables. 3091 3092Tests: Updated the makefile for proper generation of the AAPITS suite. 3093 3094 3095---------------------------------------- 309604 February 2015. Summary of changes for version 20150204: 3097 3098ACPICA kernel-resident subsystem: 3099 3100Updated all ACPICA copyrights and signons to 2014. Added the 2014 3101copyright to all module headers and signons, including the standard Linux 3102header. This affects virtually every file in the ACPICA core subsystem, 3103iASL compiler, all ACPICA utilities, and the test suites. 3104 3105Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 3106A raw gpe handling mechanism was created to allow better handling of GPE 3107storms that aren't easily managed by the normal handler. The raw handler 3108allows disabling/renabling of the the GPE so that interrupt storms can be 3109avoided in cases where events cannot be timely serviced. In this 3110scenario, handlers should use the AcpiSetGpe() API to disable/enable the 3111GPE. This API will leave the reference counts undisturbed, thereby 3112preventing unintentional clearing of the GPE when the intent in only to 3113temporarily disable it. Raw handlers allow enabling and disabling of a 3114GPE by removing GPE register locking. As such, raw handlers much provide 3115their own locks while using GPE API's to protect access to GPE data 3116structures. 3117Lv Zheng 3118 3119Events: Always modify GPE registers under the GPE lock. 3120Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 3121values. Reported as bug by joe.liu@apple.com. 3122 3123Unix makefiles: Separate option to disable optimizations and 3124_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 3125NOOPT disable option and creates a separate flag (NOFORTIFY) for this 3126purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 3127errors when building ACPICA. This allows disabling the option without 3128also having to disable optimazations. 3129David Box 3130 3131 Current Release: 3132 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 3133 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 3134 3135-- 3136-------------------------------------- 313707 November 2014. Summary of changes for version 20141107: 3138 3139This release is available at https://acpica.org/downloads 3140 3141This release introduces and implements language extensions to ASL that 3142provide support for symbolic ("C-style") operators and expressions. These 3143language extensions are known collectively as ASL+. 3144 3145 31461) iASL Compiler/Disassembler and Tools: 3147 3148Disassembler: Fixed a problem with disassembly of the UartSerialBus 3149macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 3150Box. 3151 3152Disassembler: Fixed the Unicode macro support to add escape sequences. 3153All non-printable ASCII values are emitted as escape sequences, as well 3154as the standard escapes for quote and backslash. Ensures that the 3155disassembled macro can be correctly recompiled. 3156 3157iASL: Added Printf/Fprintf macros for formatted output. These macros are 3158translated to existing AML Concatenate and Store operations. Printf 3159writes to the ASL Debug object. Fprintf allows the specification of an 3160ASL name as the target. Only a single format specifier is required, %o, 3161since the AML interpreter dynamically converts objects to the required 3162type. David E. Box. 3163 3164 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3165 (Concatenate (Concatenate (Concatenate ("", Arg0), 3166 ": Unexpected value for "), Arg1), ", "), Arg2), 3167 " at line "), Arg3), Debug) 3168 3169 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 3170 Arg0, Arg1, Arg2, Arg3) 3171 3172 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 3173 ("", Arg1), ": "), Arg0), " Successful"), STR1) 3174 3175 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 3176 3177iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 3178ASL parse tree before the AML code is generated. This allows blocks of 3179ASL code to be removed in order to help locate and identify problem 3180devices and/or code. David E. Box. 3181 3182AcpiExec: Added support (-fi) for an optional namespace object 3183initialization file. This file specifies initial values for namespace 3184objects as necessary for debugging and testing different ASL code paths 3185that may be taken as a result of BIOS options. 3186 3187 31882) Overview of symbolic operator support for ASL (ASL+) 3189------------------------------------------------------- 3190 3191As an extension to the ASL language, iASL implements support for symbolic 3192(C-style) operators for math and logical expressions. This can greatly 3193simplify ASL code as well as improve both readability and 3194maintainability. These language extensions can exist concurrently with 3195all legacy ASL code and expressions. 3196 3197The symbolic extensions are 100% compatible with existing AML 3198interpreters, since no new AML opcodes are created. To implement the 3199extensions, the iASL compiler transforms the symbolic expressions into 3200the legacy ASL/AML equivalents at compile time. 3201 3202Full symbolic expressions are supported, along with the standard C 3203precedence and associativity rules. 3204 3205Full disassembler support for the symbolic expressions is provided, and 3206creates an automatic migration path for existing ASL code to ASL+ code 3207via the disassembly process. By default, the disassembler now emits ASL+ 3208code with symbolic expressions. An option (-dl) is provided to force the 3209disassembler to emit legacy ASL code if desired. 3210 3211Below is the complete list of the currently supported symbolic operators 3212with examples. See the iASL User Guide for additional information. 3213 3214 3215ASL+ Syntax Legacy ASL Equivalent 3216----------- --------------------- 3217 3218 // Math operators 3219 3220Z = X + Y Add (X, Y, Z) 3221Z = X - Y Subtract (X, Y, Z) 3222Z = X * Y Multiply (X, Y, Z) 3223Z = X / Y Divide (X, Y, , Z) 3224Z = X % Y Mod (X, Y, Z) 3225Z = X << Y ShiftLeft (X, Y, Z) 3226Z = X >> Y ShiftRight (X, Y, Z) 3227Z = X & Y And (X, Y, Z) 3228Z = X | Y Or (X, Y, Z) 3229Z = X ^ Y Xor (X, Y, Z) 3230Z = ~X Not (X, Z) 3231X++ Increment (X) 3232X-- Decrement (X) 3233 3234 // Logical operators 3235 3236(X == Y) LEqual (X, Y) 3237(X != Y) LNotEqual (X, Y) 3238(X < Y) LLess (X, Y) 3239(X > Y) LGreater (X, Y) 3240(X <= Y) LLessEqual (X, Y) 3241(X >= Y) LGreaterEqual (X, Y) 3242(X && Y) LAnd (X, Y) 3243(X || Y) LOr (X, Y) 3244(!X) LNot (X) 3245 3246 // Assignment and compound assignment operations 3247 3248X = Y Store (Y, X) 3249X += Y Add (X, Y, X) 3250X -= Y Subtract (X, Y, X) 3251X *= Y Multiply (X, Y, X) 3252X /= Y Divide (X, Y, , X) 3253X %= Y Mod (X, Y, X) 3254X <<= Y ShiftLeft (X, Y, X) 3255X >>= Y ShiftRight (X, Y, X) 3256X &= Y And (X, Y, X) 3257X |= Y Or (X, Y, X) 3258X ^= Y Xor (X, Y, X) 3259 3260 32613) ASL+ Examples: 3262----------------- 3263 3264Legacy ASL: 3265 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3266 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 32670x03FB), 3268 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3269 { 3270 And (MEMB, 0xFFFFFFF0, SRMB) 3271 Store (MEMB, Local2) 3272 Store (PDBM, Local1) 3273 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3274 Store (SRMB, MEMB) 3275 Or (PDBM, 0x02, PDBM) 3276 } 3277 3278ASL+ version: 3279 If (((R510 & 0x03FB) == 0x02E0) || 3280 ((R520 & 0x03FB) == 0x02E0) || 3281 ((R530 & 0x03FB) == 0x02E0) || 3282 ((R540 & 0x03FB) == 0x02E0)) 3283 { 3284 SRMB = (MEMB & 0xFFFFFFF0) 3285 Local2 = MEMB 3286 Local1 = PDBM 3287 PDBM &= 0xFFFFFFFFFFFFFFF9 3288 MEMB = SRMB 3289 PDBM |= 0x02 3290 } 3291 3292Legacy ASL: 3293 Store (0x1234, Local1) 3294 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3295 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3296 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3297 Store (Index (PKG1, 0x03), Local6) 3298 Store (Add (Local3, Local2), Debug) 3299 Add (Local1, 0x0F, Local2) 3300 Add (Local1, Multiply (Local2, Local3), Local2) 3301 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3302 3303ASL+ version: 3304 Local1 = 0x1234 3305 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3306 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3307 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3308 Local6 = Index (PKG1, 0x03) 3309 Debug = (Local3 + Local2) 3310 Local2 = (Local1 + 0x0F) 3311 Local2 = (Local1 + (Local2 * Local3)) 3312 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3313 3314 3315---------------------------------------- 331626 September 2014. Summary of changes for version 20140926: 3317 33181) ACPICA kernel-resident subsystem: 3319 3320Updated the GPIO operation region handler interface (GeneralPurposeIo). 3321In order to support GPIO Connection objects with multiple pins, along 3322with the related Field objects, the following changes to the interface 3323have been made: The Address is now defined to be the offset in bits of 3324the field unit from the previous invocation of a Connection. It can be 3325viewed as a "Pin Number Index" into the connection resource descriptor. 3326The BitWidth is the exact bit width of the field. It is usually one bit, 3327but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3328additional information and examples. 3329 3330GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3331corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3332by the firmware), so that they cannot fire until they are enabled via 3333AcpiUpdateAllGpes. Rafael J. Wysocki. 3334 3335Added a new return flag for the Event/GPE status interfaces -- 3336AcpiGetEventStatus and AcpiGetGpeStatus. The new 3337ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3338GPE currently has a handler associated with it, and can thus actually 3339affect the system. Lv Zheng. 3340 3341Example Code and Data Size: These are the sizes for the OS-independent 3342acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3343debug version of the code includes the debug output trace mechanism and 3344has a much larger code and data size. 3345 3346 Current Release: 3347 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3348 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3349 Previous Release: 3350 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3351 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3352 33532) iASL Compiler/Disassembler and Tools: 3354 3355iASL: Fixed a memory allocation/free regression introduced in 20140828 3356that could cause the compiler to crash. This was introduced inadvertently 3357during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 33581113. 3359 3360iASL: Removed two error messages that have been found to create false 3361positives, until they can be fixed and fully validated (ACPICA BZ 1112): 33621) Illegal forward reference within a method 33632) Illegal reference across two methods 3364 3365iASL: Implemented a new option (-lm) to create a hardware mapping file 3366that summarizes all GPIO, I2C, SPI, and UART connections. This option 3367works for both the compiler and disassembler. See the iASL compiler user 3368guide for additional information and examples (section 6.4.6). 3369 3370AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3371version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3372a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3373 3374AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3375unless STDIN is actually a terminal. Assists with batch-mode processing. 3376ACPICA BZ 1114. 3377 3378Disassembler/AcpiHelp: Added another large group of recognized _HID 3379values. 3380 3381 3382---------------------------------------- 338328 August 2014. Summary of changes for version 20140828: 3384 33851) ACPICA kernel-resident subsystem: 3386 3387Fixed a problem related to the internal use of the Timer() operator where 3388a 64-bit divide could cause an attempted link to a double-precision math 3389library. This divide is not actually necessary, so the code was 3390restructured to eliminate it. Lv Zheng. 3391 3392ACPI 5.1: Added support for the runtime validation of the _DSD package 3393(similar to the iASL support). 3394 3395ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3396SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3397 3398Example Code and Data Size: These are the sizes for the OS-independent 3399acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3400debug version of the code includes the debug output trace mechanism and 3401has a much larger code and data size. 3402 3403 Current Release: 3404 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3405 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3406 Previous Release: 3407 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 3408 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3409 34102) iASL Compiler/Disassembler and Tools: 3411 3412AcpiExec: Fixed a problem on unix systems where the original terminal 3413state was not always properly restored upon exit. Seen when using the -v 3414option. ACPICA BZ 1104. 3415 3416iASL: Fixed a problem with the validation of the ranges/length within the 3417Memory24 resource descriptor. There was a boundary condition when the 3418range was equal to the (length -1) caused by the fact that these values 3419are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 3420 3421Disassembler: Fixed a problem with the GpioInt descriptor interrupt 3422polarity 3423flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 3424is 3425now supported properly. 3426 3427ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 3428in the disassembler, data table compiler, and table template generator. 3429 3430iASL: Added a requirement for Device() objects that one of either a _HID 3431or _ADR must exist within the scope of a Device, as per the ACPI 3432specification. Remove a similar requirement that was incorrectly in place 3433for the _DSD object. 3434 3435iASL: Added error detection for illegal named references within control 3436methods that would cause runtime failures. Now trapped as errors are: 1) 3437References to objects within a non-parent control method. 2) Forward 3438references (within a method) -- for control methods, AML interpreters use 3439a one-pass parse of control methods. ACPICA BZ 1008. 3440 3441iASL: Added error checking for dependencies related to the _PSx power 3442methods. ACPICA BZ 1029. 34431) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 3444_PS3. 34452) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 3446scope. 3447 3448iASL and table compiler: Cleanup miscellaneous memory leaks by fully 3449deploying the existing object and string caches and adding new caches for 3450the table compiler. 3451 3452iASL: Split the huge parser source file into multiple subfiles to improve 3453manageability. Generation now requires the M4 macro preprocessor, which 3454is part of the Bison distribution on both unix and windows platforms. 3455 3456AcpiSrc: Fixed and removed all extraneous warnings generated during 3457entire ACPICA source code scan and/or conversion. 3458 3459 3460---------------------------------------- 3461 346224 July 2014. Summary of changes for version 20140724: 3463 3464The ACPI 5.1 specification has been released and is available at: 3465http://uefi.org/specs/access 3466 3467 34680) ACPI 5.1 support in ACPICA: 3469 3470ACPI 5.1 is fully supported in ACPICA as of this release. 3471 3472New predefined names. Support includes iASL and runtime ACPICA 3473validation. 3474 _CCA (Cache Coherency Attribute). 3475 _DSD (Device-Specific Data). David Box. 3476 3477Modifications to existing ACPI tables. Support includes headers, iASL 3478Data Table compiler, disassembler, and the template generator. 3479 FADT - New fields and flags. Graeme Gregory. 3480 GTDT - One new subtable and new fields. Tomasz Nowicki. 3481 MADT - Two new subtables. Tomasz Nowicki. 3482 PCCT - One new subtable. 3483 3484Miscellaneous. 3485 New notification type for System Resource Affinity change events. 3486 3487 34881) ACPICA kernel-resident subsystem: 3489 3490Fixed a regression introduced in 20140627 where a fault can happen during 3491the deletion of Alias AML namespace objects. The problem affected both 3492the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3493 3494Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3495simple mechanism to enable wake GPEs that have no associated handler or 3496control method. Rafael Wysocki. 3497 3498Updated the AcpiEnableGpe interface to disallow the enable if there is no 3499handler or control method associated with the particular GPE. This will 3500help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3501 3502Updated GPE handling and dispatch by disabling the GPE before clearing 3503the status bit for edge-triggered GPEs. Lv Zheng. 3504 3505Added Timer() support to the AML Debug object. The current timer value is 3506now displayed with each invocation of (Store to) the debug object to 3507enable simple generation of execution times for AML code (method 3508execution for example.) ACPICA BZ 1093. 3509 3510Example Code and Data Size: These are the sizes for the OS-independent 3511acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3512debug version of the code includes the debug output trace mechanism and 3513has a much larger code and data size. 3514 3515 Current Release: 3516 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3517 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3518 Previous Release: 3519 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3520 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3521 3522 35232) iASL Compiler/Disassembler and Tools: 3524 3525Fixed an issue with the recently added local printf implementation, 3526concerning width/precision specifiers that could cause incorrect output. 3527Lv Zheng. ACPICA BZ 1094. 3528 3529Disassembler: Added support to detect buffers that contain UUIDs and 3530disassemble them to an invocation of the ToUUID operator. Also emit 3531commented descriptions of known ACPI-related UUIDs. 3532 3533AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3534-u. Adds three new files. 3535 3536iASL: Update table compiler and disassembler for DMAR table changes that 3537were introduced in September 2013. With assistance by David Woodhouse. 3538 3539---------------------------------------- 354027 June 2014. Summary of changes for version 20140627: 3541 35421) ACPICA kernel-resident subsystem: 3543 3544Formatted Output: Implemented local versions of standard formatted output 3545utilities such as printf, etc. Over time, it has been discovered that 3546there are in fact many portability issues with printf, and the addition 3547of this feature will fix/prevent these issues once and for all. Some 3548known issues are summarized below: 3549 35501) Output of 64-bit values is not portable. For example, UINT64 is %ull 3551for the Linux kernel and is %uI64 for some MSVC versions. 35522) Invoking printf consistently in a manner that is portable across both 355332-bit and 64-bit platforms is difficult at best in many situations. 35543) The output format for pointers varies from system to system (leading 3555zeros especially), and leads to inconsistent output from ACPICA across 3556platforms. 35574) Certain platform-specific printf formats may conflict with ACPICA use. 35585) If there is no local C library available, ACPICA now has local support 3559for printf. 3560 3561-- To address these printf issues in a complete manner, ACPICA now 3562directly implements a small subset of printf format specifiers, only 3563those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3564 3565Implemented support for ACPICA generation within the EFI environment. 3566Initially, the AcpiDump utility is supported in the UEFI shell 3567environment. Lv Zheng. 3568 3569Added a new external interface, AcpiLogError, to improve ACPICA 3570portability. This allows the host to redirect error messages from the 3571ACPICA utilities. Lv Zheng. 3572 3573Added and deployed new OSL file I/O interfaces to improve ACPICA 3574portability: 3575 AcpiOsOpenFile 3576 AcpiOsCloseFile 3577 AcpiOsReadFile 3578 AcpiOsWriteFile 3579 AcpiOsGetFileOffset 3580 AcpiOsSetFileOffset 3581There are C library implementations of these functions in the new file 3582service_layers/oslibcfs.c -- however, the functions can be implemented by 3583the local host in any way necessary. Lv Zheng. 3584 3585Implemented a mechanism to disable/enable ACPI table checksum validation 3586at runtime. This can be useful when loading tables very early during OS 3587initialization when it may not be possible to map the entire table in 3588order to compute the checksum. Lv Zheng. 3589 3590Fixed a buffer allocation issue for the Generic Serial Bus support. 3591Originally, a fixed buffer length was used. This change allows for 3592variable-length buffers based upon the protocol indicated by the field 3593access attributes. Reported by Lan Tianyu. Lv Zheng. 3594 3595Fixed a problem where an object detached from a namespace node was not 3596properly terminated/cleared and could cause a circular list problem if 3597reattached. ACPICA BZ 1063. David Box. 3598 3599Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3600 3601Fixed a possible memory leak in an error return path within the function 3602AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3603 3604Example Code and Data Size: These are the sizes for the OS-independent 3605acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3606debug version of the code includes the debug output trace mechanism and 3607has a much larger code and data size. 3608 3609 Current Release: 3610 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3611 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3612 Previous Release: 3613 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3614 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3615 3616 36172) iASL Compiler/Disassembler and Tools: 3618 3619Disassembler: Add dump of ASCII equivalent text within a comment at the 3620end of each line of the output for the Buffer() ASL operator. 3621 3622AcpiDump: Miscellaneous changes: 3623 Fixed repetitive table dump in -n mode. 3624 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3625the ACPI 2.0 GUID fails. 3626 3627iASL: Fixed a problem where the compiler could fault if incorrectly given 3628an acpidump output file as input. ACPICA BZ 1088. David Box. 3629 3630AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3631they are invoked without any arguments. 3632 3633Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 36341086. Colin Ian King. 3635 3636Disassembler: Cleaned up a block of code that extracts a parent Op 3637object. Added a comment that explains that the parent is guaranteed to be 3638valid in this case. ACPICA BZ 1069. 3639 3640 3641---------------------------------------- 364224 April 2014. Summary of changes for version 20140424: 3643 36441) ACPICA kernel-resident subsystem: 3645 3646Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3647Some of these tables are known to contain a trailing NULL entry. Lv 3648Zheng. 3649 3650Removed an extraneous error message for the case where there are a large 3651number of system GPEs (> 124). This was the "32-bit FADT register is too 3652long to convert to GAS struct" message, which is irrelevant for GPEs 3653since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3654(limited capacity) GAS bit length. Also, several changes to ensure proper 3655support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3656internally. 3657 3658Implemented and deployed additional configuration support for the public 3659ACPICA external interfaces. Entire classes of interfaces can now be 3660easily modified or configured out, replaced by stubbed inline functions 3661by default. Lv Zheng. 3662 3663Moved all public ACPICA runtime configuration globals to the public 3664ACPICA external interface file for convenience. Also, removed some 3665obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3666 3667Documentation: Added a new section to the ACPICA reference describing the 3668maximum number of GPEs that can be supported by the FADT-defined GPEs in 3669block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3670reference. 3671 3672Example Code and Data Size: These are the sizes for the OS-independent 3673acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3674debug version of the code includes the debug output trace mechanism and 3675has a much larger code and data size. 3676 3677 Current Release: 3678 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3679 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3680 Previous Release: 3681 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3682 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3683 3684 36852) iASL Compiler/Disassembler and Tools: 3686 3687iASL and disassembler: Add full support for the LPIT table (Low Power 3688Idle Table). Includes support in the disassembler, data table compiler, 3689and template generator. 3690 3691AcpiDump utility: 36921) Add option to force the use of the RSDT (over the XSDT). 36932) Improve validation of the RSDP signature (use 8 chars instead of 4). 3694 3695iASL: Add check for predefined packages that are too large. For 3696predefined names that contain subpackages, check if each subpackage is 3697too large. (Check for too small already exists.) 3698 3699Debugger: Updated the GPE command (which simulates a GPE by executing the 3700GPE code paths in ACPICA). The GPE device is now optional, and defaults 3701to the GPE 0/1 FADT-defined blocks. 3702 3703Unix application OSL: Update line-editing support. Add additional error 3704checking and take care not to reset terminal attributes on exit if they 3705were never set. This should help guarantee that the terminal is always 3706left in the previous state on program exit. 3707 3708 3709---------------------------------------- 371025 March 2014. Summary of changes for version 20140325: 3711 37121) ACPICA kernel-resident subsystem: 3713 3714Updated the auto-serialize feature for control methods. This feature 3715automatically serializes all methods that create named objects in order 3716to prevent runtime errors. The update adds support to ignore the 3717currently executing AML SyncLevel when invoking such a method, in order 3718to prevent disruption of any existing SyncLevel priorities that may exist 3719in the AML code. Although the use of SyncLevels is relatively rare, this 3720change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3721appear on some machines starting with the 20140214 release. 3722 3723Added a new external interface to allow the host to install ACPI tables 3724very early, before the namespace is even created. AcpiInstallTable gives 3725the host additional flexibility for ACPI table management. Tables can be 3726installed directly by the host as if they had originally appeared in the 3727XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3728(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3729with additional internal restructuring and cleanup. See the ACPICA 3730Reference for interface details. Lv Zheng. 3731 3732Added validation of the checksum for all incoming dynamically loaded 3733tables (via external interfaces or via AML Load/LoadTable operators). Lv 3734Zheng. 3735 3736Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3737and GPE handler removal. Restructured calls to eliminate possible race 3738conditions. Lv Zheng. 3739 3740Added a warning for the use/execution of the ASL/AML Unload (table) 3741operator. This will help detect and identify machines that use this 3742operator if and when it is ever used. This operator has never been seen 3743in the field and the usage model and possible side-effects of the drastic 3744runtime action of a full table removal are unknown. 3745 3746Reverted the use of #pragma push/pop which was introduced in the 20140214 3747release. It appears that push and pop are not implemented by enough 3748compilers to make the use of this feature feasible for ACPICA at this 3749time. However, these operators may be deployed in a future ACPICA 3750release. 3751 3752Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3753handler interfaces. 3754 3755Source code generation: 37561) Disabled the use of the "strchr" macro for the gcc-specific 3757generation. For some versions of gcc, this macro can periodically expose 3758a compiler bug which in turn causes compile-time error(s). 37592) Added support for PPC64 compilation. Colin Ian King. 3760 3761Example Code and Data Size: These are the sizes for the OS-independent 3762acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3763debug version of the code includes the debug output trace mechanism and 3764has a much larger code and data size. 3765 3766 Current Release: 3767 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3768 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3769 Previous Release: 3770 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3771 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3772 3773 37742) iASL Compiler/Disassembler and Tools: 3775 3776Disassembler: Added several new features to improve the readability of 3777the resulting ASL code. Extra information is emitted within comment 3778fields in the ASL code: 37791) Known _HID/_CID values are decoded to descriptive text. 37802) Standard values for the Notify() operator are decoded to descriptive 3781text. 37823) Target operands are expanded to full pathnames (in a comment) when 3783possible. 3784 3785Disassembler: Miscellaneous updates for extern() handling: 37861) Abort compiler if file specified by -fe option does not exist. 37872) Silence unnecessary warnings about argument count mismatches. 37883) Update warning messages concerning unresolved method externals. 37894) Emit "UnknownObj" keyword for externals whose type cannot be 3790determined. 3791 3792AcpiHelp utility: 37931) Added the -a option to display both the ASL syntax and the AML 3794encoding for an input ASL operator. This effectively displays all known 3795information about an ASL operator with one AcpiHelp invocation. 37962) Added substring match support (similar to a wildcard) for the -i 3797(_HID/PNP IDs) option. 3798 3799iASL/Disassembler: Since this tool does not yet support execution on big- 3800endian machines, added detection of endianness and an error message if 3801execution is attempted on big-endian. Support for big-endian within iASL 3802is a feature that is on the ACPICA to-be-done list. 3803 3804AcpiBin utility: 38051) Remove option to extract binary files from an acpidump; this function 3806is made obsolete by the AcpiXtract utility. 38072) General cleanup of open files and allocated buffers. 3808 3809 3810---------------------------------------- 381114 February 2014. Summary of changes for version 20140214: 3812 38131) ACPICA kernel-resident subsystem: 3814 3815Implemented a new mechanism to proactively prevent problems with ill- 3816behaved reentrant control methods that create named ACPI objects. This 3817behavior is illegal as per the ACPI specification, but is nonetheless 3818frequently seen in the field. Previously, this could lead to an 3819AE_ALREADY_EXISTS exception if the method was actually entered by more 3820than one thread. This new mechanism detects such methods at table load 3821time and marks them "serialized" to prevent reentrancy. A new global 3822option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3823feature if desired. This mechanism and global option obsoletes and 3824supersedes the previous AcpiGbl_SerializeAllMethods option. 3825 3826Added the "Windows 2013" string to the _OSI support. ACPICA will now 3827respond TRUE to _OSI queries with this string. It is the stated policy of 3828ACPICA to add new strings to the _OSI support as soon as possible after 3829they are defined. See the full ACPICA _OSI policy which has been added to 3830the utilities/utosi.c file. 3831 3832Hardened/updated the _PRT return value auto-repair code: 38331) Do not abort the repair on a single subpackage failure, continue to 3834check all subpackages. 38352) Add check for the minimum subpackage length (4). 38363) Properly handle extraneous NULL package elements. 3837 3838Added support to avoid the possibility of infinite loops when traversing 3839object linked lists. Never allow an infinite loop, even in the face of 3840corrupted object lists. 3841 3842ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3843pack(pop) directives to ensure that the ACPICA headers are independent of 3844compiler settings or other host headers. 3845 3846Example Code and Data Size: These are the sizes for the OS-independent 3847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3848debug version of the code includes the debug output trace mechanism and 3849has a much larger code and data size. 3850 3851 Current Release: 3852 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3853 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3854 Previous Release: 3855 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3856 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3857 3858 38592) iASL Compiler/Disassembler and Tools: 3860 3861iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3862first reserved field was incorrectly forced to have a value of zero. This 3863change correctly forces the field to have a value of one. ACPICA BZ 1081. 3864 3865Debugger: Added missing support for the "Extra" and "Data" subobjects 3866when displaying object data. 3867 3868Debugger: Added support to display entire object linked lists when 3869displaying object data. 3870 3871iASL: Removed the obsolete -g option to obtain ACPI tables from the 3872Windows registry. This feature has been superseded by the acpidump 3873utility. 3874 3875 3876---------------------------------------- 387714 January 2014. Summary of changes for version 20140114: 3878 38791) ACPICA kernel-resident subsystem: 3880 3881Updated all ACPICA copyrights and signons to 2014. Added the 2014 3882copyright to all module headers and signons, including the standard Linux 3883header. This affects virtually every file in the ACPICA core subsystem, 3884iASL compiler, all ACPICA utilities, and the test suites. 3885 3886Improved parameter validation for AcpiInstallGpeBlock. Added the 3887following checks: 38881) The incoming device handle refers to type ACPI_TYPE_DEVICE. 38892) There is not already a GPE block attached to the device. 3890Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3891device. 3892 3893Correctly support "references" in the ACPI_OBJECT. This change fixes the 3894support to allow references (namespace nodes) to be passed as arguments 3895to control methods via the evaluate object interface. This is probably 3896most useful for testing purposes, however. 3897 3898Improved support for 32/64 bit physical addresses in printf()-like 3899output. This change improves the support for physical addresses in printf 3900debug statements and other output on both 32-bit and 64-bit hosts. It 3901consistently outputs the appropriate number of bytes for each host. The 3902%p specifier is unsatisfactory since it does not emit uniform output on 3903all hosts/clib implementations (on some, leading zeros are not supported, 3904leading to difficult-to-read output). 3905 3906Example Code and Data Size: These are the sizes for the OS-independent 3907acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3908debug version of the code includes the debug output trace mechanism and 3909has a much larger code and data size. 3910 3911 Current Release: 3912 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3913 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3914 Previous Release: 3915 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3916 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3917 3918 39192) iASL Compiler/Disassembler and Tools: 3920 3921iASL: Fix a possible fault when using the Connection() operator. Fixes a 3922problem if the parent Field definition for the Connection operator refers 3923to an operation region that does not exist. ACPICA BZ 1064. 3924 3925AcpiExec: Load of local test tables is now optional. The utility has the 3926capability to load some various tables to test features of ACPICA. 3927However, there are enough of them that the output of the utility became 3928confusing. With this change, only the required local tables are displayed 3929(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3930line specification. This makes the default output simler and easier to 3931understand. The -el command line option restores the original behavior 3932for testing purposes. 3933 3934AcpiExec: Added support for overlapping operation regions. This change 3935expands the simulation of operation regions by supporting regions that 3936overlap within the given address space. Supports SystemMemory and 3937SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3938 3939AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3940allows AcpiExec to simulate these address spaces, similar to the current 3941support for SystemMemory and SystemIO. 3942 3943Debugger: Added new command to read/write/compare all namespace objects. 3944The command "test objects" will exercise the entire namespace by writing 3945new values to each data object, and ensuring that the write was 3946successful. The original value is then restored and verified. 3947 3948Debugger: Added the "test predefined" command. This change makes this 3949test public and puts it under the new "test" command. The test executes 3950each and every predefined name within the current namespace. 3951 3952 3953---------------------------------------- 395418 December 2013. Summary of changes for version 20131218: 3955 3956Global note: The ACPI 5.0A specification was released this month. There 3957are no changes needed for ACPICA since this release of ACPI is an 3958errata/clarification release. The specification is available at 3959acpi.info. 3960 3961 39621) ACPICA kernel-resident subsystem: 3963 3964Added validation of the XSDT root table if it is present. Some older 3965platforms contain an XSDT that is ill-formed or otherwise invalid (such 3966as containing some or all entries that are NULL pointers). This change 3967adds a new function to validate the XSDT before actually using it. If the 3968XSDT is found to be invalid, ACPICA will now automatically fall back to 3969using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3970ACPICA and enhanced by Lv Zheng and Bob Moore. 3971 3972Added a runtime option to ignore the XSDT and force the use of the RSDT. 3973This change adds a runtime option that will force ACPICA to use the RSDT 3974instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3975requires that an XSDT be used instead of the RSDT, the XSDT has been 3976found to be corrupt or ill-formed on some machines. Lv Zheng. 3977 3978Added a runtime option to favor 32-bit FADT register addresses over the 397964-bit addresses. This change adds an option to favor 32-bit FADT 3980addresses when there is a conflict between the 32-bit and 64-bit versions 3981of the same register. The default behavior is to use the 64-bit version 3982in accordance with the ACPI specification. This can now be overridden via 3983the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3984 3985During the change above, the internal "Convert FADT" and "Verify FADT" 3986functions have been merged to simplify the code, making it easier to 3987understand and maintain. ACPICA BZ 933. 3988 3989Improve exception reporting and handling for GPE block installation. 3990Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3991status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3992 3993Added helper macros to extract bus/segment numbers from the HEST table. 3994This change adds two macros to extract the encoded bus and segment 3995numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3996Betty Dall <betty.dall@hp.com> 3997 3998Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3999by ACPICA. It is not a public macro, so it should have no effect on 4000existing OSV code. Lv Zheng. 4001 4002Example Code and Data Size: These are the sizes for the OS-independent 4003acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4004debug version of the code includes the debug output trace mechanism and 4005has a much larger code and data size. 4006 4007 Current Release: 4008 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 4009 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 4010 Previous Release: 4011 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4012 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4013 4014 40152) iASL Compiler/Disassembler and Tools: 4016 4017Disassembler: Improved pathname support for emitted External() 4018statements. This change adds full pathname support for external names 4019that have been resolved internally by the inclusion of additional ACPI 4020tables (via the iASL -e option). Without this change, the disassembler 4021can emit multiple externals for the same object, or it become confused 4022when the Scope() operator is used on an external object. Overall, greatly 4023improves the ability to actually recompile the emitted ASL code when 4024objects a referenced across multiple ACPI tables. Reported by Michael 4025Tsirkin (mst@redhat.com). 4026 4027Tests/ASLTS: Updated functional control suite to execute with no errors. 4028David Box. Fixed several errors related to the testing of the interpreter 4029slack mode. Lv Zheng. 4030 4031iASL: Added support to detect names that are declared within a control 4032method, but are unused (these are temporary names that are only valid 4033during the time the method is executing). A remark is issued for these 4034cases. ACPICA BZ 1022. 4035 4036iASL: Added full support for the DBG2 table. Adds full disassembler, 4037table compiler, and template generator support for the DBG2 table (Debug 4038Port 2 table). 4039 4040iASL: Added full support for the PCCT table, update the table definition. 4041Updates the PCCT table definition in the actbl3.h header and adds table 4042compiler and template generator support. 4043 4044iASL: Added an option to emit only error messages (no warnings/remarks). 4045The -ve option will enable only error messages, warnings and remarks are 4046suppressed. This can simplify debugging when only the errors are 4047important, such as when an ACPI table is disassembled and there are many 4048warnings and remarks -- but only the actual errors are of real interest. 4049 4050Example ACPICA code (source/tools/examples): Updated the example code so 4051that it builds to an actual working program, not just example code. Added 4052ACPI tables and execution of an example control method in the DSDT. Added 4053makefile support for Unix generation. 4054 4055 4056---------------------------------------- 405715 November 2013. Summary of changes for version 20131115: 4058 4059This release is available at https://acpica.org/downloads 4060 4061 40621) ACPICA kernel-resident subsystem: 4063 4064Resource Manager: Fixed loop termination for the "get AML length" 4065function. The loop previously had an error termination on a NULL resource 4066pointer, which can never happen since the loop simply increments a valid 4067resource pointer. This fix changes the loop to terminate with an error on 4068an invalid end-of-buffer condition. The problem can be seen as an 4069infinite loop by callers to AcpiSetCurrentResources with an invalid or 4070corrupted resource descriptor, or a resource descriptor that is missing 4071an END_TAG descriptor. Reported by Dan Carpenter 4072<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 4073 4074Table unload and ACPICA termination: Delete all attached data objects 4075during namespace node deletion. This fix updates namespace node deletion 4076to delete the entire list of attached objects (attached via 4077AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 40781024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 4079 4080ACPICA termination: Added support to delete all objects attached to the 4081root namespace node. This fix deletes any and all objects that have been 4082attached to the root node via AcpiAttachData. Previously, none of these 4083objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 4084 4085Debug output: Do not emit the function nesting level for the in-kernel 4086build. The nesting level is really only useful during a single-thread 4087execution. Therefore, only enable this output for the AcpiExec utility. 4088Also, only emit the thread ID when executing under AcpiExec (Context 4089switches are still always detected and a message is emitted). ACPICA BZ 4090972. 4091 4092Example Code and Data Size: These are the sizes for the OS-independent 4093acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4094debug version of the code includes the debug output trace mechanism and 4095has a much larger code and data size. 4096 4097 Current Release: 4098 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 4099 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 4100 Previous Release: 4101 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4102 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4103 4104 41052) iASL Compiler/Disassembler and Tools: 4106 4107AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 4108correct portable POSIX header for terminal control functions. 4109 4110Disassembler: Fixed control method invocation issues related to the use 4111of the CondRefOf() operator. The problem is seen in the disassembly where 4112control method invocations may not be disassembled properly if the 4113control method name has been used previously as an argument to CondRefOf. 4114The solution is to not attempt to emit an external declaration for the 4115CondRefOf target (it is not necessary in the first place). This prevents 4116disassembler object type confusion. ACPICA BZ 988. 4117 4118Unix Makefiles: Added an option to disable compiler optimizations and the 4119_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 4120with optimizations (reportedly, gcc 4.4 for example). This change adds a 4121command line option for make (NOOPT) that disables all compiler 4122optimizations and the _FORTIFY_SOURCE compiler flag. The default 4123optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 41241034. Lv Zheng, Bob Moore. 4125 4126Tests/ASLTS: Added options to specify individual test cases and modes. 4127This allows testers running aslts.sh to optionally specify individual 4128test modes and test cases. Also added an option to disable the forced 4129generation of the ACPICA tools from source if desired. Lv Zheng. 4130 4131---------------------------------------- 413227 September 2013. Summary of changes for version 20130927: 4133 4134This release is available at https://acpica.org/downloads 4135 4136 41371) ACPICA kernel-resident subsystem: 4138 4139Fixed a problem with store operations to reference objects. This change 4140fixes a problem where a Store operation to an ArgX object that contained 4141a 4142reference to a field object did not complete the automatic dereference 4143and 4144then write to the actual field object. Instead, the object type of the 4145field object was inadvertently changed to match the type of the source 4146operand. The new behavior will actually write to the field object (buffer 4147field or field unit), thus matching the correct ACPI-defined behavior. 4148 4149Implemented support to allow the host to redefine individual OSL 4150prototypes. This change enables the host to redefine OSL prototypes found 4151in the acpiosxf.h file. This allows the host to implement OSL interfaces 4152with a macro or inlined function. Further, it allows the host to add any 4153additional required modifiers such as __iomem, __init, __exit, etc., as 4154necessary on a per-interface basis. Enables maximum flexibility for the 4155OSL interfaces. Lv Zheng. 4156 4157Hardcoded the access width for the FADT-defined reset register. The ACPI 4158specification requires the reset register width to be 8 bits. ACPICA now 4159hardcodes the width to 8 and ignores the FADT width value. This provides 4160compatibility with other ACPI implementations that have allowed BIOS code 4161with bad register width values to go unnoticed. Matthew Garett, Bob 4162Moore, 4163Lv Zheng. 4164 4165Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 4166used 4167in the OSL header (acpiosxf). The change modifies the position of this 4168macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 4169build issues if the OSL defines the implementation of the interface to be 4170an inline stub function. Lv Zheng. 4171 4172Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 4173initialization interfaces. This change adds a new macro for the main init 4174and terminate external interfaces in order to support hosts that require 4175additional or different processing for these functions. Changed from 4176ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 4177Zheng, Bob Moore. 4178 4179Cleaned up the memory allocation macros for configurability. In the 4180common 4181case, the ACPI_ALLOCATE and related macros now resolve directly to their 4182respective AcpiOs* OSL interfaces. Two options: 41831) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 4184default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 41852) For AcpiExec (and for debugging), the macros can optionally be 4186resolved 4187to the local ACPICA interfaces that track each allocation (local tracking 4188is used to immediately detect memory leaks). 4189Lv Zheng. 4190 4191Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 4192to predefine this macro to either TRUE or FALSE during the system build. 4193 4194Replaced __FUNCTION_ with __func__ in the gcc-specific header. 4195 4196Example Code and Data Size: These are the sizes for the OS-independent 4197acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4198debug version of the code includes the debug output trace mechanism and 4199has a much larger code and data size. 4200 4201 Current Release: 4202 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 4203 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 4204 Previous Release: 4205 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4206 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4207 4208 42092) iASL Compiler/Disassembler and Tools: 4210 4211iASL: Implemented wildcard support for the -e option. This simplifies use 4212when there are many SSDTs that must be included to resolve external 4213method 4214declarations. ACPICA BZ 1041. Example: 4215 iasl -e ssdt*.dat -d dsdt.dat 4216 4217AcpiExec: Add history/line-editing for Unix/Linux systems. This change 4218adds a portable module that implements full history and limited line 4219editing for Unix and Linux systems. It does not use readline() due to 4220portability issues. Instead it uses the POSIX termio interface to put the 4221terminal in raw input mode so that the various special keys can be 4222trapped 4223(such as up/down-arrow for history support and left/right-arrow for line 4224editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 4225 4226AcpiXtract: Add support to handle (ignore) "empty" lines containing only 4227one or more spaces. This provides compatible with early or different 4228versions of the AcpiDump utility. ACPICA BZ 1044. 4229 4230AcpiDump: Do not ignore tables that contain only an ACPI table header. 4231Apparently, some BIOSs create SSDTs that contain an ACPI table header but 4232no other data. This change adds support to dump these tables. Any tables 4233shorter than the length of an ACPI table header remain in error (an error 4234message is emitted). Reported by Yi Li. 4235 4236Debugger: Echo actual command along with the "unknown command" message. 4237 4238---------------------------------------- 423923 August 2013. Summary of changes for version 20130823: 4240 42411) ACPICA kernel-resident subsystem: 4242 4243Implemented support for host-installed System Control Interrupt (SCI) 4244handlers. Certain ACPI functionality requires the host to handle raw 4245SCIs. For example, the "SCI Doorbell" that is defined for memory power 4246state support requires the host device driver to handle SCIs to examine 4247if the doorbell has been activated. Multiple SCI handlers can be 4248installed to allow for future expansion. New external interfaces are 4249AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4250details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4251 4252Operation region support: Never locally free the handler "context" 4253pointer. This change removes some dangerous code that attempts to free 4254the handler context pointer in some (rare) circumstances. The owner of 4255the handler owns this pointer and the ACPICA code should never touch it. 4256Although not seen to be an issue in any kernel, it did show up as a 4257problem (fault) under AcpiExec. Also, set the internal storage field for 4258the context pointer to zero when the region is deactivated, simply for 4259sanity. David Box. ACPICA BZ 1039. 4260 4261AcpiRead: On error, do not modify the return value target location. If an 4262error happens in the middle of a split 32/32 64-bit I/O operation, do not 4263modify the target of the return value pointer. Makes the code consistent 4264with the rest of ACPICA. Bjorn Helgaas. 4265 4266Example Code and Data Size: These are the sizes for the OS-independent 4267acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4268debug version of the code includes the debug output trace mechanism and 4269has a much larger code and data size. 4270 4271 Current Release: 4272 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4273 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4274 Previous Release: 4275 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4276 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4277 4278 42792) iASL Compiler/Disassembler and Tools: 4280 4281AcpiDump: Implemented several new features and fixed some problems: 42821) Added support to dump the RSDP, RSDT, and XSDT tables. 42832) Added support for multiple table instances (SSDT, UEFI). 42843) Added option to dump "customized" (overridden) tables (-c). 42854) Fixed a problem where some table filenames were improperly 4286constructed. 42875) Improved some error messages, removed some unnecessary messages. 4288 4289iASL: Implemented additional support for disassembly of ACPI tables that 4290contain invocations of external control methods. The -fe<file> option 4291allows the import of a file that specifies the external methods along 4292with the required number of arguments for each -- allowing for the 4293correct disassembly of the table. This is a workaround for a limitation 4294of AML code where the disassembler often cannot determine the number of 4295arguments required for an external control method and generates incorrect 4296ASL code. See the iASL reference for details. ACPICA BZ 1030. 4297 4298Debugger: Implemented a new command (paths) that displays the full 4299pathnames (namepaths) and object types of all objects in the namespace. 4300This is an alternative to the namespace command. 4301 4302Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4303mechanism and any installed handlers. 4304 4305iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4306This can occur if there are too many parent prefixes in a namepath (for 4307example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4308 4309Application OSLs: Set the return value for the PCI read functions. These 4310functions simply return AE_OK, but should set the return value to zero 4311also. This change implements this. ACPICA BZ 1038. 4312 4313Debugger: Prevent possible command line buffer overflow. Increase the 4314size of a couple of the debugger line buffers, and ensure that overflow 4315cannot happen. ACPICA BZ 1037. 4316 4317iASL: Changed to abort immediately on serious errors during the parsing 4318phase. Due to the nature of ASL, there is no point in attempting to 4319compile these types of errors, and they typically end up causing a 4320cascade of hundreds of errors which obscure the original problem. 4321 4322---------------------------------------- 432325 July 2013. Summary of changes for version 20130725: 4324 43251) ACPICA kernel-resident subsystem: 4326 4327Fixed a problem with the DerefOf operator where references to FieldUnits 4328and BufferFields incorrectly returned the parent object, not the actual 4329value of the object. After this change, a dereference of a FieldUnit 4330reference results in a read operation on the field to get the value, and 4331likewise, the appropriate BufferField value is extracted from the target 4332buffer. 4333 4334Fixed a problem where the _WAK method could cause a fault under these 4335circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4336method returned no value. The problem is rarely seen because most kernels 4337run ACPICA in slack mode. 4338 4339For the DerefOf operator, a fatal error now results if an attempt is made 4340to dereference a reference (created by the Index operator) to a NULL 4341package element. Provides compatibility with other ACPI implementations, 4342and this behavior will be added to a future version of the ACPI 4343specification. 4344 4345The ACPI Power Management Timer (defined in the FADT) is now optional. 4346This provides compatibility with other ACPI implementations and will 4347appear in the next version of the ACPI specification. If there is no PM 4348Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4349zero in the FADT indicates no PM timer. 4350 4351Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4352allows the host to globally enable/disable all vendor strings, all 4353feature strings, or both. Intended to be primarily used for debugging 4354purposes only. Lv Zheng. 4355 4356Expose the collected _OSI data to the host via a global variable. This 4357data tracks the highest level vendor ID that has been invoked by the BIOS 4358so that the host (and potentially ACPICA itself) can change behaviors 4359based upon the age of the BIOS. 4360 4361Example Code and Data Size: These are the sizes for the OS-independent 4362acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4363debug version of the code includes the debug output trace mechanism and 4364has a much larger code and data size. 4365 4366 Current Release: 4367 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4368 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4369 Previous Release: 4370 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4371 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4372 4373 43742) iASL Compiler/Disassembler and Tools: 4375 4376iASL: Created the following enhancements for the -so option (create 4377offset table): 43781)Add offsets for the last nameseg in each namepath for every supported 4379object type 43802)Add support for Processor, Device, Thermal Zone, and Scope objects 43813)Add the actual AML opcode for the parent object of every supported 4382object type 43834)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4384 4385Disassembler: Emit all unresolved external symbols in a single block. 4386These are external references to control methods that could not be 4387resolved, and thus, the disassembler had to make a guess at the number of 4388arguments to parse. 4389 4390iASL: The argument to the -T option (create table template) is now 4391optional. If not specified, the default table is a DSDT, typically the 4392most common case. 4393 4394---------------------------------------- 439526 June 2013. Summary of changes for version 20130626: 4396 43971) ACPICA kernel-resident subsystem: 4398 4399Fixed an issue with runtime repair of the _CST object. Null or invalid 4400elements were not always removed properly. Lv Zheng. 4401 4402Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 4403FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 4404the maximum number of GPEs is 1016. Use of multiple GPE block devices 4405makes the system-wide number of GPEs essentially unlimited. 4406 4407Example Code and Data Size: These are the sizes for the OS-independent 4408acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4409debug version of the code includes the debug output trace mechanism and 4410has a much larger code and data size. 4411 4412 Current Release: 4413 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4414 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4415 Previous Release: 4416 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4417 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4418 4419 44202) iASL Compiler/Disassembler and Tools: 4421 4422Portable AcpiDump: Implemented full support for the Linux and FreeBSD 4423hosts. Now supports Linux, FreeBSD, and Windows. 4424 4425Disassembler: Added some missing types for the HEST and EINJ tables: "Set 4426Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 4427 4428iASL/Preprocessor: Implemented full support for nested 4429#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 4430 4431Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 4432max. The original purpose of this constraint was to limit the amount of 4433debug output. However, the string function in question (UtPrintString) is 4434now used for the disassembler also, where 256 bytes is insufficient. 4435Reported by RehabMan@GitHub. 4436 4437iASL/DataTables: Fixed some problems and issues with compilation of DMAR 4438tables. ACPICA BZ 999. Lv Zheng. 4439 4440iASL: Fixed a couple of error exit issues that could result in a "Could 4441not delete <file>" message during ASL compilation. 4442 4443AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 4444the actual signatures for these tables are "FACP" and "APIC", 4445respectively. 4446 4447AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 4448tables are allowed to have multiple instances. 4449 4450---------------------------------------- 445117 May 2013. Summary of changes for version 20130517: 4452 44531) ACPICA kernel-resident subsystem: 4454 4455Fixed a regression introduced in version 20130328 for _INI methods. This 4456change fixes a problem introduced in 20130328 where _INI methods are no 4457longer executed properly because of a memory block that was not 4458initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 4459<tomasz.nowicki@linaro.org>. 4460 4461Fixed a possible problem with the new extended sleep registers in the 4462ACPI 44635.0 FADT. Do not use these registers (even if populated) unless the HW- 4464reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 44651020. Lv Zheng. 4466 4467Implemented return value repair code for _CST predefined objects: Sort 4468the 4469list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4470 4471Implemented a debug-only option to disable loading of SSDTs from the 4472RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4473ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4474acglobal.h - ACPICA BZ 1005. Lv Zheng. 4475 4476Fixed some issues in the ACPICA initialization and termination code: 4477Tomasz Nowicki <tomasz.nowicki@linaro.org> 44781) Clear events initialized flag upon event component termination. ACPICA 4479BZ 1013. 44802) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 44813) Delete global lock pending lock during termination. ACPICA BZ 1012. 44824) Clear debug buffer global on termination to prevent possible multiple 4483delete. ACPICA BZ 1010. 4484 4485Standardized all switch() blocks across the entire source base. After 4486many 4487years, different formatting for switch() had crept in. This change makes 4488the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4489 4490Split some files to enhance ACPICA modularity and configurability: 44911) Split buffer dump routines into utilities/utbuffer.c 44922) Split internal error message routines into utilities/uterror.c 44933) Split table print utilities into tables/tbprint.c 44944) Split iASL command-line option processing into asloptions.c 4495 4496Makefile enhancements: 44971) Support for all new files above. 44982) Abort make on errors from any subcomponent. Chao Guan. 44993) Add build support for Apple Mac OS X. Liang Qi. 4500 4501Example Code and Data Size: These are the sizes for the OS-independent 4502acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4503debug version of the code includes the debug output trace mechanism and 4504has a much larger code and data size. 4505 4506 Current Release: 4507 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4508 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4509 Previous Release: 4510 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4511 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4512 4513 45142) iASL Compiler/Disassembler and Tools: 4515 4516New utility: Implemented an easily portable version of the acpidump 4517utility to extract ACPI tables from the system (or a file) in an ASCII 4518hex 4519dump format. The top-level code implements the various command line 4520options, file I/O, and table dump routines. To port to a new host, only 4521three functions need to be implemented to get tables -- since this 4522functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4523the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 45241) The Windows version obtains the ACPI tables from the Registry. 45252) The Linux version is under development. 45263) Other hosts - If an OS-dependent module is submitted, it will be 4527distributed with ACPICA. 4528 4529iASL: Fixed a regression for -D preprocessor option (define symbol). A 4530restructuring/change to the initialization sequence caused this option to 4531no longer work properly. 4532 4533iASL: Implemented a mechanism to disable specific warnings and remarks. 4534Adds a new command line option, "-vw <messageid> as well as "#pragma 4535disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4536 4537iASL: Fix for too-strict package object validation. The package object 4538validation for return values from the predefined names is a bit too 4539strict, it does not allow names references within the package (which will 4540be resolved at runtime.) These types of references cannot be validated at 4541compile time. This change ignores named references within package objects 4542for names that return or define static packages. 4543 4544Debugger: Fixed the 80-character command line limitation for the History 4545command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4546 4547iASL: Added control method and package support for the -so option 4548(generates AML offset table for BIOS support.) 4549 4550iASL: issue a remark if a non-serialized method creates named objects. If 4551a thread blocks within the method for any reason, and another thread 4552enters the method, the method will fail because an attempt will be made 4553to 4554create the same (named) object twice. In this case, issue a remark that 4555the method should be marked serialized. NOTE: may become a warning later. 4556ACPICA BZ 909. 4557 4558---------------------------------------- 455918 April 2013. Summary of changes for version 20130418: 4560 45611) ACPICA kernel-resident subsystem: 4562 4563Fixed a possible buffer overrun during some rare but specific field unit 4564read operations. This overrun can only happen if the DSDT version is 1 -- 4565meaning that all AML integers are 32 bits -- and the field length is 4566between 33 and 55 bits long. During the read, an internal buffer object 4567is 4568created for the field unit because the field is larger than an integer 4569(32 4570bits). However, in this case, the buffer will be incorrectly written 4571beyond the end because the buffer length is less than the internal 4572minimum 4573of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4574long, but a full 8 bytes will be written. 4575 4576Updated the Embedded Controller "orphan" _REG method support. This refers 4577to _REG methods under the EC device that have no corresponding operation 4578region. This is allowed by the ACPI specification. This update removes a 4579dependency on the existence an ECDT table. It will execute an orphan _REG 4580method as long as the operation region handler for the EC is installed at 4581the EC device node and not the namespace root. Rui Zhang (original 4582update), Bob Moore (update/integrate). 4583 4584Implemented run-time argument typechecking for all predefined ACPI names 4585(_STA, _BIF, etc.) This change performs object typechecking on all 4586incoming arguments for all predefined names executed via 4587AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4588passing correct object types as well as the correct number of arguments 4589(therefore identifying any issues immediately). Also, the ASL/namespace 4590definition of the predefined name is checked against the ACPI 4591specification for the proper argument count. Adds one new file, 4592nsarguments.c 4593 4594Changed an exception code for the ASL UnLoad() operator. Changed the 4595exception code for the case where the input DdbHandle is invalid, from 4596AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4597 4598Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4599global makefile. The use of this flag causes compiler errors on earlier 4600versions of GCC, so it has been removed for compatibility. 4601 4602Miscellaneous cleanup: 46031) Removed some unused/obsolete macros 46042) Fixed a possible memory leak in the _OSI support 46053) Removed an unused variable in the predefined name support 46064) Windows OSL: remove obsolete reference to a memory list field 4607 4608Example Code and Data Size: These are the sizes for the OS-independent 4609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4610debug version of the code includes the debug output trace mechanism and 4611has a much larger code and data size. 4612 4613 Current Release: 4614 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4615 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4616 Previous Release: 4617 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4618 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4619 4620 46212) iASL Compiler/Disassembler and Tools: 4622 4623AcpiExec: Added installation of a handler for the SystemCMOS address 4624space. This prevents control method abort if a method accesses this 4625space. 4626 4627AcpiExec: Added support for multiple EC devices, and now install EC 4628operation region handler(s) at the actual EC device instead of the 4629namespace root. This reflects the typical behavior of host operating 4630systems. 4631 4632AcpiExec: Updated to ensure that all operation region handlers are 4633installed before the _REG methods are executed. This prevents a _REG 4634method from aborting if it accesses an address space has no handler. 4635AcpiExec installs a handler for every possible address space. 4636 4637Debugger: Enhanced the "handlers" command to display non-root handlers. 4638This change enhances the handlers command to display handlers associated 4639with individual devices throughout the namespace, in addition to the 4640currently supported display of handlers associated with the root 4641namespace 4642node. 4643 4644ASL Test Suite: Several test suite errors have been identified and 4645resolved, reducing the total error count during execution. Chao Guan. 4646 4647---------------------------------------- 464828 March 2013. Summary of changes for version 20130328: 4649 46501) ACPICA kernel-resident subsystem: 4651 4652Fixed several possible race conditions with the internal object reference 4653counting mechanism. Some of the external ACPICA interfaces update object 4654reference counts without holding the interpreter or namespace lock. This 4655change adds a spinlock to protect reference count updates on the internal 4656ACPICA objects. Reported by and with assistance from Andriy Gapon 4657(avg@FreeBSD.org). 4658 4659FADT support: Removed an extraneous warning for very large GPE register 4660sets. This change removes a size mismatch warning if the legacy length 4661field for a GPE register set is larger than the 64-bit GAS structure can 4662accommodate. GPE register sets can be larger than the 255-bit width 4663limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4664 4665_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4666return from this interface. Handles a possible timeout case if 4667ACPI_WAIT_FOREVER is modified by the host to be a value less than 4668"forever". Jung-uk Kim. 4669 4670Predefined name support: Add allowed/required argument type information 4671to 4672the master predefined info table. This change adds the infrastructure to 4673enable typechecking on incoming arguments for all predefined 4674methods/objects. It does not actually contain the code that will fully 4675utilize this information, this is still under development. Also condenses 4676some duplicate code for the predefined names into a new module, 4677utilities/utpredef.c 4678 4679Example Code and Data Size: These are the sizes for the OS-independent 4680acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4681debug version of the code includes the debug output trace mechanism and 4682has a much larger code and data size. 4683 4684 Previous Release: 4685 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4686 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4687 Current Release: 4688 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4689 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4690 4691 46922) iASL Compiler/Disassembler and Tools: 4693 4694iASL: Implemented a new option to simplify the development of ACPI- 4695related 4696BIOS code. Adds support for a new "offset table" output file. The -so 4697option will create a C table containing the AML table offsets of various 4698named objects in the namespace so that BIOS code can modify them easily 4699at 4700boot time. This can simplify BIOS runtime code by eliminating expensive 4701searches for "magic values", enhancing boot times and adding greater 4702reliability. With assistance from Lee Hamel. 4703 4704iASL: Allow additional predefined names to return zero-length packages. 4705Now, all predefined names that are defined by the ACPI specification to 4706return a "variable-length package of packages" are allowed to return a 4707zero length top-level package. This allows the BIOS to tell the host that 4708the requested feature is not supported, and supports existing BIOS/ASL 4709code and practices. 4710 4711iASL: Changed the "result not used" warning to an error. This is the case 4712where an ASL operator is effectively a NOOP because the result of the 4713operation is not stored anywhere. For example: 4714 Add (4, Local0) 4715There is no target (missing 3rd argument), nor is the function return 4716value used. This is potentially a very serious problem -- since the code 4717was probably intended to do something, but for whatever reason, the value 4718was not stored. Therefore, this issue has been upgraded from a warning to 4719an error. 4720 4721AcpiHelp: Added allowable/required argument types to the predefined names 4722info display. This feature utilizes the recent update to the predefined 4723names table (above). 4724 4725---------------------------------------- 472614 February 2013. Summary of changes for version 20130214: 4727 47281) ACPICA Kernel-resident Subsystem: 4729 4730Fixed a possible regression on some hosts: Reinstated the safe return 4731macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4732evaluated only once. Although these macros are not needed for the ACPICA 4733code itself, they are often used by ACPI-related host device drivers 4734where 4735the safe feature may be necessary. 4736 4737Fixed several issues related to the ACPI 5.0 reduced hardware support 4738(SOC): Now ensure that if the platform declares itself as hardware- 4739reduced 4740via the FADT, the following functions become NOOPs (and always return 4741AE_OK) because ACPI is always enabled by definition on these machines: 4742 AcpiEnable 4743 AcpiDisable 4744 AcpiHwGetMode 4745 AcpiHwSetMode 4746 4747Dynamic Object Repair: Implemented additional runtime repairs for 4748predefined name return values. Both of these repairs can simplify code in 4749the related device drivers that invoke these methods: 47501) For the _STR and _MLS names, automatically repair/convert an ASCII 4751string to a Unicode buffer. 47522) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4753a 4754lone end tag descriptor in the following cases: A Return(0) was executed, 4755a null buffer was returned, or no object at all was returned (non-slack 4756mode only). Adds a new file, nsconvert.c 4757ACPICA BZ 998. Bob Moore, Lv Zheng. 4758 4759Resource Manager: Added additional code to prevent possible infinite 4760loops 4761while traversing corrupted or ill-formed resource template buffers. Check 4762for zero-length resource descriptors in all code that loops through 4763resource templates (the length field is used to index through the 4764template). This change also hardens the external AcpiWalkResources and 4765AcpiWalkResourceBuffer interfaces. 4766 4767Local Cache Manager: Enhanced the main data structure to eliminate an 4768unnecessary mechanism to access the next object in the list. Actually 4769provides a small performance enhancement for hosts that use the local 4770ACPICA cache manager. Jung-uk Kim. 4771 4772Example Code and Data Size: These are the sizes for the OS-independent 4773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4774debug version of the code includes the debug output trace mechanism and 4775has a much larger code and data size. 4776 4777 Previous Release: 4778 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4779 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4780 Current Release: 4781 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4782 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4783 4784 47852) iASL Compiler/Disassembler and Tools: 4786 4787iASL/Disassembler: Fixed several issues with the definition of the ACPI 47885.0 RASF table (RAS Feature Table). This change incorporates late changes 4789that were made to the ACPI 5.0 specification. 4790 4791iASL/Disassembler: Added full support for the following new ACPI tables: 4792 1) The MTMR table (MID Timer Table) 4793 2) The VRTC table (Virtual Real Time Clock Table). 4794Includes header file, disassembler, table compiler, and template support 4795for both tables. 4796 4797iASL: Implemented compile-time validation of package objects returned by 4798predefined names. This new feature validates static package objects 4799returned by the various predefined names defined to return packages. Both 4800object types and package lengths are validated, for both parent packages 4801and sub-packages, if any. The code is similar in structure and behavior 4802to 4803the runtime repair mechanism within the AML interpreter and uses the 4804existing predefined name information table. Adds a new file, aslprepkg.c. 4805ACPICA BZ 938. 4806 4807iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4808This feature detects a binary file with a valid ACPI table header and 4809invokes the disassembler automatically. Eliminates the need to 4810specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4811 4812iASL/Disassembler: Added several warnings for the case where there are 4813unresolved control methods during the disassembly. This can potentially 4814cause errors when the output file is compiled, because the disassembler 4815assumes zero method arguments in these cases (it cannot determine the 4816actual number of arguments without resolution/definition of the method). 4817 4818Debugger: Added support to display all resources with a single command. 4819Invocation of the resources command with no arguments will now display 4820all 4821resources within the current namespace. 4822 4823AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4824via the -e option. 4825 4826---------------------------------------- 482717 January 2013. Summary of changes for version 20130117: 4828 48291) ACPICA Kernel-resident Subsystem: 4830 4831Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4832return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4833objects to return a package containing one integer, most BIOS code 4834returns 4835two integers and the previous code reflects that. However, we also need 4836to 4837support BIOS code that actually implements to the ACPI spec, and this 4838change reflects this. 4839 4840Fixed two issues with the ACPI_DEBUG_PRINT macros: 48411) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4842C compilers that require this support. 48432) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4844ACPI_DEBUG is already used by many of the various hosts. 4845 4846Updated all ACPICA copyrights and signons to 2013. Added the 2013 4847copyright to all module headers and signons, including the standard Linux 4848header. This affects virtually every file in the ACPICA core subsystem, 4849iASL compiler, all ACPICA utilities, and the test suites. 4850 4851Example Code and Data Size: These are the sizes for the OS-independent 4852acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4853debug version of the code includes the debug output trace mechanism and 4854has a much larger code and data size. 4855 4856 Previous Release: 4857 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4858 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4859 Current Release: 4860 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4861 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4862 4863 48642) iASL Compiler/Disassembler and Tools: 4865 4866Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4867prevent a possible fault on some hosts. Some C libraries modify the arg 4868pointer parameter to vfprintf making it difficult to call it twice in the 4869AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4870does not affect the Windows OSL since the Win C library does not modify 4871the arg pointer. Chao Guan, Bob Moore. 4872 4873iASL: Fixed a possible infinite loop when the maximum error count is 4874reached. If an output file other than the .AML file is specified (such as 4875a listing file), and the maximum number of errors is reached, do not 4876attempt to flush data to the output file(s) as the compiler is aborting. 4877This can cause an infinite loop as the max error count code essentially 4878keeps calling itself. 4879 4880iASL/Disassembler: Added an option (-in) to ignore NOOP 4881opcodes/operators. 4882Implemented for both the compiler and the disassembler. Often, the NOOP 4883opcode is used as padding for packages that are changed dynamically by 4884the 4885BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4886errors. This option causes the disassembler to ignore all NOOP opcodes 4887(0xA3), and it also causes the compiler to ignore all ASL source code 4888NOOP 4889statements as well. 4890 4891Debugger: Enhanced the Sleep command to execute all sleep states. This 4892change allows Sleep to be invoked with no arguments and causes the 4893debugger to execute all of the sleep states, 0-5, automatically. 4894 4895---------------------------------------- 489620 December 2012. Summary of changes for version 20121220: 4897 48981) ACPICA Kernel-resident Subsystem: 4899 4900Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4901alternate entry point for AcpiWalkResources and improves the usability of 4902the resource manager by accepting as input a buffer containing the output 4903of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4904input buffer is not deleted by this interface so that it can be used by 4905the host later. See the ACPICA reference for details. 4906 4907Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4908(DSDT version < 2). The constant will be truncated and this warning 4909reflects that behavior. 4910 4911Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4912ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4913both get and set the new wake bit in these descriptors, separately from 4914the existing share bit. Reported by Aaron Lu. 4915 4916Interpreter: Fix Store() when an implicit conversion is not possible. For 4917example, in the cases such as a store of a string to an existing package 4918object, implement the store as a CopyObject(). This is a small departure 4919from the ACPI specification which states that the control method should 4920be 4921aborted in this case. However, the ASLTS suite depends on this behavior. 4922 4923Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4924macros: check if debug output is currently enabled as soon as possible to 4925minimize performance impact if debug is in fact not enabled. 4926 4927Source code restructuring: Cleanup to improve modularity. The following 4928new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4929psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4930Associated makefiles and project files have been updated. 4931 4932Changed an exception code for LoadTable operator. For the case where one 4933of the input strings is too long, change the returned exception code from 4934AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4935 4936Fixed a possible memory leak in dispatcher error path. On error, delete 4937the mutex object created during method mutex creation. Reported by 4938tim.gardner@canonical.com. 4939 4940Example Code and Data Size: These are the sizes for the OS-independent 4941acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4942debug version of the code includes the debug output trace mechanism and 4943has a much larger code and data size. 4944 4945 Previous Release: 4946 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4947 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4948 Current Release: 4949 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4950 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4951 4952 49532) iASL Compiler/Disassembler and Tools: 4954 4955iASL: Disallow a method call as argument to the ObjectType ASL operator. 4956This change tracks an errata to the ACPI 5.0 document. The AML grammar 4957will not allow the interpreter to differentiate between a method and a 4958method invocation when these are used as an argument to the ObjectType 4959operator. The ACPI specification change is to disallow a method 4960invocation 4961(UserTerm) for the ObjectType operator. 4962 4963Finish support for the TPM2 and CSRT tables in the headers, table 4964compiler, and disassembler. 4965 4966Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4967always expires immediately if the semaphore is not available. The 4968original 4969code was using a relative-time timeout, but sem_timedwait requires the 4970use 4971of an absolute time. 4972 4973iASL: Added a remark if the Timer() operator is used within a 32-bit 4974table. This operator returns a 64-bit time value that will be truncated 4975within a 32-bit table. 4976 4977iASL Source code restructuring: Cleanup to improve modularity. The 4978following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4979aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4980been updated. 4981 4982 4983---------------------------------------- 498414 November 2012. Summary of changes for version 20121114: 4985 49861) ACPICA Kernel-resident Subsystem: 4987 4988Implemented a performance enhancement for ACPI/AML Package objects. This 4989change greatly increases the performance of Package objects within the 4990interpreter. It changes the processing of reference counts for packages 4991by 4992optimizing for the most common case where the package sub-objects are 4993either Integers, Strings, or Buffers. Increases the overall performance 4994of 4995the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 49962X.) 4997Chao Guan. ACPICA BZ 943. 4998 4999Implemented and deployed common macros to extract flag bits from resource 5000descriptors. Improves readability and maintainability of the code. Fixes 5001a 5002problem with the UART serial bus descriptor for the number of data bits 5003flags (was incorrectly 2 bits, should be 3). 5004 5005Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 5006of the macros and changed the SETx macros to the style of (destination, 5007source). Also added ACPI_CASTx companion macros. Lv Zheng. 5008 5009Example Code and Data Size: These are the sizes for the OS-independent 5010acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5011debug version of the code includes the debug output trace mechanism and 5012has a much larger code and data size. 5013 5014 Previous Release: 5015 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5016 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5017 Current Release: 5018 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 5019 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5020 5021 50222) iASL Compiler/Disassembler and Tools: 5023 5024Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 5025adds the ShareAndWake and ExclusiveAndWake flags which were added to the 5026Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 5027 5028Disassembler: Fixed a problem with external declaration generation. Fixes 5029a problem where an incorrect pathname could be generated for an external 5030declaration if the original reference to the object includes leading 5031carats (^). ACPICA BZ 984. 5032 5033Debugger: Completed a major update for the Disassemble<method> command. 5034This command was out-of-date and did not properly disassemble control 5035methods that had any reasonable complexity. This fix brings the command 5036up 5037to the same level as the rest of the disassembler. Adds one new file, 5038dmdeferred.c, which is existing code that is now common with the main 5039disassembler and the debugger disassemble command. ACPICA MZ 978. 5040 5041iASL: Moved the parser entry prototype to avoid a duplicate declaration. 5042Newer versions of Bison emit this prototype, so moved the prototype out 5043of 5044the iASL header to where it is actually used in order to avoid a 5045duplicate 5046declaration. 5047 5048iASL/Tools: Standardized use of the stream I/O functions: 5049 1) Ensure check for I/O error after every fopen/fread/fwrite 5050 2) Ensure proper order of size/count arguments for fread/fwrite 5051 3) Use test of (Actual != Requested) after all fwrite, and most fread 5052 4) Standardize I/O error messages 5053Improves reliability and maintainability of the code. Bob Moore, Lv 5054Zheng. 5055ACPICA BZ 981. 5056 5057Disassembler: Prevent duplicate External() statements. During generation 5058of external statements, detect similar pathnames that are actually 5059duplicates such as these: 5060 External (\ABCD) 5061 External (ABCD) 5062Remove all leading '\' characters from pathnames during the external 5063statement generation so that duplicates will be detected and tossed. 5064ACPICA BZ 985. 5065 5066Tools: Replace low-level I/O with stream I/O functions. Replace 5067open/read/write/close with the stream I/O equivalents 5068fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 5069Moore. 5070 5071AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 5072name header so that AcpiXtract recognizes the output file/table. 5073 5074iASL: Remove obsolete -2 option flag. Originally intended to force the 5075compiler/disassembler into an ACPI 2.0 mode, this was never implemented 5076and the entire concept is now obsolete. 5077 5078---------------------------------------- 507918 October 2012. Summary of changes for version 20121018: 5080 5081 50821) ACPICA Kernel-resident Subsystem: 5083 5084Updated support for the ACPI 5.0 MPST table. Fixes some problems 5085introduced by late changes to the table as it was added to the ACPI 5.0 5086specification. Includes header, disassembler, and data table compiler 5087support as well as a new version of the MPST template. 5088 5089AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 50905.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 5091methods: _HID, _CID, and _UID. 5092 5093Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 5094ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 5095name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 5096names for their various drivers. Affects the AcpiGetObjectInfo external 5097interface, and other internal interfaces as well. 5098 5099Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 5100This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 5101on machines that support non-aligned transfers. Optimizes for this case 5102rather than using a strncpy. With assistance from Zheng Lv. 5103 5104Resource Manager: Small fix for buffer size calculation. Fixed a one byte 5105error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 5106 5107Added a new debug print message for AML mutex objects that are force- 5108released. At control method termination, any currently acquired mutex 5109objects are force-released. Adds a new debug-only message for each one 5110that is released. 5111 5112Audited/updated all ACPICA return macros and the function debug depth 5113counter: 1) Ensure that all functions that use the various TRACE macros 5114also use the appropriate ACPICA return macros. 2) Ensure that all normal 5115return statements surround the return expression (value) with parens to 5116ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 5117Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 5118 5119Global source code changes/maintenance: All extra lines at the start and 5120end of each source file have been removed for consistency. Also, within 5121comments, all new sentences start with a single space instead of a double 5122space, again for consistency across the code base. 5123 5124Example Code and Data Size: These are the sizes for the OS-independent 5125acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5126debug version of the code includes the debug output trace mechanism and 5127has a much larger code and data size. 5128 5129 Previous Release: 5130 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5131 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5132 Current Release: 5133 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 5134 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 5135 5136 51372) iASL Compiler/Disassembler and Tools: 5138 5139AcpiExec: Improved the algorithm used for memory leak/corruption 5140detection. Added some intelligence to the code that maintains the global 5141list of allocated memory. The list is now ordered by allocated memory 5142address, significantly improving performance. When running AcpiExec on 5143the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 5144on the platform and/or the environment. Note, this performance 5145enhancement affects the AcpiExec utility only, not the kernel-resident 5146ACPICA code. 5147 5148Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 5149the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 5150incorrect table offset reported for invalid opcodes. Report the original 515132-bit value for bad ACPI_NAMEs (as well as the repaired name.) 5152 5153Disassembler: Enhanced the -vt option to emit the binary table data in 5154hex format to assist with debugging. 5155 5156Fixed a potential filename buffer overflow in osunixdir.c. Increased the 5157size of file structure. Colin Ian King. 5158 5159---------------------------------------- 516013 September 2012. Summary of changes for version 20120913: 5161 5162 51631) ACPICA Kernel-resident Subsystem: 5164 5165ACPI 5.0: Added two new notify types for the Hardware Error Notification 5166Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 5167and 5168MCE(6). 5169 5170Table Manager: Merged/removed duplicate code in the root table resize 5171functions. One function is external, the other is internal. Lv Zheng, 5172ACPICA 5173BZ 846. 5174 5175Makefiles: Completely removed the obsolete "Linux" makefiles under 5176acpica/generate/linux. These makefiles are obsolete and have been 5177replaced 5178by 5179the generic unix makefiles under acpica/generate/unix. 5180 5181Makefiles: Ensure that binary files always copied properly. Minor rule 5182change 5183to ensure that the final binary output files are always copied up to the 5184appropriate binary directory (bin32 or bin64.) 5185 5186Example Code and Data Size: These are the sizes for the OS-independent 5187acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5188debug 5189version of the code includes the debug output trace mechanism and has a 5190much 5191larger code and data size. 5192 5193 Previous Release: 5194 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5195 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5196 Current Release: 5197 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 5198 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 5199 5200 52012) iASL Compiler/Disassembler and Tools: 5202 5203Disassembler: Fixed a possible fault during the disassembly of resource 5204descriptors when a second parse is required because of the invocation of 5205external control methods within the table. With assistance from 5206adq@lidskialf.net. ACPICA BZ 976. 5207 5208iASL: Fixed a namepath optimization problem. An error can occur if the 5209parse 5210node that contains the namepath to be optimized does not have a parent 5211node 5212that is a named object. This change fixes the problem. 5213 5214iASL: Fixed a regression where the AML file is not deleted on errors. The 5215AML 5216output file should be deleted if there are any errors during the 5217compiler. 5218The 5219only exception is if the -f (force output) option is used. ACPICA BZ 974. 5220 5221iASL: Added a feature to automatically increase internal line buffer 5222sizes. 5223Via realloc(), automatically increase the internal line buffer sizes as 5224necessary to support very long source code lines. The current version of 5225the 5226preprocessor requires a buffer long enough to contain full source code 5227lines. 5228This change increases the line buffer(s) if the input lines go beyond the 5229current buffer size. This eliminates errors that occurred when a source 5230code 5231line was longer than the buffer. 5232 5233iASL: Fixed a problem with constant folding in method declarations. The 5234SyncLevel term is a ByteConstExpr, and incorrect code would be generated 5235if a 5236Type3 opcode was used. 5237 5238Debugger: Improved command help support. For incorrect argument count, 5239display 5240full help for the command. For help command itself, allow an argument to 5241specify a command. 5242 5243Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5244errors during execution of the suite. Guan Chao. 5245 5246---------------------------------------- 524716 August 2012. Summary of changes for version 20120816: 5248 5249 52501) ACPICA Kernel-resident Subsystem: 5251 5252Removed all use of the deprecated _GTS and _BFS predefined methods. The 5253_GTS 5254(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5255deprecated and will probably be removed from the ACPI specification. 5256Windows 5257does not invoke them, and reportedly never will. The final nail in the 5258coffin 5259is that the ACPI specification states that these methods must be run with 5260interrupts off, which is not going to happen in a kernel interpreter. 5261Note: 5262Linux has removed all use of the methods also. It was discovered that 5263invoking these functions caused failures on some machines, probably 5264because 5265they were never tested since Windows does not call them. Affects two 5266external 5267interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5268ACPICA BZ 969. 5269 5270Implemented support for complex bit-packed buffers returned from the _PLD 5271(Physical Location of Device) predefined method. Adds a new external 5272interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5273C 5274structure. Note: C Bitfields cannot be used for this type of predefined 5275structure since the memory layout of individual bitfields is not defined 5276by 5277the C language. In addition, there are endian concerns where a compiler 5278will 5279change the bitfield ordering based on the machine type. The new ACPICA 5280interface eliminates these issues, and should be called after _PLD is 5281executed. ACPICA BZ 954. 5282 5283Implemented a change to allow a scope change to root (via "Scope (\)") 5284during 5285execution of module-level ASL code (code that is executed at table load 5286time.) Lin Ming. 5287 5288Added the Windows8/Server2012 string for the _OSI method. This change 5289adds 5290a 5291new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 52922012. 5293 5294Added header support for the new ACPI tables DBG2 (Debug Port Table Type 52952) 5296and CSRT (Core System Resource Table). 5297 5298Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5299names. This simplifies access to the buffers returned by these predefined 5300names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5301 5302GPE support: Removed an extraneous parameter from the various low-level 5303internal GPE functions. Tang Feng. 5304 5305Removed the linux makefiles from the unix packages. The generate/linux 5306makefiles are obsolete and have been removed from the unix tarball 5307release 5308packages. The replacement makefiles are under generate/unix, and there is 5309a 5310top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5311 5312Updates for Unix makefiles: 53131) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 53142) Update linker flags (move to end of command line) for AcpiExec 5315utility. 5316Guan Chao. 5317 5318Split ACPICA initialization functions to new file, utxfinit.c. Split from 5319utxface.c to improve modularity and reduce file size. 5320 5321Example Code and Data Size: These are the sizes for the OS-independent 5322acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5323debug version of the code includes the debug output trace mechanism and 5324has a 5325much larger code and data size. 5326 5327 Previous Release: 5328 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5329 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5330 Current Release: 5331 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5332 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5333 5334 53352) iASL Compiler/Disassembler and Tools: 5336 5337iASL: Fixed a problem with constant folding for fixed-length constant 5338expressions. The constant-folding code was not being invoked for constant 5339expressions that allow the use of type 3/4/5 opcodes to generate 5340constants 5341for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5342result 5343in the generation of invalid AML bytecode. ACPICA BZ 970. 5344 5345iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5346apparently automatically emit some of the necessary externals. This 5347change 5348handles these versions in order to eliminate generation warnings. 5349 5350Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5351 5352Disassembler: Add support to decode _PLD buffers. The decoded buffer 5353appears 5354within comments in the output file. 5355 5356Debugger: Fixed a regression with the "Threads" command where 5357AE_BAD_PARAMETER was always returned. 5358 5359---------------------------------------- 536011 July 2012. Summary of changes for version 20120711: 5361 53621) ACPICA Kernel-resident Subsystem: 5363 5364Fixed a possible fault in the return package object repair code. Fixes a 5365problem that can occur when a lone package object is wrapped with an 5366outer 5367package object in order to force conformance to the ACPI specification. 5368Can 5369affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5370_DLM, 5371_CSD, _PSD, _TSD. 5372 5373Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5374PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5375ARB_DIS bit must be implemented in the host-dependent C3 processor power 5376state 5377support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5378both 5379Intel and other vendors. (for Intel: ICH4-M and earlier) 5380 5381This change removes the code to disable/enable bus master arbitration 5382during 5383suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5384causes 5385resume problems on some machines. The change has been in use for over 5386seven 5387years within Linux. 5388 5389Implemented two new external interfaces to support host-directed dynamic 5390ACPI 5391table load and unload. They are intended to simplify the host 5392implementation 5393of hot-plug support: 5394 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5395 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5396table. 5397See the ACPICA reference for additional details. Adds one new file, 5398components/tables/tbxfload.c 5399 5400Implemented and deployed two new interfaces for errors and warnings that 5401are 5402known to be caused by BIOS/firmware issues: 5403 AcpiBiosError: Prints "ACPI Firmware Error" message. 5404 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 5405Deployed these new interfaces in the ACPICA Table Manager code for ACPI 5406table 5407and FADT errors. Additional deployment to be completed as appropriate in 5408the 5409future. The associated conditional macros are ACPI_BIOS_ERROR and 5410ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 5411ACPICA 5412BZ 5413843. 5414 5415Implicit notify support: ensure that no memory allocation occurs within a 5416critical region. This fix moves a memory allocation outside of the time 5417that a 5418spinlock is held. Fixes issues on systems that do not allow this 5419behavior. 5420Jung-uk Kim. 5421 5422Split exception code utilities and tables into a new file, 5423utilities/utexcep.c 5424 5425Example Code and Data Size: These are the sizes for the OS-independent 5426acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5427debug 5428version of the code includes the debug output trace mechanism and has a 5429much 5430larger code and data size. 5431 5432 Previous Release: 5433 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5434 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5435 Current Release: 5436 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5437 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5438 5439 54402) iASL Compiler/Disassembler and Tools: 5441 5442iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 5443of 54440. Jung-uk Kim. 5445 5446Debugger: Enhanced the "tables" command to emit additional information 5447about 5448the current set of ACPI tables, including the owner ID and flags decode. 5449 5450Debugger: Reimplemented the "unload" command to use the new 5451AcpiUnloadParentTable external interface. This command was disable 5452previously 5453due to need for an unload interface. 5454 5455AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 5456option 5457will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 5458 5459---------------------------------------- 546020 June 2012. Summary of changes for version 20120620: 5461 5462 54631) ACPICA Kernel-resident Subsystem: 5464 5465Implemented support to expand the "implicit notify" feature to allow 5466multiple 5467devices to be notified by a single GPE. This feature automatically 5468generates a 5469runtime device notification in the absence of a BIOS-provided GPE control 5470method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5471notify is 5472provided by ACPICA for Windows compatibility, and is a workaround for 5473BIOS 5474AML 5475code errors. See the description of the AcpiSetupGpeForWake interface in 5476the 5477APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5478 5479Changed some comments and internal function names to simplify and ensure 5480correctness of the Linux code translation. No functional changes. 5481 5482Example Code and Data Size: These are the sizes for the OS-independent 5483acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5484debug 5485version of the code includes the debug output trace mechanism and has a 5486much 5487larger code and data size. 5488 5489 Previous Release: 5490 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5491 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5492 Current Release: 5493 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5494 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5495 5496 54972) iASL Compiler/Disassembler and Tools: 5498 5499Disassembler: Added support to emit short, commented descriptions for the 5500ACPI 5501predefined names in order to improve the readability of the disassembled 5502output. ACPICA BZ 959. Changes include: 5503 1) Emit descriptions for all standard predefined names (_INI, _STA, 5504_PRW, 5505etc.) 5506 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5507 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5508etc.) 5509 5510AcpiSrc: Fixed several long-standing Linux code translation issues. 5511Argument 5512descriptions in function headers are now translated properly to lower 5513case 5514and 5515underscores. ACPICA BZ 961. Also fixes translation problems such as 5516these: 5517(old -> new) 5518 i_aSL -> iASL 5519 00-7_f -> 00-7F 5520 16_k -> 16K 5521 local_fADT -> local_FADT 5522 execute_oSI -> execute_OSI 5523 5524iASL: Fixed a problem where null bytes were inadvertently emitted into 5525some 5526listing files. 5527 5528iASL: Added the existing debug options to the standard help screen. There 5529are 5530no longer two different help screens. ACPICA BZ 957. 5531 5532AcpiHelp: Fixed some typos in the various predefined name descriptions. 5533Also 5534expand some of the descriptions where appropriate. 5535 5536iASL: Fixed the -ot option (display compile times/statistics). Was not 5537working 5538properly for standard output; only worked for the debug file case. 5539 5540---------------------------------------- 554118 May 2012. Summary of changes for version 20120518: 5542 5543 55441) ACPICA Core Subsystem: 5545 5546Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5547defined 5548to block until asynchronous events such as notifies and GPEs have 5549completed. 5550Within ACPICA, it is only called before a notify or GPE handler is 5551removed/uninstalled. It also may be useful for the host OS within related 5552drivers such as the Embedded Controller driver. See the ACPICA reference 5553for 5554additional information. ACPICA BZ 868. 5555 5556ACPI Tables: Added a new error message for a possible overflow failure 5557during 5558the conversion of FADT 32-bit legacy register addresses to internal 5559common 556064- 5561bit GAS structure representation. The GAS has a one-byte "bit length" 5562field, 5563thus limiting the register length to 255 bits. ACPICA BZ 953. 5564 5565Example Code and Data Size: These are the sizes for the OS-independent 5566acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5567debug 5568version of the code includes the debug output trace mechanism and has a 5569much 5570larger code and data size. 5571 5572 Previous Release: 5573 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5574 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5575 Current Release: 5576 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5577 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5578 5579 55802) iASL Compiler/Disassembler and Tools: 5581 5582iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5583macro. 5584This keyword was added late in the ACPI 5.0 release cycle and was not 5585implemented until now. 5586 5587Disassembler: Added support for Operation Region externals. Adds missing 5588support for operation regions that are defined in another table, and 5589referenced locally via a Field or BankField ASL operator. Now generates 5590the 5591correct External statement. 5592 5593Disassembler: Several additional fixes for the External() statement 5594generation 5595related to some ASL operators. Also, order the External() statements 5596alphabetically in the disassembler output. Fixes the External() 5597generation 5598for 5599the Create* field, Alias, and Scope operators: 5600 1) Create* buffer field operators - fix type mismatch warning on 5601disassembly 5602 2) Alias - implement missing External support 5603 3) Scope - fix to make sure all necessary externals are emitted. 5604 5605iASL: Improved pathname support. For include files, merge the prefix 5606pathname 5607with the file pathname and eliminate unnecessary components. Convert 5608backslashes in all pathnames to forward slashes, for readability. Include 5609file 5610pathname changes affect both #include and Include() type operators. 5611 5612iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5613end 5614of a valid line by inserting a newline and then returning the EOF during 5615the 5616next call to GetNextLine. Prevents the line from being ignored due to EOF 5617condition. 5618 5619iASL: Implemented some changes to enhance the IDE support (-vi option.) 5620Error 5621and Warning messages are now correctly recognized for both the source 5622code 5623browser and the global error and warning counts. 5624 5625---------------------------------------- 562620 April 2012. Summary of changes for version 20120420: 5627 5628 56291) ACPICA Core Subsystem: 5630 5631Implemented support for multiple notify handlers. This change adds 5632support 5633to 5634allow multiple system and device notify handlers on Device, Thermal Zone, 5635and 5636Processor objects. This can simplify the host OS notification 5637implementation. 5638Also re-worked and restructured the entire notify support code to 5639simplify 5640handler installation, handler removal, notify event queuing, and notify 5641dispatch to handler(s). Note: there can still only be two global notify 5642handlers - one for system notifies and one for device notifies. There are 5643no 5644changes to the existing handler install/remove interfaces. Lin Ming, Bob 5645Moore, Rafael Wysocki. 5646 5647Fixed a regression in the package repair code where the object reference 5648count was calculated incorrectly. Regression was introduced in the commit 5649"Support to add Package wrappers". 5650 5651Fixed a couple possible memory leaks in the AML parser, in the error 5652recovery 5653path. Jesper Juhl, Lin Ming. 5654 5655Example Code and Data Size: These are the sizes for the OS-independent 5656acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5657debug version of the code includes the debug output trace mechanism and 5658has a 5659much larger code and data size. 5660 5661 Previous Release: 5662 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5663 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5664 Current Release: 5665 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5666 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5667 5668 56692) iASL Compiler/Disassembler and Tools: 5670 5671iASL: Fixed a problem with the resource descriptor support where the 5672length 5673of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5674included in cumulative descriptor offset, resulting in incorrect values 5675for 5676resource tags within resource descriptors appearing after a 5677StartDependent* 5678descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5679 5680iASL and Preprocessor: Implemented full support for the #line directive 5681to 5682correctly track original source file line numbers through the .i 5683preprocessor 5684output file - for error and warning messages. 5685 5686iASL: Expand the allowable byte constants for address space IDs. 5687Previously, 5688the allowable range was 0x80-0xFF (user-defined spaces), now the range is 56890x0A-0xFF to allow for custom and new IDs without changing the compiler. 5690 5691iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5692 5693iASL: Add option to completely disable the preprocessor (-Pn). 5694 5695iASL: Now emit all error/warning messages to standard error (stderr) by 5696default (instead of the previous stdout). 5697 5698ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5699Update 5700for resource descriptor offset fix above. Update/cleanup error output 5701routines. Enable and send iASL errors/warnings to an error logfile 5702(error.txt). Send all other iASL output to a logfile (compiler.txt). 5703Fixed 5704several extraneous "unrecognized operator" messages. 5705 5706---------------------------------------- 570720 March 2012. Summary of changes for version 20120320: 5708 5709 57101) ACPICA Core Subsystem: 5711 5712Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5713(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5714apparently 5715does not execute these methods, and therefore these methods are often 5716untested. It has been seen on some systems where the execution of these 5717methods causes errors and also prevents the machine from entering S5. It 5718is 5719therefore suggested that host operating systems do not execute these 5720methods 5721by default. In the future, perhaps these methods can be optionally 5722executed 5723based on the age of the system and/or what is the newest version of 5724Windows 5725that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5726and 5727AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5728Ming. 5729 5730Fixed a problem where the length of the local/common FADT was set too 5731early. 5732The local FADT table length cannot be set to the common length until the 5733original length has been examined. There is code that checks the table 5734length 5735and sets various fields appropriately. This can affect older machines 5736with 5737early FADT versions. For example, this can cause inadvertent writes to 5738the 5739CST_CNT register. Julian Anastasov. 5740 5741Fixed a mapping issue related to a physical table override. Use the 5742deferred 5743mapping mechanism for tables loaded via the physical override OSL 5744interface. 5745This allows for early mapping before the virtual memory manager is 5746available. 5747Thomas Renninger, Bob Moore. 5748 5749Enhanced the automatic return-object repair code: Repair a common problem 5750with 5751predefined methods that are defined to return a variable-length Package 5752of 5753sub-objects. If there is only one sub-object, some BIOS ASL code 5754mistakenly 5755simply returns the single object instead of a Package with one sub- 5756object. 5757This new support will repair this error by wrapping a Package object 5758around 5759the original object, creating the correct and expected Package with one 5760sub- 5761object. Names that can be repaired in this manner include: _ALR, _CSD, 5762_HPX, 5763_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5764939. 5765 5766Changed the exception code returned for invalid ACPI paths passed as 5767parameters to external interfaces such as AcpiEvaluateObject. Was 5768AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5769 5770Example Code and Data Size: These are the sizes for the OS-independent 5771acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5772debug 5773version of the code includes the debug output trace mechanism and has a 5774much 5775larger code and data size. 5776 5777 Previous Release: 5778 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5779 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5780 Current Release: 5781 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5782 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5783 5784 57852) iASL Compiler/Disassembler and Tools: 5786 5787iASL: Added the infrastructure and initial implementation of a integrated 5788C- 5789like preprocessor. This will simplify BIOS development process by 5790eliminating 5791the need for a separate preprocessing step during builds. On Windows, it 5792also 5793eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5794features including full #define() macro support are still under 5795development. 5796These preprocessor directives are supported: 5797 #define 5798 #elif 5799 #else 5800 #endif 5801 #error 5802 #if 5803 #ifdef 5804 #ifndef 5805 #include 5806 #pragma message 5807 #undef 5808 #warning 5809In addition, these new command line options are supported: 5810 -D <symbol> Define symbol for preprocessor use 5811 -li Create preprocessed output file (*.i) 5812 -P Preprocess only and create preprocessor output file (*.i) 5813 5814Table Compiler: Fixed a problem where the equals operator within an 5815expression 5816did not work properly. 5817 5818Updated iASL to use the current versions of Bison/Flex. Updated the 5819Windows 5820project file to invoke these tools from the standard location. ACPICA BZ 5821904. 5822Versions supported: 5823 Flex for Windows: V2.5.4 5824 Bison for Windows: V2.4.1 5825 5826---------------------------------------- 582715 February 2012. Summary of changes for version 20120215: 5828 5829 58301) ACPICA Core Subsystem: 5831 5832There have been some major changes to the sleep/wake support code, as 5833described below (a - e). 5834 5835a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5836AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5837AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5838the 5839time the _BFS method is called and the _WAK method is called. NOTE: all 5840hosts 5841must update their wake/resume code or else sleep/wake will not work 5842properly. 5843Rafael Wysocki. 5844 5845b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5846_WAK 5847method. Some machines require that the GPEs are enabled before the _WAK 5848method 5849is executed. Thomas Renninger. 5850 5851c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5852bit. 5853Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5854to 5855determine whether the system is rebooting or resuming. Matthew Garrett. 5856 5857d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5858Sleep) to 5859match the ACPI specification requirement. Rafael Wysocki. 5860 5861e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5862registers within the V5 FADT. This support adds two new files: 5863hardware/hwesleep.c implements the support for the new registers. Moved 5864all 5865sleep/wake external interfaces to hardware/hwxfsleep.c. 5866 5867 5868Added a new OSL interface for ACPI table overrides, 5869AcpiOsPhysicalTableOverride. This interface allows the host to override a 5870table via a physical address, instead of the logical address required by 5871AcpiOsTableOverride. This simplifies the host implementation. Initial 5872implementation by Thomas Renninger. The ACPICA implementation creates a 5873single 5874shared function for table overrides that attempts both a logical and a 5875physical override. 5876 5877Expanded the OSL memory read/write interfaces to 64-bit data 5878(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5879transfer support for GAS register structures passed to AcpiRead and 5880AcpiWrite. 5881 5882Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5883custom 5884build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5885model. 5886See the ACPICA reference for details. ACPICA BZ 942. This option removes 5887about 588810% of the code and 5% of the static data, and the following hardware 5889ACPI 5890features become unavailable: 5891 PM Event and Control registers 5892 SCI interrupt (and handler) 5893 Fixed Events 5894 General Purpose Events (GPEs) 5895 Global Lock 5896 ACPI PM timer 5897 FACS table (Waking vectors and Global Lock) 5898 5899Updated the unix tarball directory structure to match the ACPICA git 5900source 5901tree. This ensures that the generic unix makefiles work properly (in 5902generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5903867. 5904 5905Updated the return value of the _REV predefined method to integer value 5 5906to 5907reflect ACPI 5.0 support. 5908 5909Moved the external ACPI PM timer interface prototypes to the public 5910acpixf.h 5911file where they belong. 5912 5913Example Code and Data Size: These are the sizes for the OS-independent 5914acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5915debug 5916version of the code includes the debug output trace mechanism and has a 5917much 5918larger code and data size. 5919 5920 Previous Release: 5921 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5922 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5923 Current Release: 5924 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5925 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5926 5927 59282) iASL Compiler/Disassembler and Tools: 5929 5930Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5931descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5932incorrectly displayed. 5933 5934AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5935specification. 5936 5937---------------------------------------- 593811 January 2012. Summary of changes for version 20120111: 5939 5940 59411) ACPICA Core Subsystem: 5942 5943Implemented a new mechanism to allow host device drivers to check for 5944address 5945range conflicts with ACPI Operation Regions. Both SystemMemory and 5946SystemIO 5947address spaces are supported. A new external interface, 5948AcpiCheckAddressRange, 5949allows drivers to check an address range against the ACPI namespace. See 5950the 5951ACPICA reference for additional details. Adds one new file, 5952utilities/utaddress.c. Lin Ming, Bob Moore. 5953 5954Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5955Control 5956and 5957Status registers, update the ACPI 5.0 flags, and update internal data 5958structures to handle an FADT larger than 256 bytes. The size of the ACPI 59595.0 5960FADT is 268 bytes. 5961 5962Updated all ACPICA copyrights and signons to 2012. Added the 2012 5963copyright to 5964all module headers and signons, including the standard Linux header. This 5965affects virtually every file in the ACPICA core subsystem, iASL compiler, 5966and 5967all ACPICA utilities. 5968 5969Example Code and Data Size: These are the sizes for the OS-independent 5970acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5971debug 5972version of the code includes the debug output trace mechanism and has a 5973much 5974larger code and data size. 5975 5976 Previous Release: 5977 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5978 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5979 Current Release: 5980 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5981 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5982 5983 59842) iASL Compiler/Disassembler and Tools: 5985 5986Disassembler: fixed a problem with the automatic resource tag generation 5987support. Fixes a problem where the resource tags are inadvertently not 5988constructed if the table being disassembled contains external references 5989to 5990control methods. Moved the actual construction of the tags to after the 5991final 5992namespace is constructed (after 2nd parse is invoked due to external 5993control 5994method references.) ACPICA BZ 941. 5995 5996Table Compiler: Make all "generic" operators caseless. These are the 5997operators 5998like UINT8, String, etc. Making these caseless improves ease-of-use. 5999ACPICA BZ 6000934. 6001 6002---------------------------------------- 600323 November 2011. Summary of changes for version 20111123: 6004 60050) ACPI 5.0 Support: 6006 6007This release contains full support for the ACPI 5.0 specification, as 6008summarized below. 6009 6010Reduced Hardware Support: 6011------------------------- 6012 6013This support allows for ACPI systems without the usual ACPI hardware. 6014This 6015support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 6016will 6017not attempt to initialize or use any of the usual ACPI hardware. Note, 6018when 6019this flag is set, all of the following ACPI hardware is assumed to be not 6020present and is not initialized or accessed: 6021 6022 General Purpose Events (GPEs) 6023 Fixed Events (PM1a/PM1b and PM Control) 6024 Power Management Timer and Console Buttons (power/sleep) 6025 Real-time Clock Alarm 6026 Global Lock 6027 System Control Interrupt (SCI) 6028 The FACS is assumed to be non-existent 6029 6030ACPI Tables: 6031------------ 6032 6033All new tables and updates to existing tables are fully supported in the 6034ACPICA headers (for use by device drivers), the disassembler, and the 6035iASL 6036Data Table Compiler. ACPI 5.0 defines these new tables: 6037 6038 BGRT /* Boot Graphics Resource Table */ 6039 DRTM /* Dynamic Root of Trust for Measurement table */ 6040 FPDT /* Firmware Performance Data Table */ 6041 GTDT /* Generic Timer Description Table */ 6042 MPST /* Memory Power State Table */ 6043 PCCT /* Platform Communications Channel Table */ 6044 PMTT /* Platform Memory Topology Table */ 6045 RASF /* RAS Feature table */ 6046 6047Operation Regions/SpaceIDs: 6048--------------------------- 6049 6050All new operation regions are fully supported by the iASL compiler, the 6051disassembler, and the ACPICA runtime code (for dispatch to region 6052handlers.) 6053The new operation region Space IDs are: 6054 6055 GeneralPurposeIo 6056 GenericSerialBus 6057 6058Resource Descriptors: 6059--------------------- 6060 6061All new ASL resource descriptors are fully supported by the iASL 6062compiler, 6063the 6064ASL/AML disassembler, and the ACPICA runtime Resource Manager code 6065(including 6066all new predefined resource tags). New descriptors are: 6067 6068 FixedDma 6069 GpioIo 6070 GpioInt 6071 I2cSerialBus 6072 SpiSerialBus 6073 UartSerialBus 6074 6075ASL/AML Operators, New and Modified: 6076------------------------------------ 6077 6078One new operator is added, the Connection operator, which is used to 6079associate 6080a GeneralPurposeIo or GenericSerialBus resource descriptor with 6081individual 6082field objects within an operation region. Several new protocols are 6083associated 6084with the AccessAs operator. All are fully supported by the iASL compiler, 6085disassembler, and runtime ACPICA AML interpreter: 6086 6087 Connection // Declare Field Connection 6088attributes 6089 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 6090 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 6091Protocol 6092 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 6093 RawDataBuffer // Data type for Vendor Data 6094fields 6095 6096Predefined ASL/AML Objects: 6097--------------------------- 6098 6099All new predefined objects/control-methods are supported by the iASL 6100compiler 6101and the ACPICA runtime validation/repair (arguments and return values.) 6102New 6103predefined names include the following: 6104 6105Standard Predefined Names (Objects or Control Methods): 6106 _AEI, _CLS, _CPC, _CWS, _DEP, 6107 _DLM, _EVT, _GCP, _CRT, _GWS, 6108 _HRV, _PRE, _PSE, _SRT, _SUB. 6109 6110Resource Tags (Names used to access individual fields within resource 6111descriptors): 6112 _DBT, _DPL, _DRS, _END, _FLC, 6113 _IOR, _LIN, _MOD, _PAR, _PHA, 6114 _PIN, _PPI, _POL, _RXL, _SLV, 6115 _SPE, _STB, _TXL, _VEN. 6116 6117ACPICA External Interfaces: 6118--------------------------- 6119 6120Several new interfaces have been defined for use by ACPI-related device 6121drivers and other host OS services: 6122 6123AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 6124to 6125acquire and release AML mutexes that are defined in the DSDT/SSDT tables 6126provided by the BIOS. They are intended to be used in conjunction with 6127the 6128ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 6129mutual exclusion with the AML code/interpreter. 6130 6131AcpiGetEventResources: Returns the (formatted) resource descriptors as 6132defined 6133by the ACPI 5.0 _AEI object (ACPI Event Information). This object 6134provides 6135resource descriptors associated with hardware-reduced platform events, 6136similar 6137to the AcpiGetCurrentResources interface. 6138 6139Operation Region Handlers: For General Purpose IO and Generic Serial Bus 6140operation regions, information about the Connection() object and any 6141optional 6142length information is passed to the region handler within the Context 6143parameter. 6144 6145AcpiBufferToResource: This interface converts a raw AML buffer containing 6146a 6147resource template or resource descriptor to the ACPI_RESOURCE internal 6148format 6149suitable for use by device drivers. Can be used by an operation region 6150handler 6151to convert the Connection() buffer object into a ACPI_RESOURCE. 6152 6153Miscellaneous/Tools/TestSuites: 6154------------------------------- 6155 6156Support for extended _HID names (Four alpha characters instead of three). 6157Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 6158Support for ACPI 5.0 features in the ASLTS test suite. 6159Fully updated documentation (ACPICA and iASL reference documents.) 6160 6161ACPI Table Definition Language: 6162------------------------------- 6163 6164Support for this language was implemented and released as a subsystem of 6165the 6166iASL compiler in 2010. (See the iASL compiler User Guide.) 6167 6168 6169Non-ACPI 5.0 changes for this release: 6170-------------------------------------- 6171 61721) ACPICA Core Subsystem: 6173 6174Fix a problem with operation region declarations where a failure can 6175occur 6176if 6177the region name and an argument that evaluates to an object (such as the 6178region address) are in different namespace scopes. Lin Ming, ACPICA BZ 6179937. 6180 6181Do not abort an ACPI table load if an invalid space ID is found within. 6182This 6183will be caught later if the offending method is executed. ACPICA BZ 925. 6184 6185Fixed an issue with the FFixedHW space ID where the ID was not always 6186recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 6187 6188Fixed a problem with the 32-bit generation of the unix-specific OSL 6189(osunixxf.c). Lin Ming, ACPICA BZ 936. 6190 6191Several changes made to enable generation with the GCC 4.6 compiler. 6192ACPICA BZ 6193935. 6194 6195New error messages: Unsupported I/O requests (not 8/16/32 bit), and 6196Index/Bank 6197field registers out-of-range. 6198 61992) iASL Compiler/Disassembler and Tools: 6200 6201iASL: Implemented the __PATH__ operator, which returns the full pathname 6202of 6203the current source file. 6204 6205AcpiHelp: Automatically display expanded keyword information for all ASL 6206operators. 6207 6208Debugger: Add "Template" command to disassemble/dump resource template 6209buffers. 6210 6211Added a new master script to generate and execute the ASLTS test suite. 6212Automatically handles 32- and 64-bit generation. See tests/aslts.sh 6213 6214iASL: Fix problem with listing generation during processing of the 6215Switch() 6216operator where AML listing was disabled until the entire Switch block was 6217completed. 6218 6219iASL: Improve support for semicolon statement terminators. Fix "invalid 6220character" message for some cases when the semicolon is used. Semicolons 6221are 6222now allowed after every <Term> grammar element. ACPICA BZ 927. 6223 6224iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 6225923. 6226 6227Disassembler: Fix problem with disassembly of the DataTableRegion 6228operator 6229where an inadvertent "Unhandled deferred opcode" message could be 6230generated. 6231 62323) Example Code and Data Size 6233 6234These are the sizes for the OS-independent acpica.lib produced by the 6235Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6236includes the debug output trace mechanism and has a much larger code and 6237data 6238size. 6239 6240 Previous Release: 6241 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6242 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6243 Current Release: 6244 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6245 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6246 6247---------------------------------------- 624822 September 2011. Summary of changes for version 20110922: 6249 62500) ACPI 5.0 News: 6251 6252Support for ACPI 5.0 in ACPICA has been underway for several months and 6253will 6254be released at the same time that ACPI 5.0 is officially released. 6255 6256The ACPI 5.0 specification is on track for release in the next few 6257months. 6258 62591) ACPICA Core Subsystem: 6260 6261Fixed a problem where the maximum sleep time for the Sleep() operator was 6262intended to be limited to two seconds, but was inadvertently limited to 626320 6264seconds instead. 6265 6266Linux and Unix makefiles: Added header file dependencies to ensure 6267correct 6268generation of ACPICA core code and utilities. Also simplified the 6269makefiles 6270considerably through the use of the vpath variable to specify search 6271paths. 6272ACPICA BZ 924. 6273 62742) iASL Compiler/Disassembler and Tools: 6275 6276iASL: Implemented support to check the access length for all fields 6277created to 6278access named Resource Descriptor fields. For example, if a resource field 6279is 6280defined to be two bits, a warning is issued if a CreateXxxxField() is 6281used 6282with an incorrect bit length. This is implemented for all current 6283resource 6284descriptor names. ACPICA BZ 930. 6285 6286Disassembler: Fixed a byte ordering problem with the output of 24-bit and 628756- 6288bit integers. 6289 6290iASL: Fixed a couple of issues associated with variable-length package 6291objects. 1) properly handle constants like One, Ones, Zero -- do not make 6292a 6293VAR_PACKAGE when these are used as a package length. 2) Allow the 6294VAR_PACKAGE 6295opcode (in addition to PACKAGE) when validating object types for 6296predefined 6297names. 6298 6299iASL: Emit statistics for all output files (instead of just the ASL input 6300and 6301AML output). Includes listings, hex files, etc. 6302 6303iASL: Added -G option to the table compiler to allow the compilation of 6304custom 6305ACPI tables. The only part of a table that is required is the standard 630636- 6307byte 6308ACPI header. 6309 6310AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6311headers), 6312which also adds correct 64-bit support. Also, now all output filenames 6313are 6314completely lower case. 6315 6316AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6317loading table files. A warning is issued for any such tables. The only 6318exception is an FADT. This also fixes a possible fault when attempting to 6319load 6320non-AML tables. ACPICA BZ 932. 6321 6322AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6323a 6324missing table terminator could cause a fault when using the -p option. 6325 6326AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6327statistics. 6328 63293) Example Code and Data Size 6330 6331These are the sizes for the OS-independent acpica.lib produced by the 6332Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6333includes the debug output trace mechanism and has a much larger code and 6334data 6335size. 6336 6337 Previous Release (VC 9.0): 6338 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6339 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6340 Current Release (VC 9.0): 6341 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6342 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6343 6344 6345---------------------------------------- 634623 June 2011. Summary of changes for version 20110623: 6347 63481) ACPI CA Core Subsystem: 6349 6350Updated the predefined name repair mechanism to not attempt repair of a 6351_TSS 6352return object if a _PSS object is present. We can only sort the _TSS 6353return 6354package if there is no _PSS within the same scope. This is because if 6355_PSS 6356is 6357present, the ACPI specification dictates that the _TSS Power Dissipation 6358field 6359is to be ignored, and therefore some BIOSs leave garbage values in the 6360_TSS 6361Power field(s). In this case, it is best to just return the _TSS package 6362as- 6363is. Reported by, and fixed with assistance from Fenghua Yu. 6364 6365Added an option to globally disable the control method return value 6366validation 6367and repair. This runtime option can be used to disable return value 6368repair 6369if 6370this is causing a problem on a particular machine. Also added an option 6371to 6372AcpiExec (-dr) to set this disable flag. 6373 6374All makefiles and project files: Major changes to improve generation of 6375ACPICA 6376tools. ACPICA BZ 912: 6377 Reduce default optimization levels to improve compatibility 6378 For Linux, add strict-aliasing=0 for gcc 4 6379 Cleanup and simplify use of command line defines 6380 Cleanup multithread library support 6381 Improve usage messages 6382 6383Linux-specific header: update handling of THREAD_ID and pthread. For the 638432- 6385bit case, improve casting to eliminate possible warnings, especially with 6386the 6387acpica tools. 6388 6389Example Code and Data Size: These are the sizes for the OS-independent 6390acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6391debug 6392version of the code includes the debug output trace mechanism and has a 6393much 6394larger code and data size. 6395 6396 Previous Release (VC 9.0): 6397 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6398 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6399 Current Release (VC 9.0): 6400 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6401 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6402 64032) iASL Compiler/Disassembler and Tools: 6404 6405With this release, a new utility named "acpihelp" has been added to the 6406ACPICA 6407package. This utility summarizes the ACPI specification chapters for the 6408ASL 6409and AML languages. It generates under Linux/Unix as well as Windows, and 6410provides the following functionality: 6411 Find/display ASL operator(s) -- with description and syntax. 6412 Find/display ASL keyword(s) -- with exact spelling and descriptions. 6413 Find/display ACPI predefined name(s) -- with description, number 6414 of arguments, and the return value data type. 6415 Find/display AML opcode name(s) -- with opcode, arguments, and 6416grammar. 6417 Decode/display AML opcode -- with opcode name, arguments, and 6418grammar. 6419 6420Service Layers: Make multi-thread support configurable. Conditionally 6421compile 6422the multi-thread support so that threading libraries will not be linked 6423if 6424not 6425necessary. The only tool that requires multi-thread support is AcpiExec. 6426 6427iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 6428of 6429Bison appear to want the interface to yyerror to be a const char * (or at 6430least this is a problem when generating iASL on some systems.) ACPICA BZ 6431923 6432Pierre Lejeune. 6433 6434Tools: Fix for systems where O_BINARY is not defined. Only used for 6435Windows 6436versions of the tools. 6437 6438---------------------------------------- 643927 May 2011. Summary of changes for version 20110527: 6440 64411) ACPI CA Core Subsystem: 6442 6443ASL Load() operator: Reinstate most restrictions on the incoming ACPI 6444table 6445signature. Now, only allow SSDT, OEMx, and a null signature. History: 6446 1) Originally, we checked the table signature for "SSDT" or "PSDT". 6447 (PSDT is now obsolete.) 6448 2) We added support for OEMx tables, signature "OEM" plus a fourth 6449 "don't care" character. 6450 3) Valid tables were encountered with a null signature, so we just 6451 gave up on validating the signature, (05/2008). 6452 4) We encountered non-AML tables such as the MADT, which caused 6453 interpreter errors and kernel faults. So now, we once again allow 6454 only SSDT, OEMx, and now, also a null signature. (05/2011). 6455 6456Added the missing _TDL predefined name to the global name list in order 6457to 6458enable validation. Affects both the core ACPICA code and the iASL 6459compiler. 6460 6461Example Code and Data Size: These are the sizes for the OS-independent 6462acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6463debug 6464version of the code includes the debug output trace mechanism and has a 6465much 6466larger code and data size. 6467 6468 Previous Release (VC 9.0): 6469 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6470 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6471 Current Release (VC 9.0): 6472 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6473 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6474 64752) iASL Compiler/Disassembler and Tools: 6476 6477Debugger/AcpiExec: Implemented support for "complex" method arguments on 6478the 6479debugger command line. This adds support beyond simple integers -- 6480including 6481Strings, Buffers, and Packages. Includes support for nested packages. 6482Increased the default command line buffer size to accommodate these 6483arguments. 6484See the ACPICA reference for details and syntax. ACPICA BZ 917. 6485 6486Debugger/AcpiExec: Implemented support for "default" method arguments for 6487the 6488Execute/Debug command. Now, the debugger will always invoke a control 6489method 6490with the required number of arguments -- even if the command line 6491specifies 6492none or insufficient arguments. It uses default integer values for any 6493missing 6494arguments. Also fixes a bug where only six method arguments maximum were 6495supported instead of the required seven. 6496 6497Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6498and 6499also return status in order to prevent buffer overruns. See the ACPICA 6500reference for details and syntax. ACPICA BZ 921 6501 6502iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6503makefiles to simplify support for the two different but similar parser 6504generators, bison and yacc. 6505 6506Updated the generic unix makefile for gcc 4. The default gcc version is 6507now 6508expected to be 4 or greater, since options specific to gcc 4 are used. 6509 6510---------------------------------------- 651113 April 2011. Summary of changes for version 20110413: 6512 65131) ACPI CA Core Subsystem: 6514 6515Implemented support to execute a so-called "orphan" _REG method under the 6516EC 6517device. This change will force the execution of a _REG method underneath 6518the 6519EC 6520device even if there is no corresponding operation region of type 6521EmbeddedControl. Fixes a problem seen on some machines and apparently is 6522compatible with Windows behavior. ACPICA BZ 875. 6523 6524Added more predefined methods that are eligible for automatic NULL 6525package 6526element removal. This change adds another group of predefined names to 6527the 6528list 6529of names that can be repaired by having NULL package elements dynamically 6530removed. This group are those methods that return a single variable- 6531length 6532package containing simple data types such as integers, buffers, strings. 6533This 6534includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6535_PSL, 6536_Sx, 6537and _TZD. ACPICA BZ 914. 6538 6539Split and segregated all internal global lock functions to a new file, 6540evglock.c. 6541 6542Updated internal address SpaceID for DataTable regions. Moved this 6543internal 6544space 6545id in preparation for ACPI 5.0 changes that will include some new space 6546IDs. 6547This 6548change should not affect user/host code. 6549 6550Example Code and Data Size: These are the sizes for the OS-independent 6551acpica.lib 6552produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6553version of 6554the code includes the debug output trace mechanism and has a much larger 6555code 6556and 6557data size. 6558 6559 Previous Release (VC 9.0): 6560 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6561 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6562 Current Release (VC 9.0): 6563 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6564 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6565 65662) iASL Compiler/Disassembler and Tools: 6567 6568iASL/DTC: Major update for new grammar features. Allow generic data types 6569in 6570custom ACPI tables. Field names are now optional. Any line can be split 6571to 6572multiple lines using the continuation char (\). Large buffers now use 6573line- 6574continuation character(s) and no colon on the continuation lines. See the 6575grammar 6576update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6577Moore. 6578 6579iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6580statements. 6581Since the parser stuffs a "zero" as the return value for these statements 6582(due 6583to 6584the underlying AML grammar), they were seen as "return with value" by the 6585iASL 6586semantic checking. They are now seen correctly as "null" return 6587statements. 6588 6589iASL: Check if a_REG declaration has a corresponding Operation Region. 6590Adds a 6591check for each _REG to ensure that there is in fact a corresponding 6592operation 6593region declaration in the same scope. If not, the _REG method is not very 6594useful 6595since it probably won't be executed. ACPICA BZ 915. 6596 6597iASL/DTC: Finish support for expression evaluation. Added a new 6598expression 6599parser 6600that implements c-style operator precedence and parenthesization. ACPICA 6601bugzilla 6602908. 6603 6604Disassembler/DTC: Remove support for () and <> style comments in data 6605tables. 6606Now 6607that DTC has full expression support, we don't want to have comment 6608strings 6609that 6610start with a parentheses or a less-than symbol. Now, only the standard /* 6611and 6612// 6613comments are supported, as well as the bracket [] comments. 6614 6615AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6616"unusual" 6617headers in the acpidump file. Update the header validation to support 6618these 6619tables. Problem introduced in previous AcpiXtract version in the change 6620to 6621support "wrong checksum" error messages emitted by acpidump utility. 6622 6623iASL: Add a * option to generate all template files (as a synonym for 6624ALL) 6625as 6626in 6627"iasl -T *" or "iasl -T ALL". 6628 6629iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6630completely 6631abort the compiler on "fatal" errors, simply should abort the current 6632compile. 6633This allows multiple compiles with a single (possibly wildcard) compiler 6634invocation. 6635 6636---------------------------------------- 663716 March 2011. Summary of changes for version 20110316: 6638 66391) ACPI CA Core Subsystem: 6640 6641Fixed a problem caused by a _PRW method appearing at the namespace root 6642scope 6643during the setup of wake GPEs. A fault could occur if a _PRW directly 6644under 6645the 6646root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6647 6648Implemented support for "spurious" Global Lock interrupts. On some 6649systems, a 6650global lock interrupt can occur without the pending flag being set. Upon 6651a 6652GL 6653interrupt, we now ensure that a thread is actually waiting for the lock 6654before 6655signaling GL availability. Rafael Wysocki, Bob Moore. 6656 6657Example Code and Data Size: These are the sizes for the OS-independent 6658acpica.lib 6659produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6660version of 6661the code includes the debug output trace mechanism and has a much larger 6662code 6663and 6664data size. 6665 6666 Previous Release (VC 9.0): 6667 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6668 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6669 Current Release (VC 9.0): 6670 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6671 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6672 66732) iASL Compiler/Disassembler and Tools: 6674 6675Implemented full support for the "SLIC" ACPI table. Includes support in 6676the 6677header files, disassembler, table compiler, and template generator. Bob 6678Moore, 6679Lin Ming. 6680 6681AcpiXtract: Correctly handle embedded comments and messages from 6682AcpiDump. 6683Apparently some or all versions of acpidump will occasionally emit a 6684comment 6685like 6686"Wrong checksum", etc., into the dump file. This was causing problems for 6687AcpiXtract. ACPICA BZ 905. 6688 6689iASL: Fix the Linux makefile by removing an inadvertent double file 6690inclusion. 6691ACPICA BZ 913. 6692 6693AcpiExec: Update installation of operation region handlers. Install one 6694handler 6695for a user-defined address space. This is used by the ASL test suite 6696(ASLTS). 6697 6698---------------------------------------- 669911 February 2011. Summary of changes for version 20110211: 6700 67011) ACPI CA Core Subsystem: 6702 6703Added a mechanism to defer _REG methods for some early-installed 6704handlers. 6705Most user handlers should be installed before call to 6706AcpiEnableSubsystem. 6707However, Event handlers and region handlers should be installed after 6708AcpiInitializeObjects. Override handlers for the "default" regions should 6709be 6710installed early, however. This change executes all _REG methods for the 6711default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6712chicken/egg issues between them. ACPICA BZ 848. 6713 6714Implemented an optimization for GPE detection. This optimization will 6715simply 6716ignore GPE registers that contain no enabled GPEs -- there is no need to 6717read the register since this information is available internally. This 6718becomes more important on machines with a large GPE space. ACPICA 6719bugzilla 6720884. Lin Ming. Suggestion from Joe Liu. 6721 6722Removed all use of the highly unreliable FADT revision field. The 6723revision 6724number in the FADT has been found to be completely unreliable and cannot 6725be 6726trusted. Only the actual table length can be used to infer the version. 6727This 6728change updates the ACPICA core and the disassembler so that both no 6729longer 6730even look at the FADT version and instead depend solely upon the FADT 6731length. 6732 6733Fix an unresolved name issue for the no-debug and no-error-message source 6734generation cases. The _AcpiModuleName was left undefined in these cases, 6735but 6736it is actually needed as a parameter to some interfaces. Define 6737_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6738 6739Split several large files (makefiles and project files updated) 6740 utglobal.c -> utdecode.c 6741 dbcomds.c -> dbmethod.c dbnames.c 6742 dsopcode.c -> dsargs.c dscontrol.c 6743 dsload.c -> dsload2.c 6744 aslanalyze.c -> aslbtypes.c aslwalks.c 6745 6746Example Code and Data Size: These are the sizes for the OS-independent 6747acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6748debug version of the code includes the debug output trace mechanism and 6749has 6750a much larger code and data size. 6751 6752 Previous Release (VC 9.0): 6753 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6754 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6755 Current Release (VC 9.0): 6756 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6757 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6758 67592) iASL Compiler/Disassembler and Tools: 6760 6761iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6762These are useful C-style macros with the standard definitions. ACPICA 6763bugzilla 898. 6764 6765iASL/DTC: Added support for integer expressions and labels. Support for 6766full 6767expressions for all integer fields in all ACPI tables. Support for labels 6768in 6769"generic" portions of tables such as UEFI. See the iASL reference manual. 6770 6771Debugger: Added a command to display the status of global handlers. The 6772"handlers" command will display op region, fixed event, and miscellaneous 6773global handlers. installation status -- and for op regions, whether 6774default 6775or user-installed handler will be used. 6776 6777iASL: Warn if reserved method incorrectly returns a value. Many 6778predefined 6779names are defined such that they do not return a value. If implemented as 6780a 6781method, issue a warning if such a name explicitly returns a value. ACPICA 6782Bugzilla 855. 6783 6784iASL: Added detection of GPE method name conflicts. Detects a conflict 6785where 6786there are two GPE methods of the form _Lxy and _Exy in the same scope. 6787(For 6788example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6789 6790iASL/DTC: Fixed a couple input scanner issues with comments and line 6791numbers. Comment remover could get confused and miss a comment ending. 6792Fixed 6793a problem with line counter maintenance. 6794 6795iASL/DTC: Reduced the severity of some errors from fatal to error. There 6796is 6797no need to abort on simple errors within a field definition. 6798 6799Debugger: Simplified the output of the help command. All help output now 6800in 6801a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6802 6803---------------------------------------- 680412 January 2011. Summary of changes for version 20110112: 6805 68061) ACPI CA Core Subsystem: 6807 6808Fixed a race condition between method execution and namespace walks that 6809can 6810possibly cause a fault. The problem was apparently introduced in version 681120100528 as a result of a performance optimization that reduces the 6812number 6813of 6814namespace walks upon method exit by using the delete_namespace_subtree 6815function instead of the delete_namespace_by_owner function used 6816previously. 6817Bug is a missing namespace lock in the delete_namespace_subtree function. 6818dana.myers@oracle.com 6819 6820Fixed several issues and a possible fault with the automatic "serialized" 6821method support. History: This support changes a method to "serialized" on 6822the 6823fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6824possibility that it cannot handle reentrancy. This fix repairs a couple 6825of 6826issues seen in the field, especially on machines with many cores: 6827 6828 1) Delete method children only upon the exit of the last thread, 6829 so as to not delete objects out from under other running threads 6830 (and possibly causing a fault.) 6831 2) Set the "serialized" bit for the method only upon the exit of the 6832 Last thread, so as to not cause deadlock when running threads 6833 attempt to exit. 6834 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6835 so that there is no longer any confusion between the two. 6836 6837 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6838 6839Debugger: Now lock the namespace for duration of a namespace dump. 6840Prevents 6841issues if the namespace is changing dynamically underneath the debugger. 6842Especially affects temporary namespace nodes, since the debugger displays 6843these also. 6844 6845Updated the ordering of include files. The ACPICA headers should appear 6846before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6847set 6848any necessary compiler-specific defines, etc. Affects the ACPI-related 6849tools 6850and utilities. 6851 6852Updated all ACPICA copyrights and signons to 2011. Added the 2011 6853copyright 6854to all module headers and signons, including the Linux header. This 6855affects 6856virtually every file in the ACPICA core subsystem, iASL compiler, and all 6857utilities. 6858 6859Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6860project files for VC++ 6.0 are now obsolete. New project files can be 6861found 6862under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6863details. 6864 6865Example Code and Data Size: These are the sizes for the OS-independent 6866acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6867debug version of the code includes the debug output trace mechanism and 6868has a 6869much larger code and data size. 6870 6871 Previous Release (VC 6.0): 6872 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6873 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6874 Current Release (VC 9.0): 6875 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6876 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6877 68782) iASL Compiler/Disassembler and Tools: 6879 6880iASL: Added generic data types to the Data Table compiler. Add "generic" 6881data 6882types such as UINT32, String, Unicode, etc., to simplify the generation 6883of 6884platform-defined tables such as UEFI. Lin Ming. 6885 6886iASL: Added listing support for the Data Table Compiler. Adds listing 6887support 6888(-l) to display actual binary output for each line of input code. 6889 6890---------------------------------------- 689109 December 2010. Summary of changes for version 20101209: 6892 68931) ACPI CA Core Subsystem: 6894 6895Completed the major overhaul of the GPE support code that was begun in 6896July 68972010. Major features include: removal of _PRW execution in ACPICA (host 6898executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6899changes to existing interfaces, simplification of GPE handler operation, 6900and 6901a handful of new interfaces: 6902 6903 AcpiUpdateAllGpes 6904 AcpiFinishGpe 6905 AcpiSetupGpeForWake 6906 AcpiSetGpeWakeMask 6907 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6908 6909See the ACPICA Programmer Reference for full details and programming 6910information. See the new section 4.4 "General Purpose Event (GPE) 6911Support" 6912for a full overview, and section 8.7 "ACPI General Purpose Event 6913Management" 6914for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6915Ming, 6916Bob Moore, Rafael Wysocki. 6917 6918Implemented a new GPE feature for Windows compatibility, the "Implicit 6919Wake 6920GPE Notify". This feature will automatically issue a Notify(2) on a 6921device 6922when a Wake GPE is received if there is no corresponding GPE method or 6923handler. ACPICA BZ 870. 6924 6925Fixed a problem with the Scope() operator during table parse and load 6926phase. 6927During load phase (table load or method execution), the scope operator 6928should 6929not enter the target into the namespace. Instead, it should open a new 6930scope 6931at the target location. Linux BZ 19462, ACPICA BZ 882. 6932 6933Example Code and Data Size: These are the sizes for the OS-independent 6934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6935debug version of the code includes the debug output trace mechanism and 6936has a 6937much larger code and data size. 6938 6939 Previous Release: 6940 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6941 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6942 Current Release: 6943 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6944 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6945 69462) iASL Compiler/Disassembler and Tools: 6947 6948iASL: Relax the alphanumeric restriction on _CID strings. These strings 6949are 6950"bus-specific" per the ACPI specification, and therefore any characters 6951are 6952acceptable. The only checks that can be performed are for a null string 6953and 6954perhaps for a leading asterisk. ACPICA BZ 886. 6955 6956iASL: Fixed a problem where a syntax error that caused a premature EOF 6957condition on the source file emitted a very confusing error message. The 6958premature EOF is now detected correctly. ACPICA BZ 891. 6959 6960Disassembler: Decode the AccessSize within a Generic Address Structure 6961(byte 6962access, word access, etc.) Note, this field does not allow arbitrary bit 6963access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6964 6965New: AcpiNames utility - Example namespace dump utility. Shows an example 6966of 6967ACPICA configuration for a minimal namespace dump utility. Uses table and 6968namespace managers, but no AML interpreter. Does not add any 6969functionality 6970over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6971partition and configure ACPICA. ACPICA BZ 883. 6972 6973AML Debugger: Increased the debugger buffer size for method return 6974objects. 6975Was 4K, increased to 16K. Also enhanced error messages for debugger 6976method 6977execution, including the buffer overflow case. 6978 6979---------------------------------------- 698013 October 2010. Summary of changes for version 20101013: 6981 69821) ACPI CA Core Subsystem: 6983 6984Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6985now 6986clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6987HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6988 6989Changed the type of the predefined namespace object _TZ from ThermalZone 6990to 6991Device. This was found to be confusing to the host software that 6992processes 6993the various thermal zones, since _TZ is not really a ThermalZone. 6994However, 6995a 6996Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6997Zhang. 6998 6999Added Windows Vista SP2 to the list of supported _OSI strings. The actual 7000string is "Windows 2006 SP2". 7001 7002Eliminated duplicate code in AcpiUtExecute* functions. Now that the 7003nsrepair 7004code automatically repairs _HID-related strings, this type of code is no 7005longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 7006878. 7007 7008Example Code and Data Size: These are the sizes for the OS-independent 7009acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7010debug version of the code includes the debug output trace mechanism and 7011has a 7012much larger code and data size. 7013 7014 Previous Release: 7015 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7016 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7017 Current Release: 7018 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7019 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7020 70212) iASL Compiler/Disassembler and Tools: 7022 7023iASL: Implemented additional compile-time validation for _HID strings. 7024The 7025non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 7026length 7027of 7028the string must be exactly seven or eight characters. For both _HID and 7029_CID 7030strings, all characters must be alphanumeric. ACPICA BZ 874. 7031 7032iASL: Allow certain "null" resource descriptors. Some BIOS code creates 7033descriptors that are mostly or all zeros, with the expectation that they 7034will 7035be filled in at runtime. iASL now allows this as long as there is a 7036"resource 7037tag" (name) associated with the descriptor, which gives the ASL a handle 7038needed to modify the descriptor. ACPICA BZ 873. 7039 7040Added single-thread support to the generic Unix application OSL. 7041Primarily 7042for iASL support, this change removes the use of semaphores in the 7043single- 7044threaded ACPICA tools/applications - increasing performance. The 7045_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 7046option. ACPICA BZ 879. 7047 7048AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 7049support 7050for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 7051 7052iASL: Moved all compiler messages to a new file, aslmessages.h. 7053 7054---------------------------------------- 705515 September 2010. Summary of changes for version 20100915: 7056 70571) ACPI CA Core Subsystem: 7058 7059Removed the AcpiOsDerivePciId OSL interface. The various host 7060implementations 7061of this function were not OS-dependent and are now obsolete and can be 7062removed from all host OSLs. This function has been replaced by 7063AcpiHwDerivePciId, which is now part of the ACPICA core code. 7064AcpiHwDerivePciId has been implemented without recursion. Adds one new 7065module, hwpci.c. ACPICA BZ 857. 7066 7067Implemented a dynamic repair for _HID and _CID strings. The following 7068problems are now repaired at runtime: 1) Remove a leading asterisk in the 7069string, and 2) the entire string is uppercased. Both repairs are in 7070accordance with the ACPI specification and will simplify host driver 7071code. 7072ACPICA BZ 871. 7073 7074The ACPI_THREAD_ID type is no longer configurable, internally it is now 7075always UINT64. This simplifies the ACPICA code, especially any printf 7076output. 7077UINT64 is the only common data type for all thread_id types across all 7078operating systems. It is now up to the host OSL to cast the native 7079thread_id 7080type to UINT64 before returning the value to ACPICA (via 7081AcpiOsGetThreadId). 7082Lin Ming, Bob Moore. 7083 7084Added the ACPI_INLINE type to enhance the ACPICA configuration. The 7085"inline" 7086keyword is not standard across compilers, and this type allows inline to 7087be 7088configured on a per-compiler basis. Lin Ming. 7089 7090Made the system global AcpiGbl_SystemAwakeAndRunning publicly 7091available. 7092Added an extern for this boolean in acpixf.h. Some hosts utilize this 7093value 7094during suspend/restore operations. ACPICA BZ 869. 7095 7096All code that implements error/warning messages with the "ACPI:" prefix 7097has 7098been moved to a new module, utxferror.c. 7099 7100The UINT64_OVERLAY was moved to utmath.c, which is the only module where 7101it 7102is used. ACPICA BZ 829. Lin Ming, Bob Moore. 7103 7104Example Code and Data Size: These are the sizes for the OS-independent 7105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7106debug version of the code includes the debug output trace mechanism and 7107has a 7108much larger code and data size. 7109 7110 Previous Release: 7111 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7112 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7113 Current Release: 7114 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 7115 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 7116 71172) iASL Compiler/Disassembler and Tools: 7118 7119iASL/Disassembler: Write ACPI errors to stderr instead of the output 7120file. 7121This keeps the output files free of random error messages that may 7122originate 7123from within the namespace/interpreter code. Used this opportunity to 7124merge 7125all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 7126866. Lin Ming, Bob Moore. 7127 7128Tools: update some printfs for ansi warnings on size_t. Handle width 7129change 7130of size_t on 32-bit versus 64-bit generations. Lin Ming. 7131 7132---------------------------------------- 713306 August 2010. Summary of changes for version 20100806: 7134 71351) ACPI CA Core Subsystem: 7136 7137Designed and implemented a new host interface to the _OSI support code. 7138This 7139will allow the host to dynamically add or remove multiple _OSI strings, 7140as 7141well as install an optional handler that is called for each _OSI 7142invocation. 7143Also added a new AML debugger command, 'osi' to display and modify the 7144global 7145_OSI string table, and test support in the AcpiExec utility. See the 7146ACPICA 7147reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 7148New Functions: 7149 AcpiInstallInterface - Add an _OSI string. 7150 AcpiRemoveInterface - Delete an _OSI string. 7151 AcpiInstallInterfaceHandler - Install optional _OSI handler. 7152Obsolete Functions: 7153 AcpiOsValidateInterface - no longer used. 7154New Files: 7155 source/components/utilities/utosi.c 7156 7157Re-introduced the support to enable multi-byte transfers for Embedded 7158Controller (EC) operation regions. A reported problem was found to be a 7159bug 7160in the host OS, not in the multi-byte support. Previously, the maximum 7161data 7162size passed to the EC operation region handler was a single byte. There 7163are 7164often EC Fields larger than one byte that need to be transferred, and it 7165is 7166useful for the EC driver to lock these as a single transaction. This 7167change 7168enables single transfers larger than 8 bits. This effectively changes the 7169access to the EC space from ByteAcc to AnyAcc, and will probably require 7170changes to the host OS Embedded Controller driver to enable 16/32/64/256- 7171bit 7172transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 7173 7174Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 7175prototype in acpiosxf.h had the output value pointer as a (void *). 7176It should be a (UINT64 *). This may affect some host OSL code. 7177 7178Fixed a couple problems with the recently modified Linux makefiles for 7179iASL 7180and AcpiExec. These new makefiles place the generated object files in the 7181local directory so that there can be no collisions between the files that 7182are 7183shared between them that are compiled with different options. 7184 7185Example Code and Data Size: These are the sizes for the OS-independent 7186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7187debug version of the code includes the debug output trace mechanism and 7188has a 7189much larger code and data size. 7190 7191 Previous Release: 7192 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7193 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7194 Current Release: 7195 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 7196 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 7197 71982) iASL Compiler/Disassembler and Tools: 7199 7200iASL/Disassembler: Added a new option (-da, "disassemble all") to load 7201the 7202namespace from and disassemble an entire group of AML files. Useful for 7203loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 7204and 7205disassembling with one simple command. ACPICA BZ 865. Lin Ming. 7206 7207iASL: Allow multiple invocations of -e option. This change allows 7208multiple 7209uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 7210834. 7211Lin Ming. 7212 7213---------------------------------------- 721402 July 2010. Summary of changes for version 20100702: 7215 72161) ACPI CA Core Subsystem: 7217 7218Implemented several updates to the recently added GPE reference count 7219support. The model for "wake" GPEs is changing to give the host OS 7220complete 7221control of these GPEs. Eventually, the ACPICA core will not execute any 7222_PRW 7223methods, since the host already must execute them. Also, additional 7224changes 7225were made to help ensure that the reference counts are kept in proper 7226synchronization with reality. Rafael J. Wysocki. 7227 72281) Ensure that GPEs are not enabled twice during initialization. 72292) Ensure that GPE enable masks stay in sync with the reference count. 72303) Do not inadvertently enable GPEs when writing GPE registers. 72314) Remove the internal wake reference counter and add new AcpiGpeWakeup 7232interface. This interface will set or clear individual GPEs for wakeup. 72335) Remove GpeType argument from AcpiEnable and AcpiDisable. These 7234interfaces 7235are now used for "runtime" GPEs only. 7236 7237Changed the behavior of the GPE install/remove handler interfaces. The 7238GPE 7239is 7240no longer disabled during this process, as it was found to cause problems 7241on 7242some machines. Rafael J. Wysocki. 7243 7244Reverted a change introduced in version 20100528 to enable Embedded 7245Controller multi-byte transfers. This change was found to cause problems 7246with 7247Index Fields and possibly Bank Fields. It will be reintroduced when these 7248problems have been resolved. 7249 7250Fixed a problem with references to Alias objects within Package Objects. 7251A 7252reference to an Alias within the definition of a Package was not always 7253resolved properly. Aliases to objects like Processors, Thermal zones, 7254etc. 7255were resolved to the actual object instead of a reference to the object 7256as 7257it 7258should be. Package objects are only allowed to contain integer, string, 7259buffer, package, and reference objects. Redhat bugzilla 608648. 7260 7261Example Code and Data Size: These are the sizes for the OS-independent 7262acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7263debug version of the code includes the debug output trace mechanism and 7264has a 7265much larger code and data size. 7266 7267 Previous Release: 7268 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7269 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7270 Current Release: 7271 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7272 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7273 72742) iASL Compiler/Disassembler and Tools: 7275 7276iASL: Implemented a new compiler subsystem to allow definition and 7277compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7278These 7279are called "ACPI Data Tables", and the new compiler is the "Data Table 7280Compiler". This compiler is intended to simplify the existing error-prone 7281process of creating these tables for the BIOS, as well as allowing the 7282disassembly, modification, recompilation, and override of existing ACPI 7283data 7284tables. See the iASL User Guide for detailed information. 7285 7286iASL: Implemented a new Template Generator option in support of the new 7287Data 7288Table Compiler. This option will create examples of all known ACPI tables 7289that can be used as the basis for table development. See the iASL 7290documentation and the -T option. 7291 7292Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7293Descriptor Table). 7294 7295Updated the Linux makefiles for iASL and AcpiExec to place the generated 7296object files in the local directory so that there can be no collisions 7297between the shared files between them that are generated with different 7298options. 7299 7300Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7301Use 7302the #define __APPLE__ to enable this support. 7303 7304---------------------------------------- 730528 May 2010. Summary of changes for version 20100528: 7306 7307Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7308available at www.acpi.info. This is primarily an errata release. 7309 73101) ACPI CA Core Subsystem: 7311 7312Undefined ACPI tables: We are looking for the definitions for the 7313following 7314ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7315 7316Implemented support to enable multi-byte transfers for Embedded 7317Controller 7318(EC) operation regions. Previously, the maximum data size passed to the 7319EC 7320operation region handler was a single byte. There are often EC Fields 7321larger 7322than one byte that need to be transferred, and it is useful for the EC 7323driver 7324to lock these as a single transaction. This change enables single 7325transfers 7326larger than 8 bits. This effectively changes the access to the EC space 7327from 7328ByteAcc to AnyAcc, and will probably require changes to the host OS 7329Embedded 7330Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7331bit 7332transfers. Alexey Starikovskiy, Lin Ming 7333 7334Implemented a performance enhancement for namespace search and access. 7335This 7336change enhances the performance of namespace searches and walks by adding 7337a 7338backpointer to the parent in each namespace node. On large namespaces, 7339this 7340change can improve overall ACPI performance by up to 9X. Adding a pointer 7341to 7342each namespace node increases the overall size of the internal namespace 7343by 7344about 5%, since each namespace entry usually consists of both a namespace 7345node and an ACPI operand object. However, this is the first growth of the 7346namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7347 7348Implemented a performance optimization that reduces the number of 7349namespace 7350walks. On control method exit, only walk the namespace if the method is 7351known 7352to have created namespace objects outside of its local scope. Previously, 7353the 7354entire namespace was traversed on each control method exit. This change 7355can 7356improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7357Moore. 7358 7359Added support to truncate I/O addresses to 16 bits for Windows 7360compatibility. 7361Some ASL code has been seen in the field that inadvertently has bits set 7362above bit 15. This feature is optional and is enabled if the BIOS 7363requests 7364any Windows OSI strings. It can also be enabled by the host OS. Matthew 7365Garrett, Bob Moore. 7366 7367Added support to limit the maximum time for the ASL Sleep() operator. To 7368prevent accidental deep sleeps, limit the maximum time that Sleep() will 7369actually sleep. Configurable, the default maximum is two seconds. ACPICA 7370bugzilla 854. 7371 7372Added run-time validation support for the _WDG and_WED Microsoft 7373predefined 7374methods. These objects are defined by "Windows Instrumentation", and are 7375not 7376part of the ACPI spec. ACPICA BZ 860. 7377 7378Expanded all statistic counters used during namespace and device 7379initialization from 16 to 32 bits in order to support very large 7380namespaces. 7381 7382Replaced all instances of %d in printf format specifiers with %u since 7383nearly 7384all integers in ACPICA are unsigned. 7385 7386Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7387returned 7388as AE_NO_HANDLER. 7389 7390Example Code and Data Size: These are the sizes for the OS-independent 7391acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7392debug version of the code includes the debug output trace mechanism and 7393has a 7394much larger code and data size. 7395 7396 Previous Release: 7397 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7398 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7399 Current Release: 7400 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7401 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7402 74032) iASL Compiler/Disassembler and Tools: 7404 7405iASL: Added compiler support for the _WDG and_WED Microsoft predefined 7406methods. These objects are defined by "Windows Instrumentation", and are 7407not 7408part of the ACPI spec. ACPICA BZ 860. 7409 7410AcpiExec: added option to disable the memory tracking mechanism. The -dt 7411option will disable the tracking mechanism, which improves performance 7412considerably. 7413 7414AcpiExec: Restructured the command line options into -d (disable) and -e 7415(enable) options. 7416 7417---------------------------------------- 741828 April 2010. Summary of changes for version 20100428: 7419 74201) ACPI CA Core Subsystem: 7421 7422Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 7423including FADT-based and GPE Block Devices, execute any _PRW methods in 7424the 7425new table, and process any _Lxx/_Exx GPE methods in the new table. Any 7426runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 7427immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 7428Devices. Provides compatibility with other ACPI implementations. Two new 7429files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 7430Moore. 7431 7432Fixed a regression introduced in version 20100331 within the table 7433manager 7434where initial table loading could fail. This was introduced in the fix 7435for 7436AcpiReallocateRootTable. Also, renamed some of fields in the table 7437manager 7438data structures to clarify their meaning and use. 7439 7440Fixed a possible allocation overrun during internal object copy in 7441AcpiUtCopySimpleObject. The original code did not correctly handle the 7442case 7443where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 7444847. 7445 7446Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 7447possible access beyond end-of-allocation. Also, now fully validate 7448descriptor 7449(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 7450 7451Example Code and Data Size: These are the sizes for the OS-independent 7452acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7453debug version of the code includes the debug output trace mechanism and 7454has a 7455much larger code and data size. 7456 7457 Previous Release: 7458 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7459 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7460 Current Release: 7461 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7462 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7463 74642) iASL Compiler/Disassembler and Tools: 7465 7466iASL: Implemented Min/Max/Len/Gran validation for address resource 7467descriptors. This change implements validation for the address fields 7468that 7469are common to all address-type resource descriptors. These checks are 7470implemented: Checks for valid Min/Max, length within the Min/Max window, 7471valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7472per 7473table 6-40 in the ACPI 4.0a specification. Also split the large 7474aslrestype1.c 7475and aslrestype2.c files into five new files. ACPICA BZ 840. 7476 7477iASL: Added support for the _Wxx predefined names. This support was 7478missing 7479and these names were not recognized by the compiler as valid predefined 7480names. ACPICA BZ 851. 7481 7482iASL: Added an error for all predefined names that are defined to return 7483no 7484value and thus must be implemented as Control Methods. These include all 7485of 7486the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7487names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7488 7489iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7490an 7491ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7492be 7493dynamically loaded via the Load() operator. Also cleaned up output for 7494the 7495- 7496ta and -tc options. ACPICA BZ 853. 7497 7498Tests: Added a new file with examples of extended iASL error checking. 7499Demonstrates the advanced error checking ability of the iASL compiler. 7500Available at tests/misc/badcode.asl. 7501 7502---------------------------------------- 750331 March 2010. Summary of changes for version 20100331: 7504 75051) ACPI CA Core Subsystem: 7506 7507Completed a major update for the GPE support in order to improve support 7508for 7509shared GPEs and to simplify both host OS and ACPICA code. Added a 7510reference 7511count mechanism to support shared GPEs that require multiple device 7512drivers. 7513Several external interfaces have changed. One external interface has been 7514removed. One new external interface was added. Most of the GPE external 7515interfaces now use the GPE spinlock instead of the events mutex (and the 7516Flags parameter for many GPE interfaces has been removed.) See the 7517updated 7518ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7519Rafael 7520Wysocki. ACPICA BZ 831. 7521 7522Changed: 7523 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7524Removed: 7525 AcpiSetGpeType 7526New: 7527 AcpiSetGpe 7528 7529Implemented write support for DataTable operation regions. These regions 7530are 7531defined via the DataTableRegion() operator. Previously, only read support 7532was 7533implemented. The ACPI specification allows DataTableRegions to be 7534read/write, 7535however. 7536 7537Implemented a new subsystem option to force a copy of the DSDT to local 7538memory. Optionally copy the entire DSDT to local memory (instead of 7539simply 7540mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7541replace 7542the original DSDT, creating the need for this option. Default is FALSE, 7543do 7544not copy the DSDT. 7545 7546Implemented detection of a corrupted or replaced DSDT. This change adds 7547support to detect a DSDT that has been corrupted and/or replaced from 7548outside 7549the OS (by firmware). This is typically catastrophic for the system, but 7550has 7551been seen on some machines. Once this problem has been detected, the DSDT 7552copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7553 7554Fixed two problems with AcpiReallocateRootTable during the root table 7555copy. 7556When copying the root table to the new allocation, the length used was 7557incorrect. The new size was used instead of the current table size, 7558meaning 7559too much data was copied. Also, the count of available slots for ACPI 7560tables 7561was not set correctly. Alexey Starikovskiy, Bob Moore. 7562 7563Example Code and Data Size: These are the sizes for the OS-independent 7564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7565debug version of the code includes the debug output trace mechanism and 7566has a 7567much larger code and data size. 7568 7569 Previous Release: 7570 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7571 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7572 Current Release: 7573 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7574 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7575 75762) iASL Compiler/Disassembler and Tools: 7577 7578iASL: Implement limited typechecking for values returned from predefined 7579control methods. The type of any returned static (unnamed) object is now 7580validated. For example, Return(1). ACPICA BZ 786. 7581 7582iASL: Fixed a predefined name object verification regression. Fixes a 7583problem 7584introduced in version 20100304. An error is incorrectly generated if a 7585predefined name is declared as a static named object with a value defined 7586using the keywords "Zero", "One", or "Ones". Lin Ming. 7587 7588iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7589by 7590reducing the requested registry access rights. ACPICA BZ 842. 7591 7592Disassembler: fixed a possible fault when generating External() 7593statements. 7594Introduced in commit ae7d6fd: Properly handle externals with parent- 7595prefix 7596(carat). Fixes a string length allocation calculation. Lin Ming. 7597 7598---------------------------------------- 759904 March 2010. Summary of changes for version 20100304: 7600 76011) ACPI CA Core Subsystem: 7602 7603Fixed a possible problem with the AML Mutex handling function 7604AcpiExReleaseMutex where the function could fault under the very rare 7605condition when the interpreter has blocked, the interpreter lock is 7606released, 7607the interpreter is then reentered via the same thread, and attempts to 7608acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7609Lin 7610Ming. 7611 7612Implemented additional configuration support for the AML "Debug Object". 7613Output from the debug object can now be enabled via a global variable, 7614AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7615debugging. 7616This debug output is now available in the release version of ACPICA 7617instead 7618of just the debug version. Also, the entire debug output module can now 7619be 7620configured out of the ACPICA build if desired. One new file added, 7621executer/exdebug.c. Lin Ming, Bob Moore. 7622 7623Added header support for the ACPI MCHI table (Management Controller Host 7624Interface Table). This table was added in ACPI 4.0, but the defining 7625document 7626has only recently become available. 7627 7628Standardized output of integer values for ACPICA warnings/errors. Always 7629use 76300x prefix for hex output, always use %u for unsigned integer decimal 7631output. 7632Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7633400 7634invocations.) These invocations were converted from the original 7635ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7636 7637Example Code and Data Size: These are the sizes for the OS-independent 7638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7639debug version of the code includes the debug output trace mechanism and 7640has a 7641much larger code and data size. 7642 7643 Previous Release: 7644 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7645 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7646 Current Release: 7647 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7648 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7649 76502) iASL Compiler/Disassembler and Tools: 7651 7652iASL: Implemented typechecking support for static (non-control method) 7653predefined named objects that are declared with the Name() operator. For 7654example, the type of this object is now validated to be of type Integer: 7655Name(_BBN, 1). This change migrates the compiler to using the core 7656predefined 7657name table instead of maintaining a local version. Added a new file, 7658aslpredef.c. ACPICA BZ 832. 7659 7660Disassembler: Added support for the ACPI 4.0 MCHI table. 7661 7662---------------------------------------- 766321 January 2010. Summary of changes for version 20100121: 7664 76651) ACPI CA Core Subsystem: 7666 7667Added the 2010 copyright to all module headers and signons. This affects 7668virtually every file in the ACPICA core subsystem, the iASL compiler, the 7669tools/utilities, and the test suites. 7670 7671Implemented a change to the AcpiGetDevices interface to eliminate 7672unnecessary 7673invocations of the _STA method. In the case where a specific _HID is 7674requested, do not run _STA until a _HID match is found. This eliminates 7675potentially dozens of _STA calls during a search for a particular 7676device/HID, 7677which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7678 7679Implemented an additional repair for predefined method return values. 7680Attempt 7681to repair unexpected NULL elements within returned Package objects. 7682Create 7683an 7684Integer of value zero, a NULL String, or a zero-length Buffer as 7685appropriate. 7686ACPICA BZ 818. Lin Ming, Bob Moore. 7687 7688Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7689the 7690code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7691(with 769264-bit AML integers). It is now obsolete and this change removes it from 7693the 7694ACPICA code base, replaced by UINT64. The original typedef has been 7695retained 7696for now for compatibility with existing device driver code. ACPICA BZ 7697824. 7698 7699Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7700in 7701the parse tree object. 7702 7703Added additional warning options for the gcc-4 generation. Updated the 7704source 7705accordingly. This includes some code restructuring to eliminate 7706unreachable 7707code, elimination of some gotos, elimination of unused return values, 7708some 7709additional casting, and removal of redundant declarations. 7710 7711Example Code and Data Size: These are the sizes for the OS-independent 7712acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7713debug version of the code includes the debug output trace mechanism and 7714has a 7715much larger code and data size. 7716 7717 Previous Release: 7718 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7719 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7720 Current Release: 7721 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7722 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7723 77242) iASL Compiler/Disassembler and Tools: 7725 7726No functional changes for this release. 7727 7728---------------------------------------- 772914 December 2009. Summary of changes for version 20091214: 7730 77311) ACPI CA Core Subsystem: 7732 7733Enhanced automatic data type conversions for predefined name repairs. 7734This 7735change expands the automatic repairs/conversions for predefined name 7736return 7737values to make Integers, Strings, and Buffers fully interchangeable. 7738Also, 7739a 7740Buffer can be converted to a Package of Integers if necessary. The 7741nsrepair.c 7742module was completely restructured. Lin Ming, Bob Moore. 7743 7744Implemented automatic removal of null package elements during predefined 7745name 7746repairs. This change will automatically remove embedded and trailing NULL 7747package elements from returned package objects that are defined to 7748contain 7749a 7750variable number of sub-packages. The driver is then presented with a 7751package 7752with no null elements to deal with. ACPICA BZ 819. 7753 7754Implemented a repair for the predefined _FDE and _GTM names. The expected 7755return value for both names is a Buffer of 5 DWORDs. This repair fixes 7756two 7757possible problems (both seen in the field), where a package of integers 7758is 7759returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7760Kim. 7761 7762Implemented additional module-level code support. This change will 7763properly 7764execute module-level code that is not at the root of the namespace (under 7765a 7766Device object, etc.). Now executes the code within the current scope 7767instead 7768of the root. ACPICA BZ 762. Lin Ming. 7769 7770Fixed possible mutex acquisition errors when running _REG methods. Fixes 7771a 7772problem where mutex errors can occur when running a _REG method that is 7773in 7774the same scope as a method-defined operation region or an operation 7775region 7776under a module-level IF block. This type of code is rare, so the problem 7777has 7778not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7779 7780Fixed a possible memory leak during module-level code execution. An 7781object 7782could be leaked for each block of executed module-level code if the 7783interpreter slack mode is enabled This change deletes any implicitly 7784returned 7785object from the module-level code block. Lin Ming. 7786 7787Removed messages for successful predefined repair(s). The repair 7788mechanism 7789was considered too wordy. Now, messages are only unconditionally emitted 7790if 7791the return object cannot be repaired. Existing messages for successful 7792repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7793827. 7794 7795Example Code and Data Size: These are the sizes for the OS-independent 7796acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7797debug version of the code includes the debug output trace mechanism and 7798has a 7799much larger code and data size. 7800 7801 Previous Release: 7802 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7803 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7804 Current Release: 7805 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7806 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7807 78082) iASL Compiler/Disassembler and Tools: 7809 7810iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7811files 7812were no longer automatically removed at the termination of the compile. 7813 7814acpiexec: Implemented the -f option to specify default region fill value. 7815This option specifies the value used to initialize buffers that simulate 7816operation regions. Default value is zero. Useful for debugging problems 7817that 7818depend on a specific initial value for a region or field. 7819 7820---------------------------------------- 782112 November 2009. Summary of changes for version 20091112: 7822 78231) ACPI CA Core Subsystem: 7824 7825Implemented a post-order callback to AcpiWalkNamespace. The existing 7826interface only has a pre-order callback. This change adds an additional 7827parameter for a post-order callback which will be more useful for bus 7828scans. 7829ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7830 7831Modified the behavior of the operation region memory mapping cache for 7832SystemMemory. Ensure that the memory mappings created for operation 7833regions 7834do not cross 4K page boundaries. Crossing a page boundary while mapping 7835regions can cause kernel warnings on some hosts if the pages have 7836different 7837attributes. Such regions are probably BIOS bugs, and this is the 7838workaround. 7839Linux BZ 14445. Lin Ming. 7840 7841Implemented an automatic repair for predefined methods that must return 7842sorted lists. This change will repair (by sorting) packages returned by 7843_ALR, 7844_PSS, and _TSS. Drivers can now assume that the packages are correctly 7845sorted 7846and do not contain NULL package elements. Adds one new file, 7847namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7848 7849Fixed a possible fault during predefined name validation if a return 7850Package 7851object contains NULL elements. Also adds a warning if a NULL element is 7852followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7853may 7854include repair or removal of all such NULL elements where possible. 7855 7856Implemented additional module-level executable AML code support. This 7857change 7858will execute module-level code that is not at the root of the namespace 7859(under a Device object, etc.) at table load time. Module-level executable 7860AML 7861code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7862 7863Implemented a new internal function to create Integer objects. This 7864function 7865simplifies miscellaneous object creation code. ACPICA BZ 823. 7866 7867Reduced the severity of predefined repair messages, Warning to Info. 7868Since 7869the object was successfully repaired, a warning is too severe. Reduced to 7870an 7871info message for now. These messages may eventually be changed to debug- 7872only. 7873ACPICA BZ 812. 7874 7875Example Code and Data Size: These are the sizes for the OS-independent 7876acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7877debug version of the code includes the debug output trace mechanism and 7878has a 7879much larger code and data size. 7880 7881 Previous Release: 7882 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7883 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7884 Current Release: 7885 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7886 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7887 78882) iASL Compiler/Disassembler and Tools: 7889 7890iASL: Implemented Switch() with While(1) so that Break works correctly. 7891This 7892change correctly implements the Switch operator with a surrounding 7893While(1) 7894so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7895 7896iASL: Added a message if a package initializer list is shorter than 7897package 7898length. Adds a new remark for a Package() declaration if an initializer 7899list 7900exists, but is shorter than the declared length of the package. Although 7901technically legal, this is probably a coding error and it is seen in the 7902field. ACPICA BZ 815. Lin Ming, Bob Moore. 7903 7904iASL: Fixed a problem where the compiler could fault after the maximum 7905number 7906of errors was reached (200). 7907 7908acpixtract: Fixed a possible warning for pointer cast if the compiler 7909warning 7910level set very high. 7911 7912---------------------------------------- 791313 October 2009. Summary of changes for version 20091013: 7914 79151) ACPI CA Core Subsystem: 7916 7917Fixed a problem where an Operation Region _REG method could be executed 7918more 7919than once. If a custom address space handler is installed by the host 7920before 7921the "initialize operation regions" phase of the ACPICA initialization, 7922any 7923_REG methods for that address space could be executed twice. This change 7924fixes the problem. ACPICA BZ 427. Lin Ming. 7925 7926Fixed a possible memory leak for the Scope() ASL operator. When the exact 7927invocation of "Scope(\)" is executed (change scope to root), one internal 7928operand object was leaked. Lin Ming. 7929 7930Implemented a run-time repair for the _MAT predefined method. If the _MAT 7931return value is defined as a Field object in the AML, and the field 7932size is less than or equal to the default width of an integer (32 or 793364),_MAT 7934can incorrectly return an Integer instead of a Buffer. ACPICA now 7935automatically repairs this problem. ACPICA BZ 810. 7936 7937Implemented a run-time repair for the _BIF and _BIX predefined methods. 7938The 7939"OEM Information" field is often incorrectly returned as an Integer with 7940value zero if the field is not supported by the platform. This is due to 7941an 7942ambiguity in the ACPI specification. The field should always be a string. 7943ACPICA now automatically repairs this problem by returning a NULL string 7944within the returned Package. ACPICA BZ 807. 7945 7946Example Code and Data Size: These are the sizes for the OS-independent 7947acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7948debug version of the code includes the debug output trace mechanism and 7949has a 7950much larger code and data size. 7951 7952 Previous Release: 7953 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7954 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7955 Current Release: 7956 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7957 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7958 79592) iASL Compiler/Disassembler and Tools: 7960 7961Disassembler: Fixed a problem where references to external symbols that 7962contained one or more parent-prefixes (carats) were not handled 7963correctly, 7964possibly causing a fault. ACPICA BZ 806. Lin Ming. 7965 7966Disassembler: Restructured the code so that all functions that handle 7967external symbols are in a single module. One new file is added, 7968common/dmextern.c. 7969 7970AML Debugger: Added a max count argument for the Batch command (which 7971executes multiple predefined methods within the namespace.) 7972 7973iASL: Updated the compiler documentation (User Reference.) Available at 7974http://www.acpica.org/documentation/. ACPICA BZ 750. 7975 7976AcpiXtract: Updated for Lint and other formatting changes. Close all open 7977files. 7978 7979---------------------------------------- 798003 September 2009. Summary of changes for version 20090903: 7981 79821) ACPI CA Core Subsystem: 7983 7984For Windows Vista compatibility, added the automatic execution of an _INI 7985method located at the namespace root (\_INI). This method is executed at 7986table load time. This support is in addition to the automatic execution 7987of 7988\_SB._INI. Lin Ming. 7989 7990Fixed a possible memory leak in the interpreter for AML package objects 7991if 7992the package initializer list is longer than the defined size of the 7993package. 7994This apparently can only happen if the BIOS changes the package size on 7995the 7996fly (seen in a _PSS object), as ASL compilers do not allow this. The 7997interpreter will truncate the package to the defined size (and issue an 7998error 7999message), but previously could leave the extra objects undeleted if they 8000were 8001pre-created during the argument processing (such is the case if the 8002package 8003consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 8004 8005Fixed a problem seen when a Buffer or String is stored to itself via ASL. 8006This has been reported in the field. Previously, ACPICA would zero out 8007the 8008buffer/string. Now, the operation is treated as a noop. Provides Windows 8009compatibility. ACPICA BZ 803. Lin Ming. 8010 8011Removed an extraneous error message for ASL constructs of the form 8012Store(LocalX,LocalX) when LocalX is uninitialized. These curious 8013statements 8014are seen in many BIOSs and are once again treated as NOOPs and no error 8015is 8016emitted when they are encountered. ACPICA BZ 785. 8017 8018Fixed an extraneous warning message if a _DSM reserved method returns a 8019Package object. _DSM can return any type of object, so validation on the 8020return type cannot be performed. ACPICA BZ 802. 8021 8022Example Code and Data Size: These are the sizes for the OS-independent 8023acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8024debug version of the code includes the debug output trace mechanism and 8025has a 8026much larger code and data size. 8027 8028 Previous Release: 8029 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8030 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8031 Current Release: 8032 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 8033 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 8034 80352) iASL Compiler/Disassembler and Tools: 8036 8037iASL: Fixed a problem with the use of the Alias operator and Resource 8038Templates. The correct alias is now constructed and no error is emitted. 8039ACPICA BZ 738. 8040 8041iASL: Implemented the -I option to specify additional search directories 8042for 8043include files. Allows multiple additional search paths for include files. 8044Directories are searched in the order specified on the command line 8045(after 8046the local directory is searched.) ACPICA BZ 800. 8047 8048iASL: Fixed a problem where the full pathname for include files was not 8049emitted for warnings/errors. This caused the IDE support to not work 8050properly. ACPICA BZ 765. 8051 8052iASL: Implemented the -@ option to specify a Windows-style response file 8053containing additional command line options. ACPICA BZ 801. 8054 8055AcpiExec: Added support to load multiple AML files simultaneously (such 8056as 8057a 8058DSDT and multiple SSDTs). Also added support for wildcards within the AML 8059pathname. These features allow all machine tables to be easily loaded and 8060debugged together. ACPICA BZ 804. 8061 8062Disassembler: Added missing support for disassembly of HEST table Error 8063Bank 8064subtables. 8065 8066---------------------------------------- 806730 July 2009. Summary of changes for version 20090730: 8068 8069The ACPI 4.0 implementation for ACPICA is complete with this release. 8070 80711) ACPI CA Core Subsystem: 8072 8073ACPI 4.0: Added header file support for all new and changed ACPI tables. 8074Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 8075new 8076for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 8077BERT, 8078EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 8079There 8080have been some ACPI 4.0 changes to other existing tables. Split the large 8081actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 8082 8083ACPI 4.0: Implemented predefined name validation for all new names. There 8084are 808531 new names in ACPI 4.0. The predefined validation module was split into 8086two 8087files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 8088 8089Implemented support for so-called "module-level executable code". This is 8090executable AML code that exists outside of any control method and is 8091intended 8092to be executed at table load time. Although illegal since ACPI 2.0, this 8093type 8094of code still exists and is apparently still being created. Blocks of 8095this 8096code are now detected and executed as intended. Currently, the code 8097blocks 8098must exist under either an If, Else, or While construct; these are the 8099typical cases seen in the field. ACPICA BZ 762. Lin Ming. 8100 8101Implemented an automatic dynamic repair for predefined names that return 8102nested Package objects. This applies to predefined names that are defined 8103to 8104return a variable-length Package of sub-packages. If the number of sub- 8105packages is one, BIOS code is occasionally seen that creates a simple 8106single 8107package with no sub-packages. This code attempts to fix the problem by 8108wrapping a new package object around the existing package. These methods 8109can 8110be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 8111BZ 8112790. 8113 8114Fixed a regression introduced in 20090625 for the AcpiGetDevices 8115interface. 8116The _HID/_CID matching was broken and no longer matched IDs correctly. 8117ACPICA 8118BZ 793. 8119 8120Fixed a problem with AcpiReset where the reset would silently fail if the 8121register was one of the protected I/O ports. AcpiReset now bypasses the 8122port 8123validation mechanism. This may eventually be driven into the 8124AcpiRead/Write 8125interfaces. 8126 8127Fixed a regression related to the recent update of the AcpiRead/Write 8128interfaces. A sleep/suspend could fail if the optional PM2 Control 8129register 8130does not exist during an attempt to write the Bus Master Arbitration bit. 8131(However, some hosts already delete the code that writes this bit, and 8132the 8133code may in fact be obsolete at this date.) ACPICA BZ 799. 8134 8135Fixed a problem where AcpiTerminate could fault if inadvertently called 8136twice 8137in succession. ACPICA BZ 795. 8138 8139Example Code and Data Size: These are the sizes for the OS-independent 8140acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8141debug version of the code includes the debug output trace mechanism and 8142has a 8143much larger code and data size. 8144 8145 Previous Release: 8146 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8147 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8148 Current Release: 8149 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 8150 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 8151 81522) iASL Compiler/Disassembler and Tools: 8153 8154ACPI 4.0: Implemented disassembler support for all new ACPI tables and 8155changes to existing tables. ACPICA BZ 775. 8156 8157---------------------------------------- 815825 June 2009. Summary of changes for version 20090625: 8159 8160The ACPI 4.0 Specification was released on June 16 and is available at 8161www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 8162continue for the next few releases. 8163 81641) ACPI CA Core Subsystem: 8165 8166ACPI 4.0: Implemented interpreter support for the IPMI operation region 8167address space. Includes support for bi-directional data buffers and an 8168IPMI 8169address space handler (to be installed by an IPMI device driver.) ACPICA 8170BZ 8171773. Lin Ming. 8172 8173ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 8174Includes 8175support in both the header files and the disassembler. 8176 8177Completed a major update for the AcpiGetObjectInfo external interface. 8178Changes include: 8179 - Support for variable, unlimited length HID, UID, and CID strings. 8180 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 8181etc.) 8182 - Call the _SxW power methods on behalf of a device object. 8183 - Determine if a device is a PCI root bridge. 8184 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 8185These changes will require an update to all callers of this interface. 8186See 8187the updated ACPICA Programmer Reference for details. One new source file 8188has 8189been added - utilities/utids.c. ACPICA BZ 368, 780. 8190 8191Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 8192transfers. The Value parameter has been extended from 32 bits to 64 bits 8193in 8194order to support new ACPI 4.0 tables. These changes will require an 8195update 8196to 8197all callers of these interfaces. See the ACPICA Programmer Reference for 8198details. ACPICA BZ 768. 8199 8200Fixed several problems with AcpiAttachData. The handler was not invoked 8201when 8202the host node was deleted. The data sub-object was not automatically 8203deleted 8204when the host node was deleted. The interface to the handler had an 8205unused 8206parameter, this was removed. ACPICA BZ 778. 8207 8208Enhanced the function that dumps ACPI table headers. All non-printable 8209characters in the string fields are now replaced with '?' (Signature, 8210OemId, 8211OemTableId, and CompilerId.) ACPI tables with non-printable characters in 8212these fields are occasionally seen in the field. ACPICA BZ 788. 8213 8214Fixed a problem with predefined method repair code where the code that 8215attempts to repair/convert an object of incorrect type is only executed 8216on 8217the first time the predefined method is called. The mechanism that 8218disables 8219warnings on subsequent calls was interfering with the repair mechanism. 8220ACPICA BZ 781. 8221 8222Fixed a possible memory leak in the predefined validation/repair code 8223when 8224a 8225buffer is automatically converted to an expected string object. 8226 8227Removed obsolete 16-bit files from the distribution and from the current 8228git 8229tree head. ACPICA BZ 776. 8230 8231Example Code and Data Size: These are the sizes for the OS-independent 8232acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8233debug version of the code includes the debug output trace mechanism and 8234has a 8235much larger code and data size. 8236 8237 Previous Release: 8238 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8239 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8240 Current Release: 8241 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8242 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8243 82442) iASL Compiler/Disassembler and Tools: 8245 8246ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8247operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8248 8249ACPI 4.0: iASL - implemented compile-time validation support for all new 8250predefined names and control methods (31 total). ACPICA BZ 769. 8251 8252---------------------------------------- 825321 May 2009. Summary of changes for version 20090521: 8254 82551) ACPI CA Core Subsystem: 8256 8257Disabled the preservation of the SCI enable bit in the PM1 control 8258register. 8259The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8260to 8261be 8262a "preserved" bit - "OSPM always preserves this bit position", section 82634.7.3.2.1. However, some machines fail if this bit is in fact preserved 8264because the bit needs to be explicitly set by the OS as a workaround. No 8265machines fail if the bit is not preserved. Therefore, ACPICA no longer 8266attempts to preserve this bit. 8267 8268Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8269incorrectly formed _PRT package could cause a fault. Added validation to 8270ensure that each package element is actually a sub-package. 8271 8272Implemented a new interface to install or override a single control 8273method, 8274AcpiInstallMethod. This interface is useful when debugging in order to 8275repair 8276an existing method or to install a missing method without having to 8277override 8278the entire ACPI table. See the ACPICA Programmer Reference for use and 8279examples. Lin Ming, Bob Moore. 8280 8281Fixed several reference count issues with the DdbHandle object that is 8282created from a Load or LoadTable operator. Prevent premature deletion of 8283the 8284object. Also, mark the object as invalid once the table has been 8285unloaded. 8286This is needed because the handle itself may not be deleted after the 8287table 8288unload, depending on whether it has been stored in a named object by the 8289caller. Lin Ming. 8290 8291Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8292mutexes of the same sync level are acquired but then not released in 8293strict 8294opposite order, the internally maintained Current Sync Level becomes 8295confused 8296and can cause subsequent execution errors. ACPICA BZ 471. 8297 8298Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8299specification has been changed to make the SyncLevel for mutex objects 8300more 8301useful. When releasing a mutex, the SyncLevel of the mutex must now be 8302the 8303same as the current sync level. This makes more sense than the previous 8304rule 8305(SyncLevel less than or equal). This change updates the code to match the 8306specification. 8307 8308Fixed a problem with the local version of the AcpiOsPurgeCache function. 8309The 8310(local) cache must be locked during all cache object deletions. Andrew 8311Baumann. 8312 8313Updated the Load operator to use operation region interfaces. This 8314replaces 8315direct memory mapping with region access calls. Now, all region accesses 8316go 8317through the installed region handler as they should. 8318 8319Simplified and optimized the NsGetNextNode function. Reduced parameter 8320count 8321and reduced code for this frequently used function. 8322 8323Example Code and Data Size: These are the sizes for the OS-independent 8324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8325debug version of the code includes the debug output trace mechanism and 8326has a 8327much larger code and data size. 8328 8329 Previous Release: 8330 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8331 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8332 Current Release: 8333 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8334 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8335 83362) iASL Compiler/Disassembler and Tools: 8337 8338Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8339problems 8340with sub-table disassembly and handling invalid sub-tables. Attempt 8341recovery 8342after an invalid sub-table ID. 8343 8344---------------------------------------- 834522 April 2009. Summary of changes for version 20090422: 8346 83471) ACPI CA Core Subsystem: 8348 8349Fixed a compatibility issue with the recently released I/O port 8350protection 8351mechanism. For windows compatibility, 1) On a port protection violation, 8352simply ignore the request and do not return an exception (allow the 8353control 8354method to continue execution.) 2) If only part of the request overlaps a 8355protected port, read/write the individual ports that are not protected. 8356Linux 8357BZ 13036. Lin Ming 8358 8359Enhanced the execution of the ASL/AML BreakPoint operator so that it 8360actually 8361breaks into the AML debugger if the debugger is present. This matches the 8362ACPI-defined behavior. 8363 8364Fixed several possible warnings related to the use of the configurable 8365ACPI_THREAD_ID. This type can now be configured as either an integer or a 8366pointer with no warnings. Also fixes several warnings in printf-like 8367statements for the 64-bit build when the type is configured as a pointer. 8368ACPICA BZ 766, 767. 8369 8370Fixed a number of possible warnings when compiling with gcc 4+ (depending 8371on 8372warning options.) Examples include printf formats, aliasing, unused 8373globals, 8374missing prototypes, missing switch default statements, use of non-ANSI 8375library functions, use of non-ANSI constructs. See generate/unix/Makefile 8376for 8377a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8378 8379Example Code and Data Size: These are the sizes for the OS-independent 8380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8381debug version of the code includes the debug output trace mechanism and 8382has a 8383much larger code and data size. 8384 8385 Previous Release: 8386 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8387 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8388 Current Release: 8389 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8390 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8391 83922) iASL Compiler/Disassembler and Tools: 8393 8394iASL: Fixed a generation warning from Bison 2.3 and fixed several 8395warnings 8396on 8397the 64-bit build. 8398 8399iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8400not 8401correctly digest Windows/DOS formatted files (with CR/LF). 8402 8403iASL: Added a new option for "quiet mode" (-va) that produces only the 8404compilation summary, not individual errors and warnings. Useful for large 8405batch compilations. 8406 8407AcpiExec: Implemented a new option (-z) to enable a forced 8408semaphore/mutex 8409timeout that can be used to detect hang conditions during execution of 8410AML 8411code (includes both internal semaphores and AML-defined mutexes and 8412events.) 8413 8414Added new makefiles for the generation of acpica in a generic unix-like 8415environment. These makefiles are intended to generate the acpica tools 8416and 8417utilities from the original acpica git source tree structure. 8418 8419Test Suites: Updated and cleaned up the documentation files. Updated the 8420copyrights to 2009, affecting all source files. Use the new version of 8421iASL 8422with quiet mode. Increased the number of available semaphores in the 8423Windows 8424OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 8425added 8426an alternate implementation of the semaphore timeout to allow aslts to 8427execute fully on Cygwin. 8428 8429---------------------------------------- 843020 March 2009. Summary of changes for version 20090320: 8431 84321) ACPI CA Core Subsystem: 8433 8434Fixed a possible race condition between AcpiWalkNamespace and dynamic 8435table 8436unloads. Added a reader/writer locking mechanism to allow multiple 8437concurrent 8438namespace walks (readers), but block a dynamic table unload until it can 8439gain 8440exclusive write access to the namespace. This fixes a problem where a 8441table 8442unload could (possibly catastrophically) delete the portion of the 8443namespace 8444that is currently being examined by a walk. Adds a new file, utlock.c, 8445that 8446implements the reader/writer lock mechanism. ACPICA BZ 749. 8447 8448Fixed a regression introduced in version 20090220 where a change to the 8449FADT 8450handling could cause the ACPICA subsystem to access non-existent I/O 8451ports. 8452 8453Modified the handling of FADT register and table (FACS/DSDT) addresses. 8454The 8455FADT can contain both 32-bit and 64-bit versions of these addresses. 8456Previously, the 64-bit versions were favored, meaning that if both 32 and 845764 8458versions were valid, but not equal, the 64-bit version was used. This was 8459found to cause some machines to fail. Now, in this case, the 32-bit 8460version 8461is used instead. This now matches the Windows behavior. 8462 8463Implemented a new mechanism to protect certain I/O ports. Provides 8464Microsoft 8465compatibility and protects the standard PC I/O ports from access via AML 8466code. Adds a new file, hwvalid.c 8467 8468Fixed a possible extraneous warning message from the FADT support. The 8469message warns of a 32/64 length mismatch between the legacy and GAS 8470definitions for a register. 8471 8472Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8473is 8474made obsolete by the port protection mechanism above. It was previously 8475used 8476to validate the entire address range of an operation region, which could 8477be 8478incorrect if the range included illegal ports, but fields within the 8479operation region did not actually access those ports. Validation is now 8480performed on a per-field basis instead of the entire region. 8481 8482Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8483Ignored bits must be "preserved" according to the ACPI spec. Usually, 8484this 8485means a read/modify/write when writing to the register. However, for 8486status 8487registers, writing a one means clear the event. Writing a zero means 8488preserve 8489the event (do not clear.) This behavior is clarified in the ACPI 4.0 8490spec, 8491and the ACPICA code now simply always writes a zero to the ignored bit. 8492 8493Modified the handling of ignored bits for the PM1 A/B Control Registers. 8494As 8495per the ACPI specification, for the control registers, preserve 8496(read/modify/write) all bits that are defined as either reserved or 8497ignored. 8498 8499Updated the handling of write-only bits in the PM1 A/B Control Registers. 8500When reading the register, zero the write-only bits as per the ACPI spec. 8501ACPICA BZ 443. Lin Ming. 8502 8503Removed "Linux" from the list of supported _OSI strings. Linux no longer 8504wants to reply true to this request. The Windows strings are the only 8505paths 8506through the AML that are tested and known to work properly. 8507 8508 Previous Release: 8509 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8510 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8511 Current Release: 8512 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8513 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8514 85152) iASL Compiler/Disassembler and Tools: 8516 8517Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8518and 8519aetables.c 8520 8521---------------------------------------- 852220 February 2009. Summary of changes for version 20090220: 8523 85241) ACPI CA Core Subsystem: 8525 8526Optimized the ACPI register locking. Removed locking for reads from the 8527ACPI 8528bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8529is 8530not required when reading the single-bit registers. The 8531AcpiGetRegisterUnlocked function is no longer needed and has been 8532removed. 8533This will improve performance for reads on these registers. ACPICA BZ 8534760. 8535 8536Fixed the parameter validation for AcpiRead/Write. Now return 8537AE_BAD_PARAMETER if the input register pointer is null, and 8538AE_BAD_ADDRESS 8539if 8540the register has an address of zero. Previously, these cases simply 8541returned 8542AE_OK. For optional registers such as PM1B status/enable/control, the 8543caller 8544should check for a valid register address before calling. ACPICA BZ 748. 8545 8546Renamed the external ACPI bit register access functions. Renamed 8547AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8548functions. The new names are AcpiReadBitRegister and 8549AcpiWriteBitRegister. 8550Also, restructured the code for these functions by simplifying the code 8551path 8552and condensing duplicate code to reduce code size. 8553 8554Added new functions to transparently handle the possibly split PM1 A/B 8555registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8556functions 8557now handle the split registers for PM1 Status, Enable, and Control. 8558ACPICA 8559BZ 8560746. 8561 8562Added a function to handle the PM1 control registers, 8563AcpiHwWritePm1Control. 8564This function writes both of the PM1 control registers (A/B). These 8565registers 8566are different than the PM1 A/B status and enable registers in that 8567different 8568values can be written to the A/B registers. Most notably, the SLP_TYP 8569bits 8570can be different, as per the values returned from the _Sx predefined 8571methods. 8572 8573Removed an extra register write within AcpiHwClearAcpiStatus. This 8574function 8575was writing an optional PM1B status register twice. The existing call to 8576the 8577low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8578A/B 8579register. ACPICA BZ 751. 8580 8581Split out the PM1 Status registers from the FADT. Added new globals for 8582these 8583registers (A/B), similar to the way the PM1 Enable registers are handled. 8584Instead of overloading the FADT Event Register blocks. This makes the 8585code 8586clearer and less prone to error. 8587 8588Fixed the warning message for when the platform contains too many ACPI 8589tables 8590for the default size of the global root table data structure. The 8591calculation 8592for the truncation value was incorrect. 8593 8594Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8595obsolete macro, since it is now a simple reference to ->common.type. 8596There 8597were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8598 8599Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8600TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8601simply SLEEP_TYPE. ACPICA BZ 754. 8602 8603Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8604function is only needed on 64-bit host operating systems and is thus not 8605included for 32-bit hosts. 8606 8607Debug output: print the input and result for invocations of the _OSI 8608reserved 8609control method via the ACPI_LV_INFO debug level. Also, reduced some of 8610the 8611verbosity of this debug level. Len Brown. 8612 8613Example Code and Data Size: These are the sizes for the OS-independent 8614acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8615debug version of the code includes the debug output trace mechanism and 8616has a 8617much larger code and data size. 8618 8619 Previous Release: 8620 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8621 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8622 Current Release: 8623 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8624 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8625 86262) iASL Compiler/Disassembler and Tools: 8627 8628Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8629various legal performance profiles. 8630 8631---------------------------------------- 863223 January 2009. Summary of changes for version 20090123: 8633 86341) ACPI CA Core Subsystem: 8635 8636Added the 2009 copyright to all module headers and signons. This affects 8637virtually every file in the ACPICA core subsystem, the iASL compiler, and 8638the tools/utilities. 8639 8640Implemented a change to allow the host to override any ACPI table, 8641including 8642dynamically loaded tables. Previously, only the DSDT could be replaced by 8643the 8644host. With this change, the AcpiOsTableOverride interface is called for 8645each 8646table found in the RSDT/XSDT during ACPICA initialization, and also 8647whenever 8648a table is dynamically loaded via the AML Load operator. 8649 8650Updated FADT flag definitions, especially the Boot Architecture flags. 8651 8652Debugger: For the Find command, automatically pad the input ACPI name 8653with 8654underscores if the name is shorter than 4 characters. This enables a 8655match 8656with the actual namespace entry which is itself padded with underscores. 8657 8658Example Code and Data Size: These are the sizes for the OS-independent 8659acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8660debug version of the code includes the debug output trace mechanism and 8661has a 8662much larger code and data size. 8663 8664 Previous Release: 8665 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8666 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8667 Current Release: 8668 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8669 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8670 86712) iASL Compiler/Disassembler and Tools: 8672 8673Fix build error under Bison-2.4. 8674 8675Dissasembler: Enhanced FADT support. Added decoding of the Boot 8676Architecture 8677flags. Now decode all flags, regardless of the FADT version. Flag output 8678includes the FADT version which first defined each flag. 8679 8680The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8681and 8682DSDT). Windows only. 8683 8684---------------------------------------- 868504 December 2008. Summary of changes for version 20081204: 8686 86871) ACPI CA Core Subsystem: 8688 8689The ACPICA Programmer Reference has been completely updated and revamped 8690for 8691this release. This includes updates to the external interfaces, OSL 8692interfaces, the overview sections, and the debugger reference. 8693 8694Several new ACPICA interfaces have been implemented and documented in the 8695programmer reference: 8696AcpiReset - Writes the reset value to the FADT-defined reset register. 8697AcpiDisableAllGpes - Disable all available GPEs. 8698AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8699AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8700AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8701AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8702AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8703 8704Most of the public ACPI hardware-related interfaces have been moved to a 8705new 8706file, components/hardware/hwxface.c 8707 8708Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8709register lengths within the FADT are now used, and the low level ACPI 8710register access no longer hardcodes the ACPI register lengths. Given that 8711there may be some risk in actually trusting the FADT register lengths, a 8712run- 8713time option was added to fall back to the default hardcoded lengths if 8714the 8715FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8716option is set to true for now, and a warning is issued if a suspicious 8717FADT 8718register length is overridden with the default value. 8719 8720Fixed a reference count issue in NsRepairObject. This problem was 8721introduced 8722in version 20081031 as part of a fix to repair Buffer objects within 8723Packages. Lin Ming. 8724 8725Added semaphore support to the Linux/Unix application OS-services layer 8726(OSL). ACPICA BZ 448. Lin Ming. 8727 8728Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8729will 8730be implemented in the OSL, or will binary semaphores be used instead. 8731 8732Example Code and Data Size: These are the sizes for the OS-independent 8733acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8734debug version of the code includes the debug output trace mechanism and 8735has a 8736much larger code and data size. 8737 8738 Previous Release: 8739 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8740 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8741 Current Release: 8742 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8743 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8744 87452) iASL Compiler/Disassembler and Tools: 8746 8747iASL: Completed the '-e' option to include additional ACPI tables in 8748order 8749to 8750aid with disassembly and External statement generation. ACPICA BZ 742. 8751Lin 8752Ming. 8753 8754iASL: Removed the "named object in while loop" error. The compiler cannot 8755determine how many times a loop will execute. ACPICA BZ 730. 8756 8757Disassembler: Implemented support for FADT revision 2 (MS extension). 8758ACPICA 8759BZ 743. 8760 8761Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8762MCFG). 8763 8764---------------------------------------- 876531 October 2008. Summary of changes for version 20081031: 8766 87671) ACPI CA Core Subsystem: 8768 8769Restructured the ACPICA header files into public/private. acpi.h now 8770includes 8771only the "public" acpica headers. All other acpica headers are "private" 8772and 8773should not be included by acpica users. One new file, accommon.h is used 8774to 8775include the commonly used private headers for acpica code generation. 8776Future 8777plans include moving all private headers to a new subdirectory. 8778 8779Implemented an automatic Buffer->String return value conversion for 8780predefined ACPI methods. For these methods (such as _BIF), added 8781automatic 8782conversion for return objects that are required to be a String, but a 8783Buffer 8784was found instead. This can happen when reading string battery data from 8785an 8786operation region, because it used to be difficult to convert the data 8787from 8788buffer to string from within the ASL. Ensures that the host OS is 8789provided 8790with a valid null-terminated string. Linux BZ 11822. 8791 8792Updated the FACS waking vector interfaces. Split 8793AcpiSetFirmwareWakingVector 8794into two: one for the 32-bit vector, another for the 64-bit vector. This 8795is 8796required because the host OS must setup the wake much differently for 8797each 8798vector (real vs. protected mode, etc.) and the interface itself should 8799not 8800be 8801deciding which vector to use. Also, eliminated the 8802GetFirmwareWakingVector 8803interface, as it served no purpose (only the firmware reads the vector, 8804OS 8805only writes the vector.) ACPICA BZ 731. 8806 8807Implemented a mechanism to escape infinite AML While() loops. Added a 8808loop 8809counter to force exit from AML While loops if the count becomes too 8810large. 8811This can occur in poorly written AML when the hardware does not respond 8812within a while loop and the loop does not implement a timeout. The 8813maximum 8814loop count is configurable. A new exception code is returned when a loop 8815is 8816broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8817 8818Optimized the execution of AML While loops. Previously, a control state 8819object was allocated and freed for each execution of the loop. The 8820optimization is to simply reuse the control state for each iteration. 8821This 8822speeds up the raw loop execution time by about 5%. 8823 8824Enhanced the implicit return mechanism. For Windows compatibility, return 8825an 8826implicit integer of value zero for methods that contain no executable 8827code. 8828Such methods are seen in the field as stubs (presumably), and can cause 8829drivers to fail if they expect a return value. Lin Ming. 8830 8831Allow multiple backslashes as root prefixes in namepaths. In a fully 8832qualified namepath, allow multiple backslash prefixes. This can happen 8833(and 8834is seen in the field) because of the use of a double-backslash in strings 8835(since backslash is the escape character) causing confusion. ACPICA BZ 8836739 8837Lin Ming. 8838 8839Emit a warning if two different FACS or DSDT tables are discovered in the 8840FADT. Checks if there are two valid but different addresses for the FACS 8841and 8842DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8843 8844Consolidated the method argument count validation code. Merged the code 8845that 8846validates control method argument counts into the predefined validation 8847module. Eliminates possible multiple warnings for incorrect argument 8848counts. 8849 8850Implemented ACPICA example code. Includes code for ACPICA initialization, 8851handler installation, and calling a control method. Available at 8852source/tools/examples. 8853 8854Added a global pointer for FACS table to simplify internal FACS access. 8855Use 8856the global pointer instead of using AcpiGetTableByIndex for each FACS 8857access. 8858This simplifies the code for the Global Lock and the Firmware Waking 8859Vector(s). 8860 8861Example Code and Data Size: These are the sizes for the OS-independent 8862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8863debug version of the code includes the debug output trace mechanism and 8864has a 8865much larger code and data size. 8866 8867 Previous Release: 8868 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8869 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8870 Current Release: 8871 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8872 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8873 88742) iASL Compiler/Disassembler and Tools: 8875 8876iASL: Improved disassembly of external method calls. Added the -e option 8877to 8878allow the inclusion of additional ACPI tables to help with the 8879disassembly 8880of 8881method invocations and the generation of external declarations during the 8882disassembly. Certain external method invocations cannot be disassembled 8883properly without the actual declaration of the method. Use the -e option 8884to 8885include the table where the external method(s) are actually declared. 8886Most 8887useful for disassembling SSDTs that make method calls back to the master 8888DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8889-d 8890-e dsdt.aml ssdt1.aml 8891 8892iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8893problem where the use of an alias within a namepath would result in a not 8894found error or cause the compiler to fault. Also now allows forward 8895references from the Alias operator itself. ACPICA BZ 738. 8896 8897---------------------------------------- 889826 September 2008. Summary of changes for version 20080926: 8899 89001) ACPI CA Core Subsystem: 8901 8902Designed and implemented a mechanism to validate predefined ACPI methods 8903and 8904objects. This code validates the predefined ACPI objects (objects whose 8905names 8906start with underscore) that appear in the namespace, at the time they are 8907evaluated. The argument count and the type of the returned object are 8908validated against the ACPI specification. The purpose of this validation 8909is 8910to detect problems with the BIOS-implemented predefined ACPI objects 8911before 8912the results are returned to the ACPI-related drivers. Future enhancements 8913may 8914include actual repair of incorrect return objects where possible. Two new 8915files are nspredef.c and acpredef.h. 8916 8917Fixed a fault in the AML parser if a memory allocation fails during the 8918Op 8919completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8920 8921Fixed an issue with implicit return compatibility. This change improves 8922the 8923implicit return mechanism to be more compatible with the MS interpreter. 8924Lin 8925Ming, ACPICA BZ 349. 8926 8927Implemented support for zero-length buffer-to-string conversions. Allow 8928zero 8929length strings during interpreter buffer-to-string conversions. For 8930example, 8931during the ToDecimalString and ToHexString operators, as well as implicit 8932conversions. Fiodor Suietov, ACPICA BZ 585. 8933 8934Fixed two possible memory leaks in the error exit paths of 8935AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8936are 8937similar in that they use a stack of state objects in order to eliminate 8938recursion. The stack must be fully unwound and deallocated if an error 8939occurs. Lin Ming. ACPICA BZ 383. 8940 8941Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8942global 8943ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8944Moore ACPICA BZ 442. 8945 8946Removed the obsolete version number in module headers. Removed the 8947"$Revision" number that appeared in each module header. This version 8948number 8949was useful under SourceSafe and CVS, but has no meaning under git. It is 8950not 8951only incorrect, it could also be misleading. 8952 8953Example Code and Data Size: These are the sizes for the OS-independent 8954acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8955debug version of the code includes the debug output trace mechanism and 8956has a 8957much larger code and data size. 8958 8959 Previous Release: 8960 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8961 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8962 Current Release: 8963 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8964 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8965 8966---------------------------------------- 896729 August 2008. Summary of changes for version 20080829: 8968 89691) ACPI CA Core Subsystem: 8970 8971Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8972Reference. Changes include the elimination of cheating on the Object 8973field 8974for the DdbHandle subtype, addition of a reference class field to 8975differentiate the various reference types (instead of an AML opcode), and 8976the 8977cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8978 8979Reduce an error to a warning for an incorrect method argument count. 8980Previously aborted with an error if too few arguments were passed to a 8981control method via the external ACPICA interface. Now issue a warning 8982instead 8983and continue. Handles the case where the method inadvertently declares 8984too 8985many arguments, but does not actually use the extra ones. Applies mainly 8986to 8987the predefined methods. Lin Ming. Linux BZ 11032. 8988 8989Disallow the evaluation of named object types with no intrinsic value. 8990Return 8991AE_TYPE for objects that have no value and therefore evaluation is 8992undefined: 8993Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8994of 8995these types were allowed, but an exception would be generated at some 8996point 8997during the evaluation. Now, the error is generated up front. 8998 8999Fixed a possible memory leak in the AcpiNsGetExternalPathname function 9000(nsnames.c). Fixes a leak in the error exit path. 9001 9002Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 9003debug 9004levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 9005ACPI_EXCEPTION 9006interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 9007ACPI_LV_EVENTS. 9008 9009Removed obsolete and/or unused exception codes from the acexcep.h header. 9010There is the possibility that certain device drivers may be affected if 9011they 9012use any of these exceptions. 9013 9014The ACPICA documentation has been added to the public git source tree, 9015under 9016acpica/documents. Included are the ACPICA programmer reference, the iASL 9017compiler reference, and the changes.txt release logfile. 9018 9019Example Code and Data Size: These are the sizes for the OS-independent 9020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9021debug version of the code includes the debug output trace mechanism and 9022has a 9023much larger code and data size. 9024 9025 Previous Release: 9026 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9027 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9028 Current Release: 9029 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9030 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 9031 90322) iASL Compiler/Disassembler and Tools: 9033 9034Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 9035defines _SCP with 3 arguments. Previous versions defined it with only 1 9036argument. iASL now allows both definitions. 9037 9038iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 9039zero- 9040length subtables when disassembling ACPI tables. Also fixed a couple of 9041errors where a full 16-bit table type field was not extracted from the 9042input 9043properly. 9044 9045acpisrc: Improve comment counting mechanism for generating source code 9046statistics. Count first and last lines of multi-line comments as 9047whitespace, 9048not comment lines. Handle Linux legal header in addition to standard 9049acpica 9050header. 9051 9052---------------------------------------- 9053 905429 July 2008. Summary of changes for version 20080729: 9055 90561) ACPI CA Core Subsystem: 9057 9058Fix a possible deadlock in the GPE dispatch. Remove call to 9059AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 9060attempt 9061to acquire the GPE lock but can deadlock since the GPE lock is already 9062held 9063at dispatch time. This code was introduced in version 20060831 as a 9064response 9065to Linux BZ 6881 and has since been removed from Linux. 9066 9067Add a function to dereference returned reference objects. Examines the 9068return 9069object from a call to AcpiEvaluateObject. Any Index or RefOf references 9070are 9071automatically dereferenced in an attempt to return something useful 9072(these 9073reference types cannot be converted into an external ACPI_OBJECT.) 9074Provides 9075MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 9076 9077x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 9078subtables for the MADT and one new subtable for the SRAT. Includes 9079disassembler and AcpiSrc support. Data from the Intel 64 Architecture 9080x2APIC 9081Specification, June 2008. 9082 9083Additional error checking for pathname utilities. Add error check after 9084all 9085calls to AcpiNsGetPathnameLength. Add status return from 9086AcpiNsBuildExternalPath and check after all calls. Add parameter 9087validation 9088to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 9089 9090Return status from the global init function AcpiUtGlobalInitialize. This 9091is 9092used by both the kernel subsystem and the utilities such as iASL 9093compiler. 9094The function could possibly fail when the caches are initialized. Yang 9095Yi. 9096 9097Add a function to decode reference object types to strings. Created for 9098improved error messages. 9099 9100Improve object conversion error messages. Better error messages during 9101object 9102conversion from internal to the external ACPI_OBJECT. Used for external 9103calls 9104to AcpiEvaluateObject. 9105 9106Example Code and Data Size: These are the sizes for the OS-independent 9107acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9108debug version of the code includes the debug output trace mechanism and 9109has a 9110much larger code and data size. 9111 9112 Previous Release: 9113 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9114 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9115 Current Release: 9116 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 9117 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 9118 91192) iASL Compiler/Disassembler and Tools: 9120 9121Debugger: fix a possible hang when evaluating non-methods. Fixes a 9122problem 9123introduced in version 20080701. If the object being evaluated (via 9124execute 9125command) is not a method, the debugger can hang while trying to obtain 9126non- 9127existent parameters. 9128 9129iASL: relax error for using reserved "_T_x" identifiers. These names can 9130appear in a disassembled ASL file if they were emitted by the original 9131compiler. Instead of issuing an error or warning and forcing the user to 9132manually change these names, issue a remark instead. 9133 9134iASL: error if named object created in while loop. Emit an error if any 9135named 9136object is created within a While loop. If allowed, this code will 9137generate 9138a 9139run-time error on the second iteration of the loop when an attempt is 9140made 9141to 9142create the same named object twice. ACPICA bugzilla 730. 9143 9144iASL: Support absolute pathnames for include files. Add support for 9145absolute 9146pathnames within the Include operator. previously, only relative 9147pathnames 9148were supported. 9149 9150iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 9151Descriptor. 9152The ACPI spec requires one interrupt minimum. BZ 423 9153 9154iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 9155Handles the case for the Interrupt Resource Descriptor where 9156the ResourceSource argument is omitted but ResourceSourceIndex 9157is present. Now leave room for the Index. BZ 426 9158 9159iASL: Prevent error message if CondRefOf target does not exist. Fixes 9160cases 9161where an error message is emitted if the target does not exist. BZ 516 9162 9163iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 9164(get ACPI tables on Windows). This was apparently broken in version 916520070919. 9166 9167AcpiXtract: Handle EOF while extracting data. Correctly handle the case 9168where 9169the EOF happens immediately after the last table in the input file. Print 9170completion message. Previously, no message was displayed in this case. 9171 9172---------------------------------------- 917301 July 2008. Summary of changes for version 20080701: 9174 91750) Git source tree / acpica.org 9176 9177Fixed a problem where a git-clone from http would not transfer the entire 9178source tree. 9179 91801) ACPI CA Core Subsystem: 9181 9182Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 9183enable bit. Now performs a read-change-write of the enable register 9184instead 9185of simply writing out the cached enable mask. This will prevent 9186inadvertent 9187enabling of GPEs if a rogue GPE is received during initialization (before 9188GPE 9189handlers are installed.) 9190 9191Implemented a copy for dynamically loaded tables. Previously, dynamically 9192loaded tables were simply mapped - but on some machines this memory is 9193corrupted after suspend. Now copy the table to a local buffer. For the 9194OpRegion case, added checksum verify. Use the table length from the table 9195header, not the region length. For the Buffer case, use the table length 9196also. Dennis Noordsij, Bob Moore. BZ 10734 9197 9198Fixed a problem where the same ACPI table could not be dynamically loaded 9199and 9200unloaded more than once. Without this change, a table cannot be loaded 9201again 9202once it has been loaded/unloaded one time. The current mechanism does not 9203unregister a table upon an unload. During a load, if the same table is 9204found, 9205this no longer returns an exception. BZ 722 9206 9207Fixed a problem where the wrong descriptor length was calculated for the 9208EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 9209EndTag 9210are calculated as 12 bytes long, but the actual length in the internal 9211descriptor is 16 because of the round-up to 8 on the 64-bit build. 9212Reported 9213by Linn Crosetto. BZ 728 9214 9215Fixed a possible memory leak in the Unload operator. The DdbHandle 9216returned 9217by Load() did not have its reference count decremented during unload, 9218leading 9219to a memory leak. Lin Ming. BZ 727 9220 9221Fixed a possible memory leak when deleting thermal/processor objects. Any 9222associated notify handlers (and objects) were not being deleted. Fiodor 9223Suietov. BZ 506 9224 9225Fixed the ordering of the ASCII names in the global mutex table to match 9226the 9227actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 9228only. 9229Vegard Nossum. BZ 726 9230 9231Enhanced the AcpiGetObjectInfo interface to return the number of required 9232arguments if the object is a control method. Added this call to the 9233debugger 9234so the proper number of default arguments are passed to a method. This 9235prevents a warning when executing methods from AcpiExec. 9236 9237Added a check for an invalid handle in AcpiGetObjectInfo. Return 9238AE_BAD_PARAMETER if input handle is invalid. BZ 474 9239 9240Fixed an extraneous warning from exconfig.c on the 64-bit build. 9241 9242Example Code and Data Size: These are the sizes for the OS-independent 9243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9244debug version of the code includes the debug output trace mechanism and 9245has a 9246much larger code and data size. 9247 9248 Previous Release: 9249 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9250 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9251 Current Release: 9252 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9253 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9254 92552) iASL Compiler/Disassembler and Tools: 9256 9257iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9258resource descriptor names. 9259 9260iASL: Detect invalid ASCII characters in input (windows version). Removed 9261the 9262"-CF" flag from the flex compile, enables correct detection of non-ASCII 9263characters in the input. BZ 441 9264 9265iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9266the 9267"result of operation not used" warning when the DDB handle returned from 9268LoadTable is not used. The warning is not needed. BZ 590 9269 9270AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9271method 9272to 9273pass address of table to the AML. Added option to disable OpRegion 9274simulation 9275to allow creation of an OpRegion with a real address that was passed to 9276_CFG. 9277All of this allows testing of the Load and Unload operators from 9278AcpiExec. 9279 9280Debugger: update tables command for unloaded tables. Handle unloaded 9281tables 9282and use the standard table header output routine. 9283 9284---------------------------------------- 928509 June 2008. Summary of changes for version 20080609: 9286 92871) ACPI CA Core Subsystem: 9288 9289Implemented a workaround for reversed _PRT entries. A significant number 9290of 9291BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9292change dynamically detects and repairs this problem. Provides 9293compatibility 9294with MS ACPI. BZ 6859 9295 9296Simplified the internal ACPI hardware interfaces to eliminate the locking 9297flag parameter from Register Read/Write. Added a new external interface, 9298AcpiGetRegisterUnlocked. 9299 9300Fixed a problem where the invocation of a GPE control method could hang. 9301This 9302was a regression introduced in 20080514. The new method argument count 9303validation mechanism can enter an infinite loop when a GPE method is 9304dispatched. Problem fixed by removing the obsolete code that passed GPE 9305block 9306information to the notify handler via the control method parameter 9307pointer. 9308 9309Fixed a problem where the _SST execution status was incorrectly returned 9310to 9311the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9312in 931320080514. _SST is optional and a NOT_FOUND exception should never be 9314returned. BZ 716 9315 9316Fixed a problem where a deleted object could be accessed from within the 9317AML 9318parser. This was a regression introduced in version 20080123 as a fix for 9319the 9320Unload operator. Lin Ming. BZ 10669 9321 9322Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9323operands 9324and eliminated the use of a negative index in a loop. Operands are now 9325displayed in the correct order, not backwards. This also fixes a 9326regression 9327introduced in 20080514 on 64-bit systems where the elimination of 9328ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9329715 9330 9331Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9332exit 9333path did not delete a locally allocated structure. 9334 9335Updated definitions for the DMAR and SRAT tables to synchronize with the 9336current specifications. Includes disassembler support. 9337 9338Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9339loop termination value was used. Loop terminated on iteration early, 9340missing 9341one mutex. Linn Crosetto 9342 9343Example Code and Data Size: These are the sizes for the OS-independent 9344acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9345debug version of the code includes the debug output trace mechanism and 9346has a 9347much larger code and data size. 9348 9349 Previous Release: 9350 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9351 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9352 Current Release: 9353 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9354 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9355 93562) iASL Compiler/Disassembler and Tools: 9357 9358Disassembler: Implemented support for EisaId() within _CID objects. Now 9359disassemble integer _CID objects back to EisaId invocations, including 9360multiple integers within _CID packages. Includes single-step support for 9361debugger also. 9362 9363Disassembler: Added support for DMAR and SRAT table definition changes. 9364 9365---------------------------------------- 936614 May 2008. Summary of changes for version 20080514: 9367 93681) ACPI CA Core Subsystem: 9369 9370Fixed a problem where GPEs were enabled too early during the ACPICA 9371initialization. This could lead to "handler not installed" errors on some 9372machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9373This 9374ensures that all operation regions and devices throughout the namespace 9375have 9376been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9377 9378Implemented a change to the enter sleep code. Moved execution of the _GTS 9379method to just before setting sleep enable bit. The execution was moved 9380from 9381AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9382immediately before the SLP_EN bit is set, as per the ACPI specification. 9383Luming Yu, BZ 1653. 9384 9385Implemented a fix to disable unknown GPEs (2nd version). Now always 9386disable 9387the GPE, even if ACPICA thinks that that it is already disabled. It is 9388possible that the AML or some other code has enabled the GPE unbeknownst 9389to 9390the ACPICA code. 9391 9392Fixed a problem with the Field operator where zero-length fields would 9393return 9394an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9395ASL 9396field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9397 9398Implemented a fix for the Load operator, now load the table at the 9399namespace 9400root. This reverts a change introduced in version 20071019. The table is 9401now 9402loaded at the namespace root even though this goes against the ACPI 9403specification. This provides compatibility with other ACPI 9404implementations. 9405The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 9406Ming. 9407 9408Fixed a problem where ACPICA would not Load() tables with unusual 9409signatures. 9410Now ignore ACPI table signature for Load() operator. Only "SSDT" is 9411acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 9412Therefore, signature validation is worthless. Apparently MS ACPI accepts 9413such 9414signatures, ACPICA must be compatible. BZ 10454. 9415 9416Fixed a possible negative array index in AcpiUtValidateException. Added 9417NULL 9418fields to the exception string arrays to eliminate a -1 subtraction on 9419the 9420SubStatus field. 9421 9422Updated the debug tracking macros to reduce overall code and data size. 9423Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 9424instead of pointers to static strings. Jan Beulich and Bob Moore. 9425 9426Implemented argument count checking in control method invocation via 9427AcpiEvaluateObject. Now emit an error if too few arguments, warning if 9428too 9429many. This applies only to extern programmatic control method execution, 9430not 9431method-to-method calls within the AML. Lin Ming. 9432 9433Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 9434no 9435longer needed, especially with the removal of 16-bit support. It was 9436replaced 9437mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 9438bit 9439on 944032/64-bit platforms is required. 9441 9442Added the C const qualifier for appropriate string constants -- mostly 9443MODULE_NAME and printf format strings. Jan Beulich. 9444 9445Example Code and Data Size: These are the sizes for the OS-independent 9446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9447debug version of the code includes the debug output trace mechanism and 9448has a 9449much larger code and data size. 9450 9451 Previous Release: 9452 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9453 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9454 Current Release: 9455 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9456 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9457 94582) iASL Compiler/Disassembler and Tools: 9459 9460Implemented ACPI table revision ID validation in the disassembler. Zero 9461is 9462always invalid. For DSDTs, the ID controls the interpreter integer width. 94631 9464means 32-bit and this is unusual. 2 or greater is 64-bit. 9465 9466---------------------------------------- 946721 March 2008. Summary of changes for version 20080321: 9468 94691) ACPI CA Core Subsystem: 9470 9471Implemented an additional change to the GPE support in order to suppress 9472spurious or stray GPEs. The AcpiEvDisableGpe function will now 9473permanently 9474disable incoming GPEs that are neither enabled nor disabled -- meaning 9475that 9476the GPE is unknown to the system. This should prevent future interrupt 9477floods 9478from that GPE. BZ 6217 (Zhang Rui) 9479 9480Fixed a problem where NULL package elements were not returned to the 9481AcpiEvaluateObject interface correctly. The element was simply ignored 9482instead of returning a NULL ACPI_OBJECT package element, potentially 9483causing 9484a buffer overflow and/or confusing the caller who expected a fixed number 9485of 9486elements. BZ 10132 (Lin Ming, Bob Moore) 9487 9488Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9489Dword, 9490Qword), Field, BankField, and IndexField operators when invoked from 9491inside 9492an executing control method. In this case, these operators created 9493namespace 9494nodes that were incorrectly left marked as permanent nodes instead of 9495temporary nodes. This could cause a problem if there is race condition 9496between an exiting control method and a running namespace walk. (Reported 9497by 9498Linn Crosetto) 9499 9500Fixed a problem where the CreateField and CreateXXXField operators would 9501incorrectly allow duplicate names (the name of the field) with no 9502exception 9503generated. 9504 9505Implemented several changes for Notify handling. Added support for new 9506Notify 9507values (ACPI 2.0+) and improved the Notify debug output. Notify on 9508PowerResource objects is no longer allowed, as per the ACPI 9509specification. 9510(Bob Moore, Zhang Rui) 9511 9512All Reference Objects returned via the AcpiEvaluateObject interface are 9513now 9514marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9515for 9516NULL objects - either NULL package elements or unresolved named 9517references. 9518 9519Fixed a problem where an extraneous debug message was produced for 9520package 9521objects (when debugging enabled). The message "Package List length larger 9522than NumElements count" is now produced in the correct case, and is now 9523an 9524error message rather than a debug message. Added a debug message for the 9525opposite case, where NumElements is larger than the Package List (the 9526package 9527will be padded out with NULL elements as per the ACPI spec.) 9528 9529Implemented several improvements for the output of the ASL "Debug" object 9530to 9531clarify and keep all data for a given object on one output line. 9532 9533Fixed two size calculation issues with the variable-length Start 9534Dependent 9535resource descriptor. 9536 9537Example Code and Data Size: These are the sizes for the OS-independent 9538acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9539debug version of the code includes the debug output trace mechanism and 9540has 9541a much larger code and data size. 9542 9543 Previous Release: 9544 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9545 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9546 Current Release: 9547 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9548 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9549 95502) iASL Compiler/Disassembler and Tools: 9551 9552Fixed a problem with the use of the Switch operator where execution of 9553the 9554containing method by multiple concurrent threads could cause an 9555AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9556actual Switch opcode, it must be simulated with local named temporary 9557variables and if/else pairs. The solution chosen was to mark any method 9558that 9559uses Switch as Serialized, thus preventing multiple thread entries. BZ 9560469. 9561 9562---------------------------------------- 956313 February 2008. Summary of changes for version 20080213: 9564 95651) ACPI CA Core Subsystem: 9566 9567Implemented another MS compatibility design change for GPE/Notify 9568handling. 9569GPEs are now cleared/enabled asynchronously to allow all pending notifies 9570to 9571complete first. It is expected that the OSL will queue the enable request 9572behind all pending notify requests (may require changes to the local host 9573OSL 9574in AcpiOsExecute). Alexey Starikovskiy. 9575 9576Fixed a problem where buffer and package objects passed as arguments to a 9577control method via the external AcpiEvaluateObject interface could cause 9578an 9579AE_AML_INTERNAL exception depending on the order and type of operators 9580executed by the target control method. 9581 9582Fixed a problem where resource descriptor size optimization could cause a 9583problem when a _CRS resource template is passed to a _SRS method. The 9584_SRS 9585resource template must use the same descriptors (with the same size) as 9586returned from _CRS. This change affects the following resource 9587descriptors: 9588IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 95899487) 9590 9591Fixed a problem where a CopyObject to RegionField, BankField, and 9592IndexField 9593objects did not perform an implicit conversion as it should. These types 9594must 9595retain their initial type permanently as per the ACPI specification. 9596However, 9597a CopyObject to all other object types should not perform an implicit 9598conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9599 9600Fixed a problem with the AcpiGetDevices interface where the mechanism to 9601match device CIDs did not examine the entire list of available CIDs, but 9602instead aborted on the first non-matching CID. Andrew Patterson. 9603 9604Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9605was 9606inadvertently changed to return a 16-bit value instead of a 32-bit value, 9607truncating the upper dword of a 64-bit value. This macro is only used to 9608display debug output, so no incorrect calculations were made. Also, 9609reimplemented the macro so that a 64-bit shift is not performed by 9610inefficient compilers. 9611 9612Added missing va_end statements that should correspond with each va_start 9613statement. 9614 9615Example Code and Data Size: These are the sizes for the OS-independent 9616acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9617debug version of the code includes the debug output trace mechanism and 9618has 9619a much larger code and data size. 9620 9621 Previous Release: 9622 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9623 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9624 Current Release: 9625 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9626 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9627 96282) iASL Compiler/Disassembler and Tools: 9629 9630Implemented full disassembler support for the following new ACPI tables: 9631BERT, EINJ, and ERST. Implemented partial disassembler support for the 9632complicated HEST table. These tables support the Windows Hardware Error 9633Architecture (WHEA). 9634 9635---------------------------------------- 963623 January 2008. Summary of changes for version 20080123: 9637 96381) ACPI CA Core Subsystem: 9639 9640Added the 2008 copyright to all module headers and signons. This affects 9641virtually every file in the ACPICA core subsystem, the iASL compiler, and 9642the tools/utilities. 9643 9644Fixed a problem with the SizeOf operator when used with Package and 9645Buffer 9646objects. These objects have deferred execution for some arguments, and 9647the 9648execution is now completed before the SizeOf is executed. This problem 9649caused 9650unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9651BZ 96529558 9653 9654Implemented an enhancement to the interpreter "slack mode". In the 9655absence 9656of 9657an explicit return or an implicitly returned object from the last 9658executed 9659opcode, a control method will now implicitly return an integer of value 0 9660for 9661Microsoft compatibility. (Lin Ming) BZ 392 9662 9663Fixed a problem with the Load operator where an exception was not 9664returned 9665in 9666the case where the table is already loaded. (Lin Ming) BZ 463 9667 9668Implemented support for the use of DDBHandles as an Indexed Reference, as 9669per 9670the ACPI spec. (Lin Ming) BZ 486 9671 9672Implemented support for UserTerm (Method invocation) for the Unload 9673operator 9674as per the ACPI spec. (Lin Ming) BZ 580 9675 9676Fixed a problem with the LoadTable operator where the OemId and 9677OemTableId 9678input strings could cause unexpected failures if they were shorter than 9679the 9680maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9681 9682Implemented support for UserTerm (Method invocation) for the Unload 9683operator 9684as per the ACPI spec. (Lin Ming) BZ 580 9685 9686Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9687HEST, 9688IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9689 9690Example Code and Data Size: These are the sizes for the OS-independent 9691acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9692debug version of the code includes the debug output trace mechanism and 9693has 9694a much larger code and data size. 9695 9696 Previous Release: 9697 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9698 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9699 Current Release: 9700 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9701 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9702 97032) iASL Compiler/Disassembler and Tools: 9704 9705Implemented support in the disassembler for checksum validation on 9706incoming 9707binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9708table 9709header dump at the start of the disassembly. 9710 9711Implemented additional debugging information in the namespace listing 9712file 9713created during compilation. In addition to the namespace hierarchy, the 9714full 9715pathname to each namespace object is displayed. 9716 9717Fixed a problem with the disassembler where invalid ACPI tables could 9718cause 9719faults or infinite loops. 9720 9721Fixed an unexpected parse error when using the optional "parameter types" 9722list in a control method declaration. (Lin Ming) BZ 397 9723 9724Fixed a problem where two External declarations with the same name did 9725not 9726cause an error (Lin Ming) BZ 509 9727 9728Implemented support for full TermArgs (adding Argx, Localx and method 9729invocation) for the ParameterData parameter to the LoadTable operator. 9730(Lin 9731Ming) BZ 583,587 9732 9733---------------------------------------- 973419 December 2007. Summary of changes for version 20071219: 9735 97361) ACPI CA Core Subsystem: 9737 9738Implemented full support for deferred execution for the TermArg string 9739arguments for DataTableRegion. This enables forward references and full 9740operand resolution for the three string arguments. Similar to 9741OperationRegion 9742deferred argument execution.) Lin Ming. BZ 430 9743 9744Implemented full argument resolution support for the BankValue argument 9745to 9746BankField. Previously, only constants were supported, now any TermArg may 9747be 9748used. Lin Ming BZ 387, 393 9749 9750Fixed a problem with AcpiGetDevices where the search of a branch of the 9751device tree could be terminated prematurely. In accordance with the ACPI 9752specification, the search down the current branch is terminated if a 9753device 9754is both not present and not functional (instead of just not present.) 9755Yakui 9756Zhao. 9757 9758Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9759if 9760the underlying AML code changed the GPE enable registers. Now, any 9761unknown 9762incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9763disabled 9764instead of simply ignored. Rui Zhang. 9765 9766Fixed a problem with Index Fields where the Index register was 9767incorrectly 9768limited to a maximum of 32 bits. Now any size may be used. 9769 9770Fixed a couple memory leaks associated with "implicit return" objects 9771when 9772the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9773 9774Example Code and Data Size: These are the sizes for the OS-independent 9775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9776debug version of the code includes the debug output trace mechanism and 9777has 9778a much larger code and data size. 9779 9780 Previous Release: 9781 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9782 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9783 Current Release: 9784 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9785 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9786 9787---------------------------------------- 978814 November 2007. Summary of changes for version 20071114: 9789 97901) ACPI CA Core Subsystem: 9791 9792Implemented event counters for each of the Fixed Events, the ACPI SCI 9793(interrupt) itself, and control methods executed. Named 9794AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9795These 9796should be useful for debugging and statistics. 9797 9798Implemented a new external interface, AcpiGetStatistics, to retrieve the 9799contents of the various event counters. Returns the current values for 9800AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9801AcpiMethodCount. The interface can be expanded in the future if new 9802counters 9803are added. Device drivers should use this interface rather than access 9804the 9805counters directly. 9806 9807Fixed a problem with the FromBCD and ToBCD operators. With some 9808compilers, 9809the ShortDivide function worked incorrectly, causing problems with the 9810BCD 9811functions with large input values. A truncation from 64-bit to 32-bit 9812inadvertently occurred. Internal BZ 435. Lin Ming 9813 9814Fixed a problem with Index references passed as method arguments. 9815References 9816passed as arguments to control methods were dereferenced immediately 9817(before 9818control was passed to the called method). The references are now 9819correctly 9820passed directly to the called method. BZ 5389. Lin Ming 9821 9822Fixed a problem with CopyObject used in conjunction with the Index 9823operator. 9824The reference was incorrectly dereferenced before the copy. The reference 9825is 9826now correctly copied. BZ 5391. Lin Ming 9827 9828Fixed a problem with Control Method references within Package objects. 9829These 9830references are now correctly generated. This completes the package 9831construction overhaul that began in version 20071019. 9832 9833Example Code and Data Size: These are the sizes for the OS-independent 9834acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9835debug version of the code includes the debug output trace mechanism and 9836has 9837a much larger code and data size. 9838 9839 Previous Release: 9840 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9841 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9842 Current Release: 9843 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9844 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9845 9846 98472) iASL Compiler/Disassembler and Tools: 9848 9849The AcpiExec utility now installs handlers for all of the predefined 9850Operation Region types. New types supported are: PCI_Config, CMOS, and 9851PCIBARTarget. 9852 9853Fixed a problem with the 64-bit version of AcpiExec where the extended 9854(64- 9855bit) address fields for the DSDT and FACS within the FADT were not being 9856used, causing truncation of the upper 32-bits of these addresses. Lin 9857Ming 9858and Bob Moore 9859 9860---------------------------------------- 986119 October 2007. Summary of changes for version 20071019: 9862 98631) ACPI CA Core Subsystem: 9864 9865Fixed a problem with the Alias operator when the target of the alias is a 9866named ASL operator that opens a new scope -- Scope, Device, 9867PowerResource, 9868Processor, and ThermalZone. In these cases, any children of the original 9869operator could not be accessed via the alias, potentially causing 9870unexpected 9871AE_NOT_FOUND exceptions. (BZ 9067) 9872 9873Fixed a problem with the Package operator where all named references were 9874created as object references and left otherwise unresolved. According to 9875the 9876ACPI specification, a Package can only contain Data Objects or references 9877to 9878control methods. The implication is that named references to Data Objects 9879(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9880immediately upon package creation. This is the approach taken with this 9881change. References to all other named objects (Methods, Devices, Scopes, 9882etc.) are all now properly created as reference objects. (BZ 5328) 9883 9884Reverted a change to Notify handling that was introduced in version 988520070508. This version changed the Notify handling from asynchronous to 9886fully synchronous (Device driver Notify handling with respect to the 9887Notify 9888ASL operator). It was found that this change caused more problems than it 9889solved and was removed by most users. 9890 9891Fixed a problem with the Increment and Decrement operators where the type 9892of 9893the target object could be unexpectedly and incorrectly changed. (BZ 353) 9894Lin Ming. 9895 9896Fixed a problem with the Load and LoadTable operators where the table 9897location within the namespace was ignored. Instead, the table was always 9898loaded into the root or current scope. Lin Ming. 9899 9900Fixed a problem with the Load operator when loading a table from a buffer 9901object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9902 9903Fixed a problem with the Debug object where a store of a DdbHandle 9904reference 9905object to the Debug object could cause a fault. 9906 9907Added a table checksum verification for the Load operator, in the case 9908where 9909the load is from a buffer. (BZ 578). 9910 9911Implemented additional parameter validation for the LoadTable operator. 9912The 9913length of the input strings SignatureString, OemIdString, and OemTableId 9914are 9915now checked for maximum lengths. (BZ 582) Lin Ming. 9916 9917Example Code and Data Size: These are the sizes for the OS-independent 9918acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9919debug version of the code includes the debug output trace mechanism and 9920has 9921a much larger code and data size. 9922 9923 Previous Release: 9924 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9925 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9926 Current Release: 9927 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9928 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9929 9930 99312) iASL Compiler/Disassembler: 9932 9933Fixed a problem where if a single file was specified and the file did not 9934exist, no error message was emitted. (Introduced with wildcard support in 9935version 20070917.) 9936 9937---------------------------------------- 993819 September 2007. Summary of changes for version 20070919: 9939 99401) ACPI CA Core Subsystem: 9941 9942Designed and implemented new external interfaces to install and remove 9943handlers for ACPI table-related events. Current events that are defined 9944are 9945LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9946they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9947AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9948 9949Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9950(acpi_serialized option on Linux) could cause some systems to hang during 9951initialization. (Bob Moore) BZ 8171 9952 9953Fixed a problem where objects of certain types (Device, ThermalZone, 9954Processor, PowerResource) can be not found if they are declared and 9955referenced from within the same control method (Lin Ming) BZ 341 9956 9957Example Code and Data Size: These are the sizes for the OS-independent 9958acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9959debug version of the code includes the debug output trace mechanism and 9960has 9961a much larger code and data size. 9962 9963 Previous Release: 9964 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9965 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9966 Current Release: 9967 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9968 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9969 9970 99712) iASL Compiler/Disassembler: 9972 9973Implemented support to allow multiple files to be compiled/disassembled 9974in 9975a 9976single invocation. This includes command line wildcard support for both 9977the 9978Windows and Unix versions of the compiler. This feature simplifies the 9979disassembly and compilation of multiple ACPI tables in a single 9980directory. 9981 9982---------------------------------------- 998308 May 2007. Summary of changes for version 20070508: 9984 99851) ACPI CA Core Subsystem: 9986 9987Implemented a Microsoft compatibility design change for the handling of 9988the 9989Notify AML operator. Previously, notify handlers were dispatched and 9990executed completely asynchronously in a deferred thread. The new design 9991still executes the notify handlers in a different thread, but the 9992original 9993thread that executed the Notify() now waits at a synchronization point 9994for 9995the notify handler to complete. Some machines depend on a synchronous 9996Notify 9997operator in order to operate correctly. 9998 9999Implemented support to allow Package objects to be passed as method 10000arguments to the external AcpiEvaluateObject interface. Previously, this 10001would return the AE_NOT_IMPLEMENTED exception. This feature had not been 10002implemented since there were no reserved control methods that required it 10003until recently. 10004 10005Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 10006that 10007contained invalid non-zero values in reserved fields could cause later 10008failures because these fields have meaning in later revisions of the 10009FADT. 10010For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 10011fields 10012are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 10013 10014Fixed a problem where the Global Lock handle was not properly updated if 10015a 10016thread that acquired the Global Lock via executing AML code then 10017attempted 10018to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 10019Joe 10020Liu. 10021 10022Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 10023could be corrupted if the interrupt being removed was at the head of the 10024list. Reported by Linn Crosetto. 10025 10026Example Code and Data Size: These are the sizes for the OS-independent 10027acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10028debug version of the code includes the debug output trace mechanism and 10029has 10030a much larger code and data size. 10031 10032 Previous Release: 10033 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10034 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10035 Current Release: 10036 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 10037 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 10038 10039---------------------------------------- 1004020 March 2007. Summary of changes for version 20070320: 10041 100421) ACPI CA Core Subsystem: 10043 10044Implemented a change to the order of interpretation and evaluation of AML 10045operand objects within the AML interpreter. The interpreter now evaluates 10046operands in the order that they appear in the AML stream (and the 10047corresponding ASL code), instead of in the reverse order (after the 10048entire 10049operand list has been parsed). The previous behavior caused several 10050subtle 10051incompatibilities with the Microsoft AML interpreter as well as being 10052somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 10053 10054Implemented a change to the ACPI Global Lock support. All interfaces to 10055the 10056global lock now allow the same thread to acquire the lock multiple times. 10057This affects the AcpiAcquireGlobalLock external interface to the global 10058lock 10059as well as the internal use of the global lock to support AML fields -- a 10060control method that is holding the global lock can now simultaneously 10061access 10062AML fields that require global lock protection. Previously, in both 10063cases, 10064this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 10065to 10066AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 10067Controller. There is no change to the behavior of the AML Acquire 10068operator, 10069as this can already be used to acquire a mutex multiple times by the same 10070thread. BZ 8066. With assistance from Alexey Starikovskiy. 10071 10072Fixed a problem where invalid objects could be referenced in the AML 10073Interpreter after error conditions. During operand evaluation, ensure 10074that 10075the internal "Return Object" field is cleared on error and only valid 10076pointers are stored there. Caused occasional access to deleted objects 10077that 10078resulted in "large reference count" warning messages. Valery Podrezov. 10079 10080Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 10081on 10082deeply nested control method invocations. BZ 7873, local BZ 487. Valery 10083Podrezov. 10084 10085Fixed an internal problem with the handling of result objects on the 10086interpreter result stack. BZ 7872. Valery Podrezov. 10087 10088Removed obsolete code that handled the case where AML_NAME_OP is the 10089target 10090of a reference (Reference.Opcode). This code was no longer necessary. BZ 100917874. Valery Podrezov. 10092 10093Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 10094was 10095a 10096remnant from the previously discontinued 16-bit support. 10097 10098Example Code and Data Size: These are the sizes for the OS-independent 10099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10100debug version of the code includes the debug output trace mechanism and 10101has 10102a much larger code and data size. 10103 10104 Previous Release: 10105 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10106 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10107 Current Release: 10108 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10109 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 10110 10111---------------------------------------- 1011226 January 2007. Summary of changes for version 20070126: 10113 101141) ACPI CA Core Subsystem: 10115 10116Added the 2007 copyright to all module headers and signons. This affects 10117virtually every file in the ACPICA core subsystem, the iASL compiler, and 10118the utilities. 10119 10120Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 10121during a table load. A bad pointer was passed in the case where the DSDT 10122is 10123overridden, causing a fault in this case. 10124 10125Example Code and Data Size: These are the sizes for the OS-independent 10126acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10127debug version of the code includes the debug output trace mechanism and 10128has 10129a much larger code and data size. 10130 10131 Previous Release: 10132 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10133 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10134 Current Release: 10135 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10136 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10137 10138---------------------------------------- 1013915 December 2006. Summary of changes for version 20061215: 10140 101411) ACPI CA Core Subsystem: 10142 10143Support for 16-bit ACPICA has been completely removed since it is no 10144longer 10145necessary and it clutters the code. All 16-bit macros, types, and 10146conditional compiles have been removed, cleaning up and simplifying the 10147code 10148across the entire subsystem. DOS support is no longer needed since the 10149bootable Linux firmware kit is now available. 10150 10151The handler for the Global Lock is now removed during AcpiTerminate to 10152enable a clean subsystem restart, via the implementation of the 10153AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 10154HP) 10155 10156Implemented enhancements to the multithreading support within the 10157debugger 10158to enable improved multithreading debugging and evaluation of the 10159subsystem. 10160(Valery Podrezov) 10161 10162Debugger: Enhanced the Statistics/Memory command to emit the total 10163(maximum) 10164memory used during the execution, as well as the maximum memory consumed 10165by 10166each of the various object types. (Valery Podrezov) 10167 10168Example Code and Data Size: These are the sizes for the OS-independent 10169acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10170debug version of the code includes the debug output trace mechanism and 10171has 10172a much larger code and data size. 10173 10174 Previous Release: 10175 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10176 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10177 Current Release: 10178 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 10179 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 10180 10181 101822) iASL Compiler/Disassembler and Tools: 10183 10184AcpiExec: Implemented a new option (-m) to display full memory use 10185statistics upon subsystem/program termination. (Valery Podrezov) 10186 10187---------------------------------------- 1018809 November 2006. Summary of changes for version 20061109: 10189 101901) ACPI CA Core Subsystem: 10191 10192Optimized the Load ASL operator in the case where the source operand is 10193an 10194operation region. Simply map the operation region memory, instead of 10195performing a bytewise read. (Region must be of type SystemMemory, see 10196below.) 10197 10198Fixed the Load ASL operator for the case where the source operand is a 10199region field. A buffer object is also allowed as the source operand. BZ 10200480 10201 10202Fixed a problem where the Load ASL operator allowed the source operand to 10203be 10204an operation region of any type. It is now restricted to regions of type 10205SystemMemory, as per the ACPI specification. BZ 481 10206 10207Additional cleanup and optimizations for the new Table Manager code. 10208 10209AcpiEnable will now fail if all of the required ACPI tables are not 10210loaded 10211(FADT, FACS, DSDT). BZ 477 10212 10213Added #pragma pack(8/4) to acobject.h to ensure that the structures in 10214this 10215header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 10216manually optimized to be aligned and will not work if it is byte-packed. 10217 10218Example Code and Data Size: These are the sizes for the OS-independent 10219acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10220debug version of the code includes the debug output trace mechanism and 10221has 10222a much larger code and data size. 10223 10224 Previous Release: 10225 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10226 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10227 Current Release: 10228 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 10229 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 10230 10231 102322) iASL Compiler/Disassembler and Tools: 10233 10234Fixed a problem where the presence of the _OSI predefined control method 10235within complex expressions could cause an internal compiler error. 10236 10237AcpiExec: Implemented full region support for multiple address spaces. 10238SpaceId is now part of the REGION object. BZ 429 10239 10240---------------------------------------- 1024111 October 2006. Summary of changes for version 20061011: 10242 102431) ACPI CA Core Subsystem: 10244 10245Completed an AML interpreter performance enhancement for control method 10246execution. Previously a 2-pass parse/execution, control methods are now 10247completely parsed and executed in a single pass. This improves overall 10248interpreter performance by ~25%, reduces code size, and reduces CPU stack 10249use. (Valery Podrezov + interpreter changes in version 20051202 that 10250eliminated namespace loading during the pass one parse.) 10251 10252Implemented _CID support for PCI Root Bridge detection. If the _HID does 10253not 10254match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10255now 10256obtained and also checked for an ID match. 10257 10258Implemented additional support for the PCI _ADR execution: upsearch until 10259a 10260device scope is found before executing _ADR. This allows PCI_Config 10261operation regions to be declared locally within control methods 10262underneath 10263PCI device objects. 10264 10265Fixed a problem with a possible race condition between threads executing 10266AcpiWalkNamespace and the AML interpreter. This condition was removed by 10267modifying AcpiWalkNamespace to (by default) ignore all temporary 10268namespace 10269entries created during any concurrent control method execution. An 10270additional namespace race condition is known to exist between 10271AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10272investigation. 10273 10274Restructured the AML ParseLoop function, breaking it into several 10275subfunctions in order to reduce CPU stack use and improve 10276maintainability. 10277(Mikhail Kouzmich) 10278 10279AcpiGetHandle: Fix for parameter validation to detect invalid 10280combinations 10281of prefix handle and pathname. BZ 478 10282 10283Example Code and Data Size: These are the sizes for the OS-independent 10284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10285debug version of the code includes the debug output trace mechanism and 10286has 10287a much larger code and data size. 10288 10289 Previous Release: 10290 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10291 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10292 Current Release: 10293 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10294 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10295 102962) iASL Compiler/Disassembler and Tools: 10297 10298Ported the -g option (get local ACPI tables) to the new ACPICA Table 10299Manager 10300to restore original behavior. 10301 10302---------------------------------------- 1030327 September 2006. Summary of changes for version 20060927: 10304 103051) ACPI CA Core Subsystem: 10306 10307Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10308These functions now use a spinlock for mutual exclusion and the interrupt 10309level indication flag is not needed. 10310 10311Fixed a problem with the Global Lock where the lock could appear to be 10312obtained before it is actually obtained. The global lock semaphore was 10313inadvertently created with one unit instead of zero units. (BZ 464) 10314Fiodor 10315Suietov. 10316 10317Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10318during 10319a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10320 10321Example Code and Data Size: These are the sizes for the OS-independent 10322acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10323debug version of the code includes the debug output trace mechanism and 10324has 10325a much larger code and data size. 10326 10327 Previous Release: 10328 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10329 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10330 Current Release: 10331 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10332 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10333 10334 103352) iASL Compiler/Disassembler and Tools: 10336 10337Fixed a compilation problem with the pre-defined Resource Descriptor 10338field 10339names where an "object does not exist" error could be incorrectly 10340generated 10341if the parent ResourceTemplate pathname places the template within a 10342different namespace scope than the current scope. (BZ 7212) 10343 10344Fixed a problem where the compiler could hang after syntax errors 10345detected 10346in an ElseIf construct. (BZ 453) 10347 10348Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10349operator. An incorrect output filename was produced when this parameter 10350was 10351a null string (""). Now, the original input filename is used as the AML 10352output filename, with an ".aml" extension. 10353 10354Implemented a generic batch command mode for the AcpiExec utility 10355(execute 10356any AML debugger command) (Valery Podrezov). 10357 10358---------------------------------------- 1035912 September 2006. Summary of changes for version 20060912: 10360 103611) ACPI CA Core Subsystem: 10362 10363Enhanced the implementation of the "serialized mode" of the interpreter 10364(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10365specified, instead of creating a serialization semaphore per control 10366method, 10367the interpreter lock is simply no longer released before a blocking 10368operation during control method execution. This effectively makes the AML 10369Interpreter single-threaded. The overhead of a semaphore per-method is 10370eliminated. 10371 10372Fixed a regression where an error was no longer emitted if a control 10373method 10374attempts to create 2 objects of the same name. This once again returns 10375AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10376that 10377will dynamically serialize the control method to possible prevent future 10378errors. (BZ 440) 10379 10380Integrated a fix for a problem with PCI Express HID detection in the PCI 10381Config Space setup procedure. (BZ 7145) 10382 10383Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10384AcpiHwInitialize function - the FADT registers are now validated when the 10385table is loaded. 10386 10387Added two new warnings during FADT verification - 1) if the FADT is 10388larger 10389than the largest known FADT version, and 2) if there is a mismatch 10390between 10391a 1039232-bit block address and the 64-bit X counterpart (when both are non- 10393zero.) 10394 10395Example Code and Data Size: These are the sizes for the OS-independent 10396acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10397debug version of the code includes the debug output trace mechanism and 10398has 10399a much larger code and data size. 10400 10401 Previous Release: 10402 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10403 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10404 Current Release: 10405 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10406 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10407 10408 104092) iASL Compiler/Disassembler and Tools: 10410 10411Fixed a problem with the implementation of the Switch() operator where 10412the 10413temporary variable was declared too close to the actual Switch, instead 10414of 10415at method level. This could cause a problem if the Switch() operator is 10416within a while loop, causing an error on the second iteration. (BZ 460) 10417 10418Disassembler - fix for error emitted for unknown type for target of scope 10419operator. Now, ignore it and continue. 10420 10421Disassembly of an FADT now verifies the input FADT and reports any errors 10422found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 10423 10424Disassembly of raw data buffers with byte initialization data now 10425prefixes 10426each output line with the current buffer offset. 10427 10428Disassembly of ASF! table now includes all variable-length data fields at 10429the end of some of the subtables. 10430 10431The disassembler now emits a comment if a buffer appears to be a 10432ResourceTemplate, but cannot be disassembled as such because the EndTag 10433does 10434not appear at the very end of the buffer. 10435 10436AcpiExec - Added the "-t" command line option to enable the serialized 10437mode 10438of the AML interpreter. 10439 10440---------------------------------------- 1044131 August 2006. Summary of changes for version 20060831: 10442 104431) ACPI CA Core Subsystem: 10444 10445Miscellaneous fixes for the Table Manager: 10446- Correctly initialize internal common FADT for all 64-bit "X" fields 10447- Fixed a couple table mapping issues during table load 10448- Fixed a couple alignment issues for IA64 10449- Initialize input array to zero in AcpiInitializeTables 10450- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 10451AcpiGetTableByIndex 10452 10453Change for GPE support: when a "wake" GPE is received, all wake GPEs are 10454now 10455immediately disabled to prevent the waking GPE from firing again and to 10456prevent other wake GPEs from interrupting the wake process. 10457 10458Added the AcpiGpeCount global that tracks the number of processed GPEs, 10459to 10460be used for debugging systems with a large number of ACPI interrupts. 10461 10462Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10463both the ACPICA headers and the disassembler. 10464 10465Example Code and Data Size: These are the sizes for the OS-independent 10466acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10467debug version of the code includes the debug output trace mechanism and 10468has 10469a much larger code and data size. 10470 10471 Previous Release: 10472 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10473 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10474 Current Release: 10475 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10476 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10477 10478 104792) iASL Compiler/Disassembler and Tools: 10480 10481Disassembler support for the DMAR ACPI table. 10482 10483---------------------------------------- 1048423 August 2006. Summary of changes for version 20060823: 10485 104861) ACPI CA Core Subsystem: 10487 10488The Table Manager component has been completely redesigned and 10489reimplemented. The new design is much simpler, and reduces the overall 10490code 10491and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10492is 10493now possible to obtain the ACPI tables very early during kernel 10494initialization, even before dynamic memory management is initialized. 10495(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10496 10497Obsolete ACPICA interfaces: 10498 10499- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10500init 10501time). 10502- AcpiLoadTable: Not needed. 10503- AcpiUnloadTable: Not needed. 10504 10505New ACPICA interfaces: 10506 10507- AcpiInitializeTables: Must be called before the table manager can be 10508used. 10509- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10510allocated memory after it becomes available. 10511- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10512tables 10513in the RSDT/XSDT. 10514 10515Other ACPICA changes: 10516 10517- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10518Use 10519AcpiOsUnmapMemory to free this mapping. 10520- AcpiGetTable returns the actual mapped table. The mapping is managed 10521internally and must not be deleted by the caller. Use of this interface 10522causes no additional dynamic memory allocation. 10523- AcpiFindRootPointer: Support for physical addressing has been 10524eliminated, 10525it appeared to be unused. 10526- The interface to AcpiOsMapMemory has changed to be consistent with the 10527other allocation interfaces. 10528- The interface to AcpiOsGetRootPointer has changed to eliminate 10529unnecessary 10530parameters. 10531- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1053264- 10533bit platforms. Was previously 64 bits on all platforms. 10534- The interface to the ACPI Global Lock acquire/release macros have 10535changed 10536slightly since ACPICA no longer keeps a local copy of the FACS with a 10537constructed pointer to the actual global lock. 10538 10539Porting to the new table manager: 10540 10541- AcpiInitializeTables: Must be called once, and can be called anytime 10542during the OS initialization process. It allows the host to specify an 10543area 10544of memory to be used to store the internal version of the RSDT/XSDT (root 10545table). This allows the host to access ACPI tables before memory 10546management 10547is initialized and running. 10548- AcpiReallocateRootTable: Can be called after memory management is 10549running 10550to copy the root table to a dynamically allocated array, freeing up the 10551scratch memory specified in the call to AcpiInitializeTables. 10552- AcpiSubsystemInitialize: This existing interface is independent of the 10553Table Manager, and does not have to be called before the Table Manager 10554can 10555be used, it only must be called before the rest of ACPICA can be used. 10556- ACPI Tables: Some changes have been made to the names and structure of 10557the 10558actbl.h and actbl1.h header files and may require changes to existing 10559code. 10560For example, bitfields have been completely removed because of their lack 10561of 10562portability across C compilers. 10563- Update interfaces to the Global Lock acquire/release macros if local 10564versions are used. (see acwin.h) 10565 10566Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10567 10568New files: tbfind.c 10569 10570Example Code and Data Size: These are the sizes for the OS-independent 10571acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10572debug version of the code includes the debug output trace mechanism and 10573has 10574a much larger code and data size. 10575 10576 Previous Release: 10577 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10578 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10579 Current Release: 10580 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10581 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10582 10583 105842) iASL Compiler/Disassembler and Tools: 10585 10586No changes for this release. 10587 10588---------------------------------------- 1058921 July 2006. Summary of changes for version 20060721: 10590 105911) ACPI CA Core Subsystem: 10592 10593The full source code for the ASL test suite used to validate the iASL 10594compiler and the ACPICA core subsystem is being released with the ACPICA 10595source for the first time. The source is contained in a separate package 10596and 10597consists of over 1100 files that exercise all ASL/AML operators. The 10598package 10599should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10600Fiodor 10601Suietov) 10602 10603Completed a new design and implementation for support of the ACPI Global 10604Lock. On the OS side, the global lock is now treated as a standard AML 10605mutex. Previously, multiple OS threads could "acquire" the global lock 10606simultaneously. However, this could cause the BIOS to be starved out of 10607the 10608lock - especially in cases such as the Embedded Controller driver where 10609there is a tight coupling between the OS and the BIOS. 10610 10611Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10612The Global Lock interrupt handler no longer queues the execution of a 10613separate thread to signal the global lock semaphore. Instead, the 10614semaphore 10615is signaled directly from the interrupt handler. 10616 10617Implemented support within the AML interpreter for package objects that 10618contain a larger AML length (package list length) than the package 10619element 10620count. In this case, the length of the package is truncated to match the 10621package element count. Some BIOS code apparently modifies the package 10622length 10623on the fly, and this change supports this behavior. Provides 10624compatibility 10625with the MS AML interpreter. (With assistance from Fiodor Suietov) 10626 10627Implemented a temporary fix for the BankValue parameter of a Bank Field 10628to 10629support all constant values, now including the Zero and One opcodes. 10630Evaluation of this parameter must eventually be converted to a full 10631TermArg 10632evaluation. A not-implemented error is now returned (temporarily) for 10633non- 10634constant values for this parameter. 10635 10636Fixed problem reports (Fiodor Suietov) integrated: 10637- Fix for premature object deletion after CopyObject on Operation Region 10638(BZ 10639350) 10640 10641Example Code and Data Size: These are the sizes for the OS-independent 10642acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10643debug version of the code includes the debug output trace mechanism and 10644has 10645a much larger code and data size. 10646 10647 Previous Release: 10648 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10649 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10650 Current Release: 10651 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10652 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10653 10654 106552) iASL Compiler/Disassembler and Tools: 10656 10657No changes for this release. 10658 10659---------------------------------------- 1066007 July 2006. Summary of changes for version 20060707: 10661 106621) ACPI CA Core Subsystem: 10663 10664Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10665that do not allow the initialization of address pointers within packed 10666structures - even though the hardware itself may support misaligned 10667transfers. Some of the debug data structures are packed by default to 10668minimize size. 10669 10670Added an error message for the case where AcpiOsGetThreadId() returns 10671zero. 10672A non-zero value is required by the core ACPICA code to ensure the proper 10673operation of AML mutexes and recursive control methods. 10674 10675The DSDT is now the only ACPI table that determines whether the AML 10676interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10677but 10678the hooks for per-table 32/64 switching have been removed from the code. 10679A 10680clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10681 10682Fixed a possible leak of an OwnerID in the error path of 10683AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10684deletion to a single place in AcpiTbUninstallTable to correct possible 10685leaks 10686when using the AcpiTbDeleteTablesByType interface (with assistance from 10687Lance Ortiz.) 10688 10689Fixed a problem with Serialized control methods where the semaphore 10690associated with the method could be over-signaled after multiple method 10691invocations. 10692 10693Fixed two issues with the locking of the internal namespace data 10694structure. 10695Both the Unload() operator and AcpiUnloadTable interface now lock the 10696namespace during the namespace deletion associated with the table unload 10697(with assistance from Linn Crosetto.) 10698 10699Fixed problem reports (Valery Podrezov) integrated: 10700- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10701 10702Fixed problem reports (Fiodor Suietov) integrated: 10703- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10704- On Address Space handler deletion, needless deactivation call (BZ 374) 10705- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10706375) 10707- Possible memory leak, Notify sub-objects of Processor, Power, 10708ThermalZone 10709(BZ 376) 10710- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10711- Minimum Length of RSDT should be validated (BZ 379) 10712- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10713Handler (BZ (380) 10714- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10715loaded 10716(BZ 381) 10717 10718Example Code and Data Size: These are the sizes for the OS-independent 10719acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10720debug version of the code includes the debug output trace mechanism and 10721has 10722a much larger code and data size. 10723 10724 Previous Release: 10725 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10726 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10727 Current Release: 10728 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10729 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10730 10731 107322) iASL Compiler/Disassembler and Tools: 10733 10734Fixed problem reports: 10735Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10736436) 10737 10738---------------------------------------- 1073923 June 2006. Summary of changes for version 20060623: 10740 107411) ACPI CA Core Subsystem: 10742 10743Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10744allows the type to be customized to the host OS for improved efficiency 10745(since a spinlock is usually a very small object.) 10746 10747Implemented support for "ignored" bits in the ACPI registers. According 10748to 10749the ACPI specification, these bits should be preserved when writing the 10750registers via a read/modify/write cycle. There are 3 bits preserved in 10751this 10752manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10753 10754Implemented the initial deployment of new OSL mutex interfaces. Since 10755some 10756host operating systems have separate mutex and semaphore objects, this 10757feature was requested. The base code now uses mutexes (and the new mutex 10758interfaces) wherever a binary semaphore was used previously. However, for 10759the current release, the mutex interfaces are defined as macros to map 10760them 10761to the existing semaphore interfaces. Therefore, no OSL changes are 10762required 10763at this time. (See acpiosxf.h) 10764 10765Fixed several problems with the support for the control method SyncLevel 10766parameter. The SyncLevel now works according to the ACPI specification 10767and 10768in concert with the Mutex SyncLevel parameter, since the current 10769SyncLevel 10770is a property of the executing thread. Mutual exclusion for control 10771methods 10772is now implemented with a mutex instead of a semaphore. 10773 10774Fixed three instances of the use of the C shift operator in the bitfield 10775support code (exfldio.c) to avoid the use of a shift value larger than 10776the 10777target data width. The behavior of C compilers is undefined in this case 10778and 10779can cause unpredictable results, and therefore the case must be detected 10780and 10781avoided. (Fiodor Suietov) 10782 10783Added an info message whenever an SSDT or OEM table is loaded dynamically 10784via the Load() or LoadTable() ASL operators. This should improve 10785debugging 10786capability since it will show exactly what tables have been loaded 10787(beyond 10788the tables present in the RSDT/XSDT.) 10789 10790Example Code and Data Size: These are the sizes for the OS-independent 10791acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10792debug version of the code includes the debug output trace mechanism and 10793has 10794a much larger code and data size. 10795 10796 Previous Release: 10797 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10798 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10799 Current Release: 10800 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10801 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10802 10803 108042) iASL Compiler/Disassembler and Tools: 10805 10806No changes for this release. 10807 10808---------------------------------------- 1080908 June 2006. Summary of changes for version 20060608: 10810 108111) ACPI CA Core Subsystem: 10812 10813Converted the locking mutex used for the ACPI hardware to a spinlock. 10814This 10815change should eliminate all problems caused by attempting to acquire a 10816semaphore at interrupt level, and it means that all ACPICA external 10817interfaces that directly access the ACPI hardware can be safely called 10818from 10819interrupt level. OSL code that implements the semaphore interfaces should 10820be 10821able to eliminate any workarounds for being called at interrupt level. 10822 10823Fixed a regression introduced in 20060526 where the ACPI device 10824initialization could be prematurely aborted with an AE_NOT_FOUND if a 10825device 10826did not have an optional _INI method. 10827 10828Fixed an IndexField issue where a write to the Data Register should be 10829limited in size to the AccessSize (width) of the IndexField itself. (BZ 10830433, 10831Fiodor Suietov) 10832 10833Fixed problem reports (Valery Podrezov) integrated: 10834- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10835 10836Fixed problem reports (Fiodor Suietov) integrated: 10837- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10838 10839Removed four global mutexes that were obsolete and were no longer being 10840used. 10841 10842Example Code and Data Size: These are the sizes for the OS-independent 10843acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10844debug version of the code includes the debug output trace mechanism and 10845has 10846a much larger code and data size. 10847 10848 Previous Release: 10849 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10850 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10851 Current Release: 10852 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10853 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10854 10855 108562) iASL Compiler/Disassembler and Tools: 10857 10858Fixed a fault when using -g option (get tables from registry) on Windows 10859machines. 10860 10861Fixed problem reports integrated: 10862- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10863- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10864Suietov) 10865- Global table revision override (-r) is ignored (BZ 413) 10866 10867---------------------------------------- 1086826 May 2006. Summary of changes for version 20060526: 10869 108701) ACPI CA Core Subsystem: 10871 10872Restructured, flattened, and simplified the internal interfaces for 10873namespace object evaluation - resulting in smaller code, less CPU stack 10874use, 10875and fewer interfaces. (With assistance from Mikhail Kouzmich) 10876 10877Fixed a problem with the CopyObject operator where the first parameter 10878was 10879not typed correctly for the parser, interpreter, compiler, and 10880disassembler. 10881Caused various errors and unexpected behavior. 10882 10883Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10884produced incorrect results with some C compilers. Since the behavior of C 10885compilers when the shift value is larger than the datatype width is 10886apparently not well defined, the interpreter now detects this condition 10887and 10888simply returns zero as expected in all such cases. (BZ 395) 10889 10890Fixed problem reports (Valery Podrezov) integrated: 10891- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10892- Allow interpreter to handle nested method declarations (BZ 5361) 10893 10894Fixed problem reports (Fiodor Suietov) integrated: 10895- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10896355) 10897- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10898356) 10899- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10900- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10901- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10902- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10903- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10904- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10905- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10906365) 10907- Status of the Global Initialization Handler call not used (BZ 366) 10908- Incorrect object parameter to Global Initialization Handler (BZ 367) 10909 10910Example Code and Data Size: These are the sizes for the OS-independent 10911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10912debug version of the code includes the debug output trace mechanism and 10913has 10914a much larger code and data size. 10915 10916 Previous Release: 10917 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10918 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10919 Current Release: 10920 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10921 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10922 10923 109242) iASL Compiler/Disassembler and Tools: 10925 10926Modified the parser to allow the names IO, DMA, and IRQ to be used as 10927namespace identifiers with no collision with existing resource descriptor 10928macro names. This provides compatibility with other ASL compilers and is 10929most useful for disassembly/recompilation of existing tables without 10930parse 10931errors. (With assistance from Thomas Renninger) 10932 10933Disassembler: fixed an incorrect disassembly problem with the 10934DataTableRegion and CopyObject operators. Fixed a possible fault during 10935disassembly of some Alias operators. 10936 10937---------------------------------------- 1093812 May 2006. Summary of changes for version 20060512: 10939 109401) ACPI CA Core Subsystem: 10941 10942Replaced the AcpiOsQueueForExecution interface with a new interface named 10943AcpiOsExecute. The major difference is that the new interface does not 10944have 10945a Priority parameter, this appeared to be useless and has been replaced 10946by 10947a 10948Type parameter. The Type tells the host what type of execution is being 10949requested, such as global lock handler, notify handler, GPE handler, etc. 10950This allows the host to queue and execute the request as appropriate for 10951the 10952request type, possibly using different work queues and different 10953priorities 10954for the various request types. This enables fixes for multithreading 10955deadlock problems such as BZ #5534, and will require changes to all 10956existing 10957OS interface layers. (Alexey Starikovskiy and Bob Moore) 10958 10959Fixed a possible memory leak associated with the support for the so- 10960called 10961"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10962Suietov) 10963 10964Fixed a problem with the Load() operator where a table load from an 10965operation region could overwrite an internal table buffer by up to 7 10966bytes 10967and cause alignment faults on IPF systems. (With assistance from Luming 10968Yu) 10969 10970Example Code and Data Size: These are the sizes for the OS-independent 10971acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10972debug version of the code includes the debug output trace mechanism and 10973has 10974a much larger code and data size. 10975 10976 Previous Release: 10977 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10978 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10979 Current Release: 10980 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10981 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10982 10983 10984 109852) iASL Compiler/Disassembler and Tools: 10986 10987Disassembler: Implemented support to cross reference the internal 10988namespace 10989and automatically generate ASL External() statements for symbols not 10990defined 10991within the current table being disassembled. This will simplify the 10992disassembly and recompilation of interdependent tables such as SSDTs 10993since 10994these statements will no longer have to be added manually. 10995 10996Disassembler: Implemented experimental support to automatically detect 10997invocations of external control methods and generate appropriate 10998External() 10999statements. This is problematic because the AML cannot be correctly 11000parsed 11001until the number of arguments for each control method is known. 11002Currently, 11003standalone method invocations and invocations as the source operand of a 11004Store() statement are supported. 11005 11006Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 11007LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 11008LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 11009more readable and likely closer to the original ASL source. 11010 11011---------------------------------------- 1101221 April 2006. Summary of changes for version 20060421: 11013 110141) ACPI CA Core Subsystem: 11015 11016Removed a device initialization optimization introduced in 20051216 where 11017the _STA method was not run unless an _INI was also present for the same 11018device. This optimization could cause problems because it could allow 11019_INI 11020methods to be run within a not-present device subtree. (If a not-present 11021device had no _INI, _STA would not be run, the not-present status would 11022not 11023be discovered, and the children of the device would be incorrectly 11024traversed.) 11025 11026Implemented a new _STA optimization where namespace subtrees that do not 11027contain _INI are identified and ignored during device initialization. 11028Selectively running _STA can significantly improve boot time on large 11029machines (with assistance from Len Brown.) 11030 11031Implemented support for the device initialization case where the returned 11032_STA flags indicate a device not-present but functioning. In this case, 11033_INI 11034is not run, but the device children are examined for presence, as per the 11035ACPI specification. 11036 11037Implemented an additional change to the IndexField support in order to 11038conform to MS behavior. The value written to the Index Register is not 11039simply a byte offset, it is a byte offset in units of the access width of 11040the parent Index Field. (Fiodor Suietov) 11041 11042Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 11043interface is called during the creation of all AML operation regions, and 11044allows the host OS to exert control over what addresses it will allow the 11045AML code to access. Operation Regions whose addresses are disallowed will 11046cause a runtime exception when they are actually accessed (will not 11047affect 11048or abort table loading.) See oswinxf or osunixxf for an example 11049implementation. 11050 11051Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 11052interface allows the host OS to match the various "optional" 11053interface/behavior strings for the _OSI predefined control method as 11054appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 11055for an example implementation. 11056 11057Restructured and corrected various problems in the exception handling 11058code 11059paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 11060(with assistance from Takayoshi Kochi.) 11061 11062Modified the Linux source converter to ignore quoted string literals 11063while 11064converting identifiers from mixed to lower case. This will correct 11065problems 11066with the disassembler and other areas where such strings must not be 11067modified. 11068 11069The ACPI_FUNCTION_* macros no longer require quotes around the function 11070name. This allows the Linux source converter to convert the names, now 11071that 11072the converter ignores quoted strings. 11073 11074Example Code and Data Size: These are the sizes for the OS-independent 11075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11076debug version of the code includes the debug output trace mechanism and 11077has 11078a much larger code and data size. 11079 11080 Previous Release: 11081 11082 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11083 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11084 Current Release: 11085 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 11086 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 11087 11088 110892) iASL Compiler/Disassembler and Tools: 11090 11091Implemented 3 new warnings for iASL, and implemented multiple warning 11092levels 11093(w2 flag). 11094 110951) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 11096not 11097WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 11098check for the possible timeout, a warning is issued. 11099 111002) Useless operators: If an ASL operator does not specify an optional 11101target 11102operand and it also does not use the function return value from the 11103operator, a warning is issued since the operator effectively does 11104nothing. 11105 111063) Unreferenced objects: If a namespace object is created, but never 11107referenced, a warning is issued. This is a warning level 2 since there 11108are 11109cases where this is ok, such as when a secondary table is loaded that 11110uses 11111the unreferenced objects. Even so, care is taken to only flag objects 11112that 11113don't look like they will ever be used. For example, the reserved methods 11114(starting with an underscore) are usually not referenced because it is 11115expected that the OS will invoke them. 11116 11117---------------------------------------- 1111831 March 2006. Summary of changes for version 20060331: 11119 111201) ACPI CA Core Subsystem: 11121 11122Implemented header file support for the following additional ACPI tables: 11123ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 11124support, 11125all current and known ACPI tables are now defined in the ACPICA headers 11126and 11127are available for use by device drivers and other software. 11128 11129Implemented support to allow tables that contain ACPI names with invalid 11130characters to be loaded. Previously, this would cause the table load to 11131fail, but since there are several known cases of such tables on existing 11132machines, this change was made to enable ACPI support for them. Also, 11133this 11134matches the behavior of the Microsoft ACPI implementation. 11135 11136Fixed a couple regressions introduced during the memory optimization in 11137the 1113820060317 release. The namespace node definition required additional 11139reorganization and an internal datatype that had been changed to 8-bit 11140was 11141restored to 32-bit. (Valery Podrezov) 11142 11143Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 11144could be passed through to AcpiOsReleaseObject which is unexpected. Such 11145null pointers are now trapped and ignored, matching the behavior of the 11146previous implementation before the deployment of AcpiOsReleaseObject. 11147(Valery Podrezov, Fiodor Suietov) 11148 11149Fixed a memory mapping leak during the deletion of a SystemMemory 11150operation 11151region where a cached memory mapping was not deleted. This became a 11152noticeable problem for operation regions that are defined within 11153frequently 11154used control methods. (Dana Meyers) 11155 11156Reorganized the ACPI table header files into two main files: one for the 11157ACPI tables consumed by the ACPICA core, and another for the 11158miscellaneous 11159ACPI tables that are consumed by the drivers and other software. The 11160various 11161FADT definitions were merged into one common section and three different 11162tables (ACPI 1.0, 1.0+, and 2.0) 11163 11164Example Code and Data Size: These are the sizes for the OS-independent 11165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 11166debug version of the code includes the debug output trace mechanism and 11167has 11168a much larger code and data size. 11169 11170 Previous Release: 11171 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11172 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11173 Current Release: 11174 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 11175 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 11176 11177 111782) iASL Compiler/Disassembler and Tools: 11179 11180Disassembler: Implemented support to decode and format all non-AML ACPI 11181tables (tables other than DSDTs and SSDTs.) This includes the new tables 11182added to the ACPICA headers, therefore all current and known ACPI tables 11183are 11184supported. 11185 11186Disassembler: The change to allow ACPI names with invalid characters also 11187enables the disassembly of such tables. Invalid characters within names 11188are 11189changed to '*' to make the name printable; the iASL compiler will still 11190generate an error for such names, however, since this is an invalid ACPI 11191character. 11192 11193Implemented an option for AcpiXtract (-a) to extract all tables found in 11194the 11195input file. The default invocation extracts only the DSDTs and SSDTs. 11196 11197Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 11198makefile for the AcpiXtract utility. 11199 11200---------------------------------------- 1120117 March 2006. Summary of changes for version 20060317: 11202 112031) ACPI CA Core Subsystem: 11204 11205Implemented the use of a cache object for all internal namespace nodes. 11206Since there are about 1000 static nodes in a typical system, this will 11207decrease memory use for cache implementations that minimize per- 11208allocation 11209overhead (such as a slab allocator.) 11210 11211Removed the reference count mechanism for internal namespace nodes, since 11212it 11213was deemed unnecessary. This reduces the size of each namespace node by 11214about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 11215case, 11216and 32 bytes for the 64-bit case. 11217 11218Optimized several internal data structures to reduce object size on 64- 11219bit 11220platforms by packing data within the 64-bit alignment. This includes the 11221frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 11222instances corresponding to the namespace objects. 11223 11224Added two new strings for the predefined _OSI method: "Windows 2001.1 11225SP1" 11226and "Windows 2006". 11227 11228Split the allocation tracking mechanism out to a separate file, from 11229utalloc.c to uttrack.c. This mechanism appears to be only useful for 11230application-level code. Kernels may wish to not include uttrack.c in 11231distributions. 11232 11233Removed all remnants of the obsolete ACPI_REPORT_* macros and the 11234associated 11235code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 11236macros.) 11237 11238Code and Data Size: These are the sizes for the acpica.lib produced by 11239the 11240Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11241ACPI 11242driver or OSPM code. The debug version of the code includes the debug 11243output 11244trace mechanism and has a much larger code and data size. Note that these 11245values will vary depending on the efficiency of the compiler and the 11246compiler options used during generation. 11247 11248 Previous Release: 11249 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11250 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11251 Current Release: 11252 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11253 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11254 11255 112562) iASL Compiler/Disassembler and Tools: 11257 11258Implemented an ANSI C version of the acpixtract utility. This version 11259will 11260automatically extract the DSDT and all SSDTs from the input acpidump text 11261file and dump the binary output to separate files. It can also display a 11262summary of the input file including the headers for each table found and 11263will extract any single ACPI table, with any signature. (See 11264source/tools/acpixtract) 11265 11266---------------------------------------- 1126710 March 2006. Summary of changes for version 20060310: 11268 112691) ACPI CA Core Subsystem: 11270 11271Tagged all external interfaces to the subsystem with the new 11272ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11273assist 11274kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11275macro. The default definition is NULL. 11276 11277Added the ACPI_THREAD_ID type for the return value from 11278AcpiOsGetThreadId. 11279This allows the host to define this as necessary to simplify kernel 11280integration. The default definition is ACPI_NATIVE_UINT. 11281 11282Fixed two interpreter problems related to error processing, the deletion 11283of 11284objects, and placing invalid pointers onto the internal operator result 11285stack. BZ 6028, 6151 (Valery Podrezov) 11286 11287Increased the reference count threshold where a warning is emitted for 11288large 11289reference counts in order to eliminate unnecessary warnings on systems 11290with 11291large namespaces (especially 64-bit.) Increased the value from 0x400 to 112920x800. 11293 11294Due to universal disagreement as to the meaning of the 'c' in the 11295calloc() 11296function, the ACPI_MEM_CALLOCATE macro has been renamed to 11297ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11298ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11299ACPI_FREE. 11300 11301Code and Data Size: These are the sizes for the acpica.lib produced by 11302the 11303Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11304ACPI 11305driver or OSPM code. The debug version of the code includes the debug 11306output 11307trace mechanism and has a much larger code and data size. Note that these 11308values will vary depending on the efficiency of the compiler and the 11309compiler options used during generation. 11310 11311 Previous Release: 11312 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11313 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11314 Current Release: 11315 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11316 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11317 11318 113192) iASL Compiler/Disassembler: 11320 11321Disassembler: implemented support for symbolic resource descriptor 11322references. If a CreateXxxxField operator references a fixed offset 11323within 11324a 11325resource descriptor, a name is assigned to the descriptor and the offset 11326is 11327translated to the appropriate resource tag and pathname. The addition of 11328this support brings the disassembled code very close to the original ASL 11329source code and helps eliminate run-time errors when the disassembled 11330code 11331is modified (and recompiled) in such a way as to invalidate the original 11332fixed offsets. 11333 11334Implemented support for a Descriptor Name as the last parameter to the 11335ASL 11336Register() macro. This parameter was inadvertently left out of the ACPI 11337specification, and will be added for ACPI 3.0b. 11338 11339Fixed a problem where the use of the "_OSI" string (versus the full path 11340"\_OSI") caused an internal compiler error. ("No back ptr to op") 11341 11342Fixed a problem with the error message that occurs when an invalid string 11343is 11344used for a _HID object (such as one with an embedded asterisk: 11345"*PNP010A".) 11346The correct message is now displayed. 11347 11348---------------------------------------- 1134917 February 2006. Summary of changes for version 20060217: 11350 113511) ACPI CA Core Subsystem: 11352 11353Implemented a change to the IndexField support to match the behavior of 11354the 11355Microsoft AML interpreter. The value written to the Index register is now 11356a 11357byte offset, no longer an index based upon the width of the Data 11358register. 11359This should fix IndexField problems seen on some machines where the Data 11360register is not exactly one byte wide. The ACPI specification will be 11361clarified on this point. 11362 11363Fixed a problem where several resource descriptor types could overrun the 11364internal descriptor buffer due to size miscalculation: VendorShort, 11365VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11366affect all platforms. 11367 11368Fixed a problem where individual resource descriptors were misaligned 11369within 11370the internal buffer, causing alignment faults on IA64 platforms. 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.3K Code, 65.6K Data, 226.9K Total 11385 Current Release: 11386 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11387 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11388 11389 113902) iASL Compiler/Disassembler: 11391 11392Implemented support for new reserved names: _WDG and _WED are Microsoft 11393extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11394defined method (Throttling Depth Limit.) 11395 11396Fixed a problem where a zero-length VendorShort or VendorLong resource 11397descriptor was incorrectly emitted as a descriptor of length one. 11398 11399---------------------------------------- 1140010 February 2006. Summary of changes for version 20060210: 11401 114021) ACPI CA Core Subsystem: 11403 11404Removed a couple of extraneous ACPI_ERROR messages that appeared during 11405normal execution. These became apparent after the conversion from 11406ACPI_DEBUG_PRINT. 11407 11408Fixed a problem where the CreateField operator could hang if the BitIndex 11409or 11410NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 11411 11412Fixed a problem where a DeRefOf operation on a buffer object incorrectly 11413failed with an exception. This also fixes a couple of related RefOf and 11414DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 11415 11416Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 11417of 11418AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 11419BZ 114205480) 11421 11422Implemented a memory cleanup at the end of the execution of each 11423iteration 11424of an AML While() loop, preventing the accumulation of outstanding 11425objects. 11426(Valery Podrezov, BZ 5427) 11427 11428Eliminated a chunk of duplicate code in the object resolution code. 11429(Valery 11430Podrezov, BZ 5336) 11431 11432Fixed several warnings during the 64-bit code generation. 11433 11434The AcpiSrc source code conversion tool now inserts one line of 11435whitespace 11436after an if() statement that is followed immediately by a comment, 11437improving 11438readability of the Linux code. 11439 11440Code and Data Size: The current and previous library sizes for the core 11441subsystem are shown below. These are the code and data sizes for the 11442acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11443These 11444values do not include any ACPI driver or OSPM code. The debug version of 11445the 11446code includes the debug output trace mechanism and has a much larger code 11447and data size. Note that these values will vary depending on the 11448efficiency 11449of the compiler and the compiler options used during generation. 11450 11451 Previous Release: 11452 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11453 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11454 Current Release: 11455 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11456 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11457 11458 114592) iASL Compiler/Disassembler: 11460 11461Fixed a problem with the disassembly of a BankField operator with a 11462complex 11463expression for the BankValue parameter. 11464 11465---------------------------------------- 1146627 January 2006. Summary of changes for version 20060127: 11467 114681) ACPI CA Core Subsystem: 11469 11470Implemented support in the Resource Manager to allow unresolved 11471namestring 11472references within resource package objects for the _PRT method. This 11473support 11474is in addition to the previously implemented unresolved reference support 11475within the AML parser. If the interpreter slack mode is enabled, these 11476unresolved references will be passed through to the caller as a NULL 11477package 11478entry. 11479 11480Implemented and deployed new macros and functions for error and warning 11481messages across the subsystem. These macros are simpler and generate less 11482code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11483ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11484macros remain defined to allow ACPI drivers time to migrate to the new 11485macros. 11486 11487Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11488the 11489Acquire/Release Lock OSL interfaces. 11490 11491Fixed a problem where Alias ASL operators are sometimes not correctly 11492resolved, in both the interpreter and the iASL compiler. 11493 11494Fixed several problems with the implementation of the 11495ConcatenateResTemplate 11496ASL operator. As per the ACPI specification, zero length buffers are now 11497treated as a single EndTag. One-length buffers always cause a fatal 11498exception. Non-zero length buffers that do not end with a full 2-byte 11499EndTag 11500cause a fatal exception. 11501 11502Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11503interface. (With assistance from Thomas Renninger) 11504 11505Code and Data Size: The current and previous library sizes for the core 11506subsystem are shown below. These are the code and data sizes for the 11507acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11508These 11509values do not include any ACPI driver or OSPM code. The debug version of 11510the 11511code includes the debug output trace mechanism and has a much larger code 11512and data size. Note that these values will vary depending on the 11513efficiency 11514of the compiler and the compiler options used during generation. 11515 11516 Previous Release: 11517 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11518 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11519 Current Release: 11520 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11521 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11522 11523 115242) iASL Compiler/Disassembler: 11525 11526Fixed an internal error that was generated for any forward references to 11527ASL 11528Alias objects. 11529 11530---------------------------------------- 1153113 January 2006. Summary of changes for version 20060113: 11532 115331) ACPI CA Core Subsystem: 11534 11535Added 2006 copyright to all module headers and signons. This affects 11536virtually every file in the ACPICA core subsystem, iASL compiler, and the 11537utilities. 11538 11539Enhanced the ACPICA error reporting in order to simplify user migration 11540to 11541the non-debug version of ACPICA. Replaced all instances of the 11542ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11543debug 11544levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11545respectively. This preserves all error and warning messages in the non- 11546debug 11547version of the ACPICA code (this has been referred to as the "debug lite" 11548option.) Over 200 cases were converted to create a total of over 380 11549error/warning messages across the ACPICA code. This increases the code 11550and 11551data size of the default non-debug version of the code somewhat (about 1155213K), 11553but all error/warning reporting may be disabled if desired (and code 11554eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11555configuration option. The size of the debug version of ACPICA remains 11556about 11557the same. 11558 11559Fixed a memory leak within the AML Debugger "Set" command. One object was 11560not properly deleted for every successful invocation of the command. 11561 11562Code and Data Size: The current and previous library sizes for the core 11563subsystem are shown below. These are the code and data sizes for the 11564acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11565These 11566values do not include any ACPI driver or OSPM code. The debug version of 11567the 11568code includes the debug output trace mechanism and has a much larger code 11569and data size. Note that these values will vary depending on the 11570efficiency 11571of the compiler and the compiler options used during generation. 11572 11573 Previous Release: 11574 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11575 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11576 Current Release: 11577 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11578 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11579 11580 115812) iASL Compiler/Disassembler: 11582 11583The compiler now officially supports the ACPI 3.0a specification that was 11584released on December 30, 2005. (Specification is available at 11585www.acpi.info) 11586 11587---------------------------------------- 1158816 December 2005. Summary of changes for version 20051216: 11589 115901) ACPI CA Core Subsystem: 11591 11592Implemented optional support to allow unresolved names within ASL Package 11593objects. A null object is inserted in the package when a named reference 11594cannot be located in the current namespace. Enabled via the interpreter 11595slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11596machines 11597that contain such code. 11598 11599Implemented an optimization to the initialization sequence that can 11600improve 11601boot time. During ACPI device initialization, the _STA method is now run 11602if 11603and only if the _INI method exists. The _STA method is used to determine 11604if 11605the device is present; An _INI can only be run if _STA returns present, 11606but 11607it is a waste of time to run the _STA method if the _INI does not exist. 11608(Prototype and assistance from Dong Wei) 11609 11610Implemented use of the C99 uintptr_t for the pointer casting macros if it 11611is 11612available in the current compiler. Otherwise, the default (void *) cast 11613is 11614used as before. 11615 11616Fixed some possible memory leaks found within the execution path of the 11617Break, Continue, If, and CreateField operators. (Valery Podrezov) 11618 11619Fixed a problem introduced in the 20051202 release where an exception is 11620generated during method execution if a control method attempts to declare 11621another method. 11622 11623Moved resource descriptor string constants that are used by both the AML 11624disassembler and AML debugger to the common utilities directory so that 11625these components are independent. 11626 11627Implemented support in the AcpiExec utility (-e switch) to globally 11628ignore 11629exceptions during control method execution (method is not aborted.) 11630 11631Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11632generation. 11633 11634Code and Data Size: The current and previous library sizes for the core 11635subsystem are shown below. These are the code and data sizes for the 11636acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11637These 11638values do not include any ACPI driver or OSPM code. The debug version of 11639the 11640code includes the debug output trace mechanism and has a much larger code 11641and data size. Note that these values will vary depending on the 11642efficiency 11643of the compiler and the compiler options used during generation. 11644 11645 Previous Release: 11646 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11647 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11648 Current Release: 11649 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11650 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11651 11652 116532) iASL Compiler/Disassembler: 11654 11655Fixed a problem where a CPU stack overflow fault could occur if a 11656recursive 11657method call was made from within a Return statement. 11658 11659---------------------------------------- 1166002 December 2005. Summary of changes for version 20051202: 11661 116621) ACPI CA Core Subsystem: 11663 11664Modified the parsing of control methods to no longer create namespace 11665objects during the first pass of the parse. Objects are now created only 11666during the execute phase, at the moment the namespace creation operator 11667is 11668encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11669This 11670should eliminate ALREADY_EXISTS exceptions seen on some machines where 11671reentrant control methods are protected by an AML mutex. The mutex will 11672now 11673correctly block multiple threads from attempting to create the same 11674object 11675more than once. 11676 11677Increased the number of available Owner Ids for namespace object tracking 11678from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11679on 11680some machines with a large number of ACPI tables (either static or 11681dynamic). 11682 11683Fixed a problem with the AcpiExec utility where a fault could occur when 11684the 11685-b switch (batch mode) is used. 11686 11687Enhanced the namespace dump routine to output the owner ID for each 11688namespace object. 11689 11690Code and Data Size: The current and previous library sizes for the core 11691subsystem are shown below. These are the code and data sizes for the 11692acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11693These 11694values do not include any ACPI driver or OSPM code. The debug version of 11695the 11696code includes the debug output trace mechanism and has a much larger code 11697and data size. Note that these values will vary depending on the 11698efficiency 11699of the compiler and the compiler options used during generation. 11700 11701 Previous Release: 11702 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11703 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11704 Current Release: 11705 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11706 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11707 11708 117092) iASL Compiler/Disassembler: 11710 11711Fixed a parse error during compilation of certain Switch/Case constructs. 11712To 11713simplify the parse, the grammar now allows for multiple Default 11714statements 11715and this error is now detected and flagged during the analysis phase. 11716 11717Disassembler: The disassembly now includes the contents of the original 11718table header within a comment at the start of the file. This includes the 11719name and version of the original ASL compiler. 11720 11721---------------------------------------- 1172217 November 2005. Summary of changes for version 20051117: 11723 117241) ACPI CA Core Subsystem: 11725 11726Fixed a problem in the AML parser where the method thread count could be 11727decremented below zero if any errors occurred during the method parse 11728phase. 11729This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11730machines. 11731This also fixed a related regression with the mechanism that detects and 11732corrects methods that cannot properly handle reentrancy (related to the 11733deployment of the new OwnerId mechanism.) 11734 11735Eliminated the pre-parsing of control methods (to detect errors) during 11736table load. Related to the problem above, this was causing unwind issues 11737if 11738any errors occurred during the parse, and it seemed to be overkill. A 11739table 11740load should not be aborted if there are problems with any single control 11741method, thus rendering this feature rather pointless. 11742 11743Fixed a problem with the new table-driven resource manager where an 11744internal 11745buffer overflow could occur for small resource templates. 11746 11747Implemented a new external interface, AcpiGetVendorResource. This 11748interface 11749will find and return a vendor-defined resource descriptor within a _CRS 11750or 11751_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11752Helgaas. 11753 11754Removed the length limit (200) on string objects as per the upcoming ACPI 117553.0A specification. This affects the following areas of the interpreter: 117561) 11757any implicit conversion of a Buffer to a String, 2) a String object 11758result 11759of the ASL Concatenate operator, 3) the String object result of the ASL 11760ToString operator. 11761 11762Fixed a problem in the Windows OS interface layer (OSL) where a 11763WAIT_FOREVER 11764on a semaphore object would incorrectly timeout. This allows the 11765multithreading features of the AcpiExec utility to work properly under 11766Windows. 11767 11768Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11769the recently added file named "utresrc.c". 11770 11771Code and Data Size: The current and previous library sizes for the core 11772subsystem are shown below. These are the code and data sizes for the 11773acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11774These 11775values do not include any ACPI driver or OSPM code. The debug version of 11776the 11777code includes the debug output trace mechanism and has a much larger code 11778and data size. Note that these values will vary depending on the 11779efficiency 11780of the compiler and the compiler options used during generation. 11781 11782 Previous Release: 11783 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11784 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11785 Current Release: 11786 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11787 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11788 11789 117902) iASL Compiler/Disassembler: 11791 11792Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11793specification. For the iASL compiler, this means that string literals 11794within 11795the source ASL can be of any length. 11796 11797Enhanced the listing output to dump the AML code for resource descriptors 11798immediately after the ASL code for each descriptor, instead of in a block 11799at 11800the end of the entire resource template. 11801 11802Enhanced the compiler debug output to dump the entire original parse tree 11803constructed during the parse phase, before any transforms are applied to 11804the 11805tree. The transformed tree is dumped also. 11806 11807---------------------------------------- 1180802 November 2005. Summary of changes for version 20051102: 11809 118101) ACPI CA Core Subsystem: 11811 11812Modified the subsystem initialization sequence to improve GPE support. 11813The 11814GPE initialization has been split into two parts in order to defer 11815execution 11816of the _PRW methods (Power Resources for Wake) until after the hardware 11817is 11818fully initialized and the SCI handler is installed. This allows the _PRW 11819methods to access fields protected by the Global Lock. This will fix 11820systems 11821where a NO_GLOBAL_LOCK exception has been seen during initialization. 11822 11823Converted the ACPI internal object disassemble and display code within 11824the 11825AML debugger to fully table-driven operation, reducing code size and 11826increasing maintainability. 11827 11828Fixed a regression with the ConcatenateResTemplate() ASL operator 11829introduced 11830in the 20051021 release. 11831 11832Implemented support for "local" internal ACPI object types within the 11833debugger "Object" command and the AcpiWalkNamespace external interfaces. 11834These local types include RegionFields, BankFields, IndexFields, Alias, 11835and 11836reference objects. 11837 11838Moved common AML resource handling code into a new file, "utresrc.c". 11839This 11840code is shared by both the Resource Manager and the AML Debugger. 11841 11842Code and Data Size: The current and previous library sizes for the core 11843subsystem are shown below. These are the code and data sizes for the 11844acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11845These 11846values do not include any ACPI driver or OSPM code. The debug version of 11847the 11848code includes the debug output trace mechanism and has a much larger code 11849and data size. Note that these values will vary depending on the 11850efficiency 11851of the compiler and the compiler options used during generation. 11852 11853 Previous Release: 11854 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11855 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11856 Current Release: 11857 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11858 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11859 11860 118612) iASL Compiler/Disassembler: 11862 11863Fixed a problem with very large initializer lists (more than 4000 11864elements) 11865for both Buffer and Package objects where the parse stack could overflow. 11866 11867Enhanced the pre-compile source code scan for non-ASCII characters to 11868ignore 11869characters within comment fields. The scan is now always performed and is 11870no 11871longer optional, detecting invalid characters within a source file 11872immediately rather than during the parse phase or later. 11873 11874Enhanced the ASL grammar definition to force early reductions on all 11875list- 11876style grammar elements so that the overall parse stack usage is greatly 11877reduced. This should improve performance and reduce the possibility of 11878parse 11879stack overflow. 11880 11881Eliminated all reduce/reduce conflicts in the iASL parser generation. 11882Also, 11883with the addition of a %expected statement, the compiler generates from 11884source with no warnings. 11885 11886Fixed a possible segment fault in the disassembler if the input filename 11887does not contain a "dot" extension (Thomas Renninger). 11888 11889---------------------------------------- 1189021 October 2005. Summary of changes for version 20051021: 11891 118921) ACPI CA Core Subsystem: 11893 11894Implemented support for the EM64T and other x86-64 processors. This 11895essentially entails recognizing that these processors support non-aligned 11896memory transfers. Previously, all 64-bit processors were assumed to lack 11897hardware support for non-aligned transfers. 11898 11899Completed conversion of the Resource Manager to nearly full table-driven 11900operation. Specifically, the resource conversion code (convert AML to 11901internal format and the reverse) and the debug code to dump internal 11902resource descriptors are fully table-driven, reducing code and data size 11903and 11904improving maintainability. 11905 11906The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11907word 11908on 64-bit processors instead of a fixed 32-bit word. (With assistance 11909from 11910Alexey Starikovskiy) 11911 11912Implemented support within the resource conversion code for the Type- 11913Specific byte within the various ACPI 3.0 *WordSpace macros. 11914 11915Fixed some issues within the resource conversion code for the type- 11916specific 11917flags for both Memory and I/O address resource descriptors. For Memory, 11918implemented support for the MTP and TTP flags. For I/O, split the TRS and 11919TTP flags into two separate fields. 11920 11921Code and Data Size: The current and previous library sizes for the core 11922subsystem are shown below. These are the code and data sizes for the 11923acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11924These 11925values do not include any ACPI driver or OSPM code. The debug version of 11926the 11927code includes the debug output trace mechanism and has a much larger code 11928and data size. Note that these values will vary depending on the 11929efficiency 11930of the compiler and the compiler options used during generation. 11931 11932 Previous Release: 11933 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11934 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11935 Current Release: 11936 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11937 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11938 11939 11940 119412) iASL Compiler/Disassembler: 11942 11943Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11944the 11945corresponding ResourceSource string was not also present in a resource 11946descriptor declaration. This restriction caused problems with existing 11947AML/ASL code that includes the Index byte without the string. When such 11948AML 11949was disassembled, it could not be compiled without modification. Further, 11950the modified code created a resource template with a different size than 11951the 11952original, breaking code that used fixed offsets into the resource 11953template 11954buffer. 11955 11956Removed a recent feature of the disassembler to ignore a lone 11957ResourceIndex 11958byte. This byte is now emitted if present so that the exact AML can be 11959reproduced when the disassembled code is recompiled. 11960 11961Improved comments and text alignment for the resource descriptor code 11962emitted by the disassembler. 11963 11964Implemented disassembler support for the ACPI 3.0 AccessSize field within 11965a 11966Register() resource descriptor. 11967 11968---------------------------------------- 1196930 September 2005. Summary of changes for version 20050930: 11970 119711) ACPI CA Core Subsystem: 11972 11973Completed a major overhaul of the Resource Manager code - specifically, 11974optimizations in the area of the AML/internal resource conversion code. 11975The 11976code has been optimized to simplify and eliminate duplicated code, CPU 11977stack 11978use has been decreased by optimizing function parameters and local 11979variables, and naming conventions across the manager have been 11980standardized 11981for clarity and ease of maintenance (this includes function, parameter, 11982variable, and struct/typedef names.) The update may force changes in some 11983driver code, depending on how resources are handled by the host OS. 11984 11985All Resource Manager dispatch and information tables have been moved to a 11986single location for clarity and ease of maintenance. One new file was 11987created, named "rsinfo.c". 11988 11989The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11990guarantee that the argument is not evaluated twice, making them less 11991prone 11992to macro side-effects. However, since there exists the possibility of 11993additional stack use if a particular compiler cannot optimize them (such 11994as 11995in the debug generation case), the original macros are optionally 11996available. 11997Note that some invocations of the return_VALUE macro may now cause size 11998mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11999to 12000eliminate these. (From Randy Dunlap) 12001 12002Implemented a new mechanism to enable debug tracing for individual 12003control 12004methods. A new external interface, AcpiDebugTrace, is provided to enable 12005this mechanism. The intent is to allow the host OS to easily enable and 12006disable tracing for problematic control methods. This interface can be 12007easily exposed to a user or debugger interface if desired. See the file 12008psxface.c for details. 12009 12010AcpiUtCallocate will now return a valid pointer if a length of zero is 12011specified - a length of one is used and a warning is issued. This matches 12012the behavior of AcpiUtAllocate. 12013 12014Code and Data Size: The current and previous library sizes for the core 12015subsystem are shown below. These are the code and data sizes for the 12016acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12017These 12018values do not include any ACPI driver or OSPM code. The debug version of 12019the 12020code includes the debug output trace mechanism and has a much larger code 12021and data size. Note that these values will vary depending on the 12022efficiency 12023of the compiler and the compiler options used during generation. 12024 12025 Previous Release: 12026 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12027 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12028 Current Release: 12029 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 12030 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 12031 12032 120332) iASL Compiler/Disassembler: 12034 12035A remark is issued if the effective compile-time length of a package or 12036buffer is zero. Previously, this was a warning. 12037 12038---------------------------------------- 1203916 September 2005. Summary of changes for version 20050916: 12040 120411) ACPI CA Core Subsystem: 12042 12043Fixed a problem within the Resource Manager where support for the Generic 12044Register descriptor was not fully implemented. This descriptor is now 12045fully 12046recognized, parsed, disassembled, and displayed. 12047 12048Completely restructured the Resource Manager code to utilize table-driven 12049dispatch and lookup, eliminating many of the large switch() statements. 12050This 12051reduces overall subsystem code size and code complexity. Affects the 12052resource parsing and construction, disassembly, and debug dump output. 12053 12054Cleaned up and restructured the debug dump output for all resource 12055descriptors. Improved readability of the output and reduced code size. 12056 12057Fixed a problem where changes to internal data structures caused the 12058optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 12059 12060Code and Data Size: The current and previous library sizes for the core 12061subsystem are shown below. These are the code and data sizes for the 12062acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 12063These 12064values do not include any ACPI driver or OSPM code. The debug version of 12065the 12066code includes the debug output trace mechanism and has a much larger code 12067and data size. Note that these values will vary depending on the 12068efficiency 12069of the compiler and the compiler options used during generation. 12070 12071 Previous Release: 12072 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12073 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12074 Current Release: 12075 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 12076 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 12077 12078 120792) iASL Compiler/Disassembler: 12080 12081Updated the disassembler to automatically insert an EndDependentFn() 12082macro 12083into the ASL stream if this macro is missing in the original AML code, 12084simplifying compilation of the resulting ASL module. 12085 12086Fixed a problem in the disassembler where a disassembled ResourceSource 12087string (within a large resource descriptor) was not surrounded by quotes 12088and 12089not followed by a comma, causing errors when the resulting ASL module was 12090compiled. Also, escape sequences within a ResourceSource string are now 12091handled correctly (especially "\\") 12092 12093---------------------------------------- 1209402 September 2005. Summary of changes for version 20050902: 12095 120961) ACPI CA Core Subsystem: 12097 12098Fixed a problem with the internal Owner ID allocation and deallocation 12099mechanisms for control method execution and recursive method invocation. 12100This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 12101messages seen on some systems. Recursive method invocation depth is 12102currently limited to 255. (Alexey Starikovskiy) 12103 12104Completely eliminated all vestiges of support for the "module-level 12105executable code" until this support is fully implemented and debugged. 12106This 12107should eliminate the NO_RETURN_VALUE exceptions seen during table load on 12108some systems that invoke this support. 12109 12110Fixed a problem within the resource manager code where the transaction 12111flags 12112for a 64-bit address descriptor were handled incorrectly in the type- 12113specific flag byte. 12114 12115Consolidated duplicate code within the address descriptor resource 12116manager 12117code, reducing overall subsystem code size. 12118 12119Fixed a fault when using the AML debugger "disassemble" command to 12120disassemble individual control methods. 12121 12122Removed references to the "release_current" directory within the Unix 12123release package. 12124 12125Code and Data Size: The current and previous core subsystem library sizes 12126are shown below. These are the code and data sizes for the acpica.lib 12127produced by the Microsoft Visual C++ 6.0 compiler. These values do not 12128include any ACPI driver or OSPM code. The debug version of the code 12129includes 12130the debug output trace mechanism and has a much larger code and data 12131size. 12132Note that these values will vary depending on the efficiency of the 12133compiler 12134and the compiler options used during generation. 12135 12136 Previous Release: 12137 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12138 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12139 Current Release: 12140 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 12141 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 12142 12143 121442) iASL Compiler/Disassembler: 12145 12146Implemented an error check for illegal duplicate values in the interrupt 12147and 12148dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 12149Interrupt(). 12150 12151Implemented error checking for the Irq() and IrqNoFlags() macros to 12152detect 12153too many values in the interrupt list (16 max) and invalid values in the 12154list (range 0 - 15) 12155 12156The maximum length string literal within an ASL file is now restricted to 12157200 characters as per the ACPI specification. 12158 12159Fixed a fault when using the -ln option (generate namespace listing). 12160 12161Implemented an error check to determine if a DescriptorName within a 12162resource descriptor has already been used within the current scope. 12163 12164---------------------------------------- 1216515 August 2005. Summary of changes for version 20050815: 12166 121671) ACPI CA Core Subsystem: 12168 12169Implemented a full bytewise compare to determine if a table load request 12170is 12171attempting to load a duplicate table. The compare is performed if the 12172table 12173signatures and table lengths match. This will allow different tables with 12174the same OEM Table ID and revision to be loaded - probably against the 12175ACPI 12176specification, but discovered in the field nonetheless. 12177 12178Added the changes.txt logfile to each of the zipped release packages. 12179 12180Code and Data Size: Current and previous core subsystem library sizes are 12181shown below. These are the code and data sizes for the acpica.lib 12182produced 12183by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12184any ACPI driver or OSPM code. The debug version of the code includes the 12185debug output trace mechanism and has a much larger code and data size. 12186Note 12187that these values will vary depending on the efficiency of the compiler 12188and 12189the compiler options used during generation. 12190 12191 Previous Release: 12192 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12193 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12194 Current Release: 12195 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12196 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 12197 12198 121992) iASL Compiler/Disassembler: 12200 12201Fixed a problem where incorrect AML code could be generated for Package 12202objects if optimization is disabled (via the -oa switch). 12203 12204Fixed a problem with where incorrect AML code is generated for variable- 12205length packages when the package length is not specified and the number 12206of 12207initializer values is greater than 255. 12208 12209 12210---------------------------------------- 1221129 July 2005. Summary of changes for version 20050729: 12212 122131) ACPI CA Core Subsystem: 12214 12215Implemented support to ignore an attempt to install/load a particular 12216ACPI 12217table more than once. Apparently there exists BIOS code that repeatedly 12218attempts to load the same SSDT upon certain events. With assistance from 12219Venkatesh Pallipadi. 12220 12221Restructured the main interface to the AML parser in order to correctly 12222handle all exceptional conditions. This will prevent leakage of the 12223OwnerId 12224resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 12225some 12226machines. With assistance from Alexey Starikovskiy. 12227 12228Support for "module level code" has been disabled in this version due to 12229a 12230number of issues that have appeared on various machines. The support can 12231be 12232enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 12233compilation. When the issues are fully resolved, the code will be enabled 12234by 12235default again. 12236 12237Modified the internal functions for debug print support to define the 12238FunctionName parameter as a (const char *) for compatibility with 12239compiler 12240built-in macros such as __FUNCTION__, etc. 12241 12242Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12243 12244Implemented support to display an object count summary for the AML 12245Debugger 12246commands Object and Methods. 12247 12248Code and Data Size: Current and previous core subsystem library sizes are 12249shown below. These are the code and data sizes for the acpica.lib 12250produced 12251by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12252any ACPI driver or OSPM code. The debug version of the code includes the 12253debug output trace mechanism and has a much larger code and data size. 12254Note 12255that these values will vary depending on the efficiency of the compiler 12256and 12257the compiler options used during generation. 12258 12259 Previous Release: 12260 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12261 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12262 Current Release: 12263 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12264 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12265 12266 122672) iASL Compiler/Disassembler: 12268 12269Fixed a regression that appeared in the 20050708 version of the compiler 12270where an error message was inadvertently emitted for invocations of the 12271_OSI 12272reserved control method. 12273 12274---------------------------------------- 1227508 July 2005. Summary of changes for version 20050708: 12276 122771) ACPI CA Core Subsystem: 12278 12279The use of the CPU stack in the debug version of the subsystem has been 12280considerably reduced. Previously, a debug structure was declared in every 12281function that used the debug macros. This structure has been removed in 12282favor of declaring the individual elements as parameters to the debug 12283functions. This reduces the cumulative stack use during nested execution 12284of 12285ACPI function calls at the cost of a small increase in the code size of 12286the 12287debug version of the subsystem. With assistance from Alexey Starikovskiy 12288and 12289Len Brown. 12290 12291Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12292headers to define a macro that will return the current function name at 12293runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12294by 12295the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12296compiler-dependent header, the function name is saved on the CPU stack 12297(one 12298pointer per function.) This mechanism is used because apparently there 12299exists no standard ANSI-C defined macro that that returns the function 12300name. 12301 12302Redesigned and reimplemented the "Owner ID" mechanism used to track 12303namespace objects created/deleted by ACPI tables and control method 12304execution. A bitmap is now used to allocate and free the IDs, thus 12305solving 12306the wraparound problem present in the previous implementation. The size 12307of 12308the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12309Starikovskiy). 12310 12311Removed the UINT32_BIT and UINT16_BIT types that were used for the 12312bitfield 12313flag definitions within the headers for the predefined ACPI tables. These 12314have been replaced by UINT8_BIT in order to increase the code portability 12315of 12316the subsystem. If the use of UINT8 remains a problem, we may be forced to 12317eliminate bitfields entirely because of a lack of portability. 12318 12319Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12320This 12321is a frequently used function and this improvement increases the 12322performance 12323of the entire subsystem (Alexey Starikovskiy). 12324 12325Fixed several possible memory leaks and the inverse - premature object 12326deletion (Alexey Starikovskiy). 12327 12328Code and Data Size: Current and previous core subsystem library sizes are 12329shown below. These are the code and data sizes for the acpica.lib 12330produced 12331by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12332any ACPI driver or OSPM code. The debug version of the code includes the 12333debug output trace mechanism and has a much larger code and data size. 12334Note 12335that these values will vary depending on the efficiency of the compiler 12336and 12337the compiler options used during generation. 12338 12339 Previous Release: 12340 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12341 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12342 Current Release: 12343 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12344 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12345 12346---------------------------------------- 1234724 June 2005. Summary of changes for version 20050624: 12348 123491) ACPI CA Core Subsystem: 12350 12351Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12352the host-defined cache object. This allows the OSL implementation to 12353define 12354and type this object in any manner desired, simplifying the OSL 12355implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12356Linux, and should be defined in the OS-specific header file for other 12357operating systems as required. 12358 12359Changed the interface to AcpiOsAcquireObject to directly return the 12360requested object as the function return (instead of ACPI_STATUS.) This 12361change was made for performance reasons, since this is the purpose of the 12362interface in the first place. AcpiOsAcquireObject is now similar to the 12363AcpiOsAllocate interface. 12364 12365Implemented a new AML debugger command named Businfo. This command 12366displays 12367information about all devices that have an associate _PRT object. The 12368_ADR, 12369_HID, _UID, and _CID are displayed for these devices. 12370 12371Modified the initialization sequence in AcpiInitializeSubsystem to call 12372the 12373OSL interface AcpiOslInitialize first, before any local initialization. 12374This 12375change was required because the global initialization now calls OSL 12376interfaces. 12377 12378Enhanced the Dump command to display the entire contents of Package 12379objects 12380(including all sub-objects and their values.) 12381 12382Restructured the code base to split some files because of size and/or 12383because the code logically belonged in a separate file. New files are 12384listed 12385below. All makefiles and project files included in the ACPI CA release 12386have 12387been updated. 12388 utilities/utcache.c /* Local cache interfaces */ 12389 utilities/utmutex.c /* Local mutex support */ 12390 utilities/utstate.c /* State object support */ 12391 interpreter/parser/psloop.c /* Main AML parse loop */ 12392 12393Code and Data Size: Current and previous core subsystem library sizes are 12394shown below. These are the code and data sizes for the acpica.lib 12395produced 12396by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12397any ACPI driver or OSPM code. The debug version of the code includes the 12398debug output trace mechanism and has a much larger code and data size. 12399Note 12400that these values will vary depending on the efficiency of the compiler 12401and 12402the compiler options used during generation. 12403 12404 Previous Release: 12405 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12406 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12407 Current Release: 12408 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12409 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12410 12411 124122) iASL Compiler/Disassembler: 12413 12414Fixed a regression introduced in version 20050513 where the use of a 12415Package 12416object within a Case() statement caused a compile time exception. The 12417original behavior has been restored (a Match() operator is emitted.) 12418 12419---------------------------------------- 1242017 June 2005. Summary of changes for version 20050617: 12421 124221) ACPI CA Core Subsystem: 12423 12424Moved the object cache operations into the OS interface layer (OSL) to 12425allow 12426the host OS to handle these operations if desired (for example, the Linux 12427OSL will invoke the slab allocator). This support is optional; the 12428compile 12429time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 12430cache 12431code in the ACPI CA core. The new OSL interfaces are shown below. See 12432utalloc.c for an example implementation, and acpiosxf.h for the exact 12433interface definitions. With assistance from Alexey Starikovskiy. 12434 AcpiOsCreateCache 12435 AcpiOsDeleteCache 12436 AcpiOsPurgeCache 12437 AcpiOsAcquireObject 12438 AcpiOsReleaseObject 12439 12440Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 12441return 12442and restore a flags parameter. This fits better with many OS lock models. 12443Note: the current execution state (interrupt handler or not) is no longer 12444passed to these interfaces. If necessary, the OSL must determine this 12445state 12446by itself, a simple and fast operation. With assistance from Alexey 12447Starikovskiy. 12448 12449Fixed a problem in the ACPI table handling where a valid XSDT was assumed 12450present if the revision of the RSDP was 2 or greater. According to the 12451ACPI 12452specification, the XSDT is optional in all cases, and the table manager 12453therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 12454Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 12455contain 12456only the RSDT. 12457 12458Fixed an interpreter problem with the Mid() operator in the case of an 12459input 12460string where the resulting output string is of zero length. It now 12461correctly 12462returns a valid, null terminated string object instead of a string object 12463with a null pointer. 12464 12465Fixed a problem with the control method argument handling to allow a 12466store 12467to an Arg object that already contains an object of type Device. The 12468Device 12469object is now correctly overwritten. Previously, an error was returned. 12470 12471 12472Enhanced the debugger Find command to emit object values in addition to 12473the 12474found object pathnames. The output format is the same as the dump 12475namespace 12476command. 12477 12478Enhanced the debugger Set command. It now has the ability to set the 12479value 12480of any Named integer object in the namespace (Previously, only method 12481locals 12482and args could be set.) 12483 12484Code and Data Size: Current and previous core subsystem library sizes are 12485shown below. These are the code and data sizes for the acpica.lib 12486produced 12487by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12488any ACPI driver or OSPM code. The debug version of the code includes the 12489debug output trace mechanism and has a much larger code and data size. 12490Note 12491that these values will vary depending on the efficiency of the compiler 12492and 12493the compiler options used during generation. 12494 12495 Previous Release: 12496 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12497 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12498 Current Release: 12499 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12500 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12501 12502 125032) iASL Compiler/Disassembler: 12504 12505Fixed a regression in the disassembler where if/else/while constructs 12506were 12507output incorrectly. This problem was introduced in the previous release 12508(20050526). This problem also affected the single-step disassembly in the 12509debugger. 12510 12511Fixed a problem where compiling the reserved _OSI method would randomly 12512(but 12513rarely) produce compile errors. 12514 12515Enhanced the disassembler to emit compilable code in the face of 12516incorrect 12517AML resource descriptors. If the optional ResourceSourceIndex is present, 12518but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12519disassembly. Otherwise, the resulting code cannot be compiled without 12520errors. 12521 12522---------------------------------------- 1252326 May 2005. Summary of changes for version 20050526: 12524 125251) ACPI CA Core Subsystem: 12526 12527Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12528the module level (not within a control method.) These opcodes are 12529executed 12530exactly once at the time the table is loaded. This type of code was legal 12531up 12532until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12533in 12534order to provide backwards compatibility with earlier BIOS 12535implementations. 12536This eliminates the "Encountered executable code at module level" warning 12537that was previously generated upon detection of such code. 12538 12539Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12540inadvertently be generated during the lookup of namespace objects in the 12541second pass parse of ACPI tables and control methods. It appears that 12542this 12543problem could occur during the resolution of forward references to 12544namespace 12545objects. 12546 12547Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12548corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12549allows the deadlock detection debug code to be compiled out in the normal 12550case, improving mutex performance (and overall subsystem performance) 12551considerably. 12552 12553Implemented a handful of miscellaneous fixes for possible memory leaks on 12554error conditions and error handling control paths. These fixes were 12555suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12556 12557Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12558(tbxfroot.c) 12559to prevent a fault in this error case. 12560 12561Code and Data Size: Current and previous core subsystem library sizes are 12562shown below. These are the code and data sizes for the acpica.lib 12563produced 12564by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12565any ACPI driver or OSPM code. The debug version of the code includes the 12566debug output trace mechanism and has a much larger code and data size. 12567Note 12568that these values will vary depending on the efficiency of the compiler 12569and 12570the compiler options used during generation. 12571 12572 Previous Release: 12573 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12574 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12575 Current Release: 12576 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12577 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12578 12579 125802) iASL Compiler/Disassembler: 12581 12582Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12583the module level (not within a control method.) These operators will be 12584executed once at the time the table is loaded. This type of code was 12585legal 12586up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12587compiler in order to provide backwards compatibility with earlier BIOS 12588ASL 12589code. 12590 12591The ACPI integer width (specified via the table revision ID or the -r 12592override, 32 or 64 bits) is now used internally during compile-time 12593constant 12594folding to ensure that constants are truncated to 32 bits if necessary. 12595Previously, the revision ID value was only emitted in the AML table 12596header. 12597 12598An error message is now generated for the Mutex and Method operators if 12599the 12600SyncLevel parameter is outside the legal range of 0 through 15. 12601 12602Fixed a problem with the Method operator ParameterTypes list handling 12603(ACPI 126043.0). Previously, more than 2 types or 2 arguments generated a syntax 12605error. 12606The actual underlying implementation of method argument typechecking is 12607still under development, however. 12608 12609---------------------------------------- 1261013 May 2005. Summary of changes for version 20050513: 12611 126121) ACPI CA Core Subsystem: 12613 12614Implemented support for PCI Express root bridges -- added support for 12615device 12616PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12617 12618The interpreter now automatically truncates incoming 64-bit constants to 1261932 12620bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12621This 12622also affects the iASL compiler constant folding. (Note: as per below, the 12623iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12624 12625Fixed a problem where string and buffer objects with "static" pointers 12626(pointers to initialization data within an ACPI table) were not handled 12627consistently. The internal object copy operation now always copies the 12628data 12629to a newly allocated buffer, regardless of whether the source object is 12630static or not. 12631 12632Fixed a problem with the FromBCD operator where an implicit result 12633conversion was improperly performed while storing the result to the 12634target 12635operand. Since this is an "explicit conversion" operator, the implicit 12636conversion should never be performed on the output. 12637 12638Fixed a problem with the CopyObject operator where a copy to an existing 12639named object did not always completely overwrite the existing object 12640stored 12641at name. Specifically, a buffer-to-buffer copy did not delete the 12642existing 12643buffer. 12644 12645Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12646and 12647structs for consistency. 12648 12649Code and Data Size: Current and previous core subsystem library sizes are 12650shown below. These are the code and data sizes for the acpica.lib 12651produced 12652by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12653any ACPI driver or OSPM code. The debug version of the code includes the 12654debug output trace mechanism and has a much larger code and data size. 12655Note 12656that these values will vary depending on the efficiency of the compiler 12657and 12658the compiler options used during generation. 12659 12660 Previous Release: 12661 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12662 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12663 Current Release: (Same sizes) 12664 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12665 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12666 12667 126682) iASL Compiler/Disassembler: 12669 12670The compiler now emits a warning if an attempt is made to generate a 64- 12671bit 12672integer constant from within a 32-bit ACPI table (Revision < 2). The 12673integer 12674is truncated to 32 bits. 12675 12676Fixed a problem with large package objects: if the static length of the 12677package is greater than 255, the "variable length package" opcode is 12678emitted. Previously, this caused an error. This requires an update to the 12679ACPI spec, since it currently (incorrectly) states that packages larger 12680than 12681255 elements are not allowed. 12682 12683The disassembler now correctly handles variable length packages and 12684packages 12685larger than 255 elements. 12686 12687---------------------------------------- 1268808 April 2005. Summary of changes for version 20050408: 12689 126901) ACPI CA Core Subsystem: 12691 12692Fixed three cases in the interpreter where an "index" argument to an ASL 12693function was still (internally) 32 bits instead of the required 64 bits. 12694This was the Index argument to the Index, Mid, and Match operators. 12695 12696The "strupr" function is now permanently local (AcpiUtStrupr), since this 12697is 12698not a POSIX-defined function and not present in most kernel-level C 12699libraries. All references to the C library strupr function have been 12700removed 12701from the headers. 12702 12703Completed the deployment of static functions/prototypes. All prototypes 12704with 12705the static attribute have been moved from the headers to the owning C 12706file. 12707 12708Implemented an extract option (-e) for the AcpiBin utility (AML binary 12709utility). This option allows the utility to extract individual ACPI 12710tables 12711from the output of AcpiDmp. It provides the same functionality of the 12712acpixtract.pl perl script without the worry of setting the correct perl 12713options. AcpiBin runs on Windows and has not yet been generated/validated 12714in 12715the Linux/Unix environment (but should be soon). 12716 12717Updated and fixed the table dump option for AcpiBin (-d). This option 12718converts a single ACPI table to a hex/ascii file, similar to the output 12719of 12720AcpiDmp. 12721 12722Code and Data Size: Current and previous core subsystem library sizes are 12723shown below. These are the code and data sizes for the acpica.lib 12724produced 12725by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12726any ACPI driver or OSPM code. The debug version of the code includes the 12727debug output trace mechanism and has a much larger code and data size. 12728Note 12729that these values will vary depending on the efficiency of the compiler 12730and 12731the compiler options used during generation. 12732 12733 Previous Release: 12734 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12735 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12736 Current Release: 12737 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12738 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12739 12740 127412) iASL Compiler/Disassembler: 12742 12743Disassembler fix: Added a check to ensure that the table length found in 12744the 12745ACPI table header within the input file is not longer than the actual 12746input 12747file size. This indicates some kind of file or table corruption. 12748 12749---------------------------------------- 1275029 March 2005. Summary of changes for version 20050329: 12751 127521) ACPI CA Core Subsystem: 12753 12754An error is now generated if an attempt is made to create a Buffer Field 12755of 12756length zero (A CreateField with a length operand of zero.) 12757 12758The interpreter now issues a warning whenever executable code at the 12759module 12760level is detected during ACPI table load. This will give some idea of the 12761prevalence of this type of code. 12762 12763Implemented support for references to named objects (other than control 12764methods) within package objects. 12765 12766Enhanced package object output for the debug object. Package objects are 12767now 12768completely dumped, showing all elements. 12769 12770Enhanced miscellaneous object output for the debug object. Any object can 12771now be written to the debug object (for example, a device object can be 12772written, and the type of the object will be displayed.) 12773 12774The "static" qualifier has been added to all local functions across both 12775the 12776core subsystem and the iASL compiler. 12777 12778The number of "long" lines (> 80 chars) within the source has been 12779significantly reduced, by about 1/3. 12780 12781Cleaned up all header files to ensure that all CA/iASL functions are 12782prototyped (even static functions) and the formatting is consistent. 12783 12784Two new header files have been added, acopcode.h and acnames.h. 12785 12786Removed several obsolete functions that were no longer used. 12787 12788Code and Data Size: Current and previous core subsystem library sizes are 12789shown below. These are the code and data sizes for the acpica.lib 12790produced 12791by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12792any ACPI driver or OSPM code. The debug version of the code includes the 12793debug output trace mechanism and has a much larger code and data size. 12794Note 12795that these values will vary depending on the efficiency of the compiler 12796and 12797the compiler options used during generation. 12798 12799 Previous Release: 12800 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12801 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12802 Current Release: 12803 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12804 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12805 12806 12807 128082) iASL Compiler/Disassembler: 12809 12810Fixed a problem with the resource descriptor generation/support. For the 12811ResourceSourceIndex and the ResourceSource fields, both must be present, 12812or 12813both must be not present - can't have one without the other. 12814 12815The compiler now returns non-zero from the main procedure if any errors 12816have 12817occurred during the compilation. 12818 12819 12820---------------------------------------- 1282109 March 2005. Summary of changes for version 20050309: 12822 128231) ACPI CA Core Subsystem: 12824 12825The string-to-buffer implicit conversion code has been modified again 12826after 12827a change to the ACPI specification. In order to match the behavior of 12828the 12829other major ACPI implementation, the target buffer is no longer truncated 12830if 12831the source string is smaller than an existing target buffer. This change 12832requires an update to the ACPI spec, and should eliminate the recent 12833AE_AML_BUFFER_LIMIT issues. 12834 12835The "implicit return" support was rewritten to a new algorithm that 12836solves 12837the general case. Rather than attempt to determine when a method is about 12838to 12839exit, the result of every ASL operator is saved momentarily until the 12840very 12841next ASL operator is executed. Therefore, no matter how the method exits, 12842there will always be a saved implicit return value. This feature is only 12843enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12844eliminate 12845AE_AML_NO_RETURN_VALUE errors when enabled. 12846 12847Implemented implicit conversion support for the predicate (operand) of 12848the 12849If, Else, and While operators. String and Buffer arguments are 12850automatically 12851converted to Integers. 12852 12853Changed the string-to-integer conversion behavior to match the new ACPI 12854errata: "If no integer object exists, a new integer is created. The ASCII 12855string is interpreted as a hexadecimal constant. Each string character is 12856interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12857with the first character as the most significant digit, and ending with 12858the 12859first non-hexadecimal character or end-of-string." This means that the 12860first 12861non-hex character terminates the conversion and this is the code that was 12862changed. 12863 12864Fixed a problem where the ObjectType operator would fail (fault) when 12865used 12866on an Index of a Package which pointed to a null package element. The 12867operator now properly returns zero (Uninitialized) in this case. 12868 12869Fixed a problem where the While operator used excessive memory by not 12870properly popping the result stack during execution. There was no memory 12871leak 12872after execution, however. (Code provided by Valery Podrezov.) 12873 12874Fixed a problem where references to control methods within Package 12875objects 12876caused the method to be invoked, instead of producing a reference object 12877pointing to the method. 12878 12879Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12880to 12881improve performance and reduce code size. (Code provided by Alexey 12882Starikovskiy.) 12883 12884Code and Data Size: Current and previous core subsystem library sizes are 12885shown below. These are the code and data sizes for the acpica.lib 12886produced 12887by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12888any ACPI driver or OSPM code. The debug version of the code includes the 12889debug output trace mechanism and has a much larger code and data size. 12890Note 12891that these values will vary depending on the efficiency of the compiler 12892and 12893the compiler options used during generation. 12894 12895 Previous Release: 12896 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12897 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12898 Current Release: 12899 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12900 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12901 12902 129032) iASL Compiler/Disassembler: 12904 12905Fixed a problem with the Return operator with no arguments. Since the AML 12906grammar for the byte encoding requires an operand for the Return opcode, 12907the 12908compiler now emits a Return(Zero) for this case. An ACPI specification 12909update has been written for this case. 12910 12911For tables other than the DSDT, namepath optimization is automatically 12912disabled. This is because SSDTs can be loaded anywhere in the namespace, 12913the 12914compiler has no knowledge of where, and thus cannot optimize namepaths. 12915 12916Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12917inadvertently omitted from the ACPI specification, and will require an 12918update to the spec. 12919 12920The source file scan for ASCII characters is now optional (-a). This 12921change 12922was made because some vendors place non-ascii characters within comments. 12923However, the scan is simply a brute-force byte compare to ensure all 12924characters in the file are in the range 0x00 to 0x7F. 12925 12926Fixed a problem with the CondRefOf operator where the compiler was 12927inappropriately checking for the existence of the target. Since the point 12928of 12929the operator is to check for the existence of the target at run-time, the 12930compiler no longer checks for the target existence. 12931 12932Fixed a problem where errors generated from the internal AML interpreter 12933during constant folding were not handled properly, causing a fault. 12934 12935Fixed a problem with overly aggressive range checking for the Stall 12936operator. The valid range (max 255) is now only checked if the operand is 12937of 12938type Integer. All other operand types cannot be statically checked. 12939 12940Fixed a problem where control method references within the RefOf, 12941DeRefOf, 12942and ObjectType operators were not treated properly. They are now treated 12943as 12944actual references, not method invocations. 12945 12946Fixed and enhanced the "list namespace" option (-ln). This option was 12947broken 12948a number of releases ago. 12949 12950Improved error handling for the Field, IndexField, and BankField 12951operators. 12952The compiler now cleanly reports and recovers from errors in the field 12953component (FieldUnit) list. 12954 12955Fixed a disassembler problem where the optional ResourceDescriptor fields 12956TRS and TTP were not always handled correctly. 12957 12958Disassembler - Comments in output now use "//" instead of "/*" 12959 12960---------------------------------------- 1296128 February 2005. Summary of changes for version 20050228: 12962 129631) ACPI CA Core Subsystem: 12964 12965Fixed a problem where the result of an Index() operator (an object 12966reference) must increment the reference count on the target object for 12967the 12968life of the object reference. 12969 12970Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12971Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12972WordSpace 12973resource descriptors. 12974 12975Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12976Space Descriptor" string, indicating interpreter support for the 12977descriptors 12978above. 12979 12980Implemented header support for the new ACPI 3.0 FADT flag bits. 12981 12982Implemented header support for the new ACPI 3.0 PCI Express bits for the 12983PM1 12984status/enable registers. 12985 12986Updated header support for the MADT processor local Apic struct and MADT 12987platform interrupt source struct for new ACPI 3.0 fields. 12988 12989Implemented header support for the SRAT and SLIT ACPI tables. 12990 12991Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12992flag 12993at runtime. 12994 12995Code and Data Size: Current and previous core subsystem library sizes are 12996shown below. These are the code and data sizes for the acpica.lib 12997produced 12998by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12999any ACPI driver or OSPM code. The debug version of the code includes the 13000debug output trace mechanism and has a much larger code and data size. 13001Note 13002that these values will vary depending on the efficiency of the compiler 13003and 13004the compiler options used during generation. 13005 13006 Previous Release: 13007 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13008 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13009 Current Release: 13010 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13011 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 13012 13013 130142) iASL Compiler/Disassembler: 13015 13016Fixed a problem with the internal 64-bit String-to-integer conversion 13017with 13018strings less than two characters long. 13019 13020Fixed a problem with constant folding where the result of the Index() 13021operator can not be considered a constant. This means that Index() cannot 13022be 13023a type3 opcode and this will require an update to the ACPI specification. 13024 13025Disassembler: Implemented support for the TTP, MTP, and TRS resource 13026descriptor fields. These fields were inadvertently ignored and not output 13027in 13028the disassembly of the resource descriptor. 13029 13030 13031 ---------------------------------------- 1303211 February 2005. Summary of changes for version 20050211: 13033 130341) ACPI CA Core Subsystem: 13035 13036Implemented ACPI 3.0 support for implicit conversion within the Match() 13037operator. MatchObjects can now be of type integer, buffer, or string 13038instead 13039of just type integer. Package elements are implicitly converted to the 13040type 13041of the MatchObject. This change aligns the behavior of Match() with the 13042behavior of the other logical operators (LLess(), etc.) It also requires 13043an 13044errata change to the ACPI specification as this support was intended for 13045ACPI 3.0, but was inadvertently omitted. 13046 13047Fixed a problem with the internal implicit "to buffer" conversion. 13048Strings 13049that are converted to buffers will cause buffer truncation if the string 13050is 13051smaller than the target buffer. Integers that are converted to buffers 13052will 13053not cause buffer truncation, only zero extension (both as per the ACPI 13054spec.) The problem was introduced when code was added to truncate the 13055buffer, but this should not be performed in all cases, only the string 13056case. 13057 13058Fixed a problem with the Buffer and Package operators where the 13059interpreter 13060would get confused if two such operators were used as operands to an ASL 13061operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 13062stack was not being popped after the execution of these operators, 13063resulting 13064in an AE_NO_RETURN_VALUE exception. 13065 13066Fixed a problem with constructs of the form Store(Index(...),...). The 13067reference object returned from Index was inadvertently resolved to an 13068actual 13069value. This problem was introduced in version 20050114 when the behavior 13070of 13071Store() was modified to restrict the object types that can be used as the 13072source operand (to match the ACPI specification.) 13073 13074Reduced excessive stack use within the AcpiGetObjectInfo procedure. 13075 13076Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 13077 13078Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 13079 13080Code and Data Size: Current and previous core subsystem library sizes are 13081shown below. These are the code and data sizes for the acpica.lib 13082produced 13083by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13084any ACPI driver or OSPM code. The debug version of the code includes the 13085debug output trace mechanism and has a much larger code and data size. 13086Note 13087that these values will vary depending on the efficiency of the compiler 13088and 13089the compiler options used during generation. 13090 13091 Previous Release: 13092 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13093 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13094 Current Release: 13095 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 13096 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 13097 13098 130992) iASL Compiler/Disassembler: 13100 13101Fixed a code generation problem in the constant folding optimization code 13102where incorrect code was generated if a constant was reduced to a buffer 13103object (i.e., a reduced type 5 opcode.) 13104 13105Fixed a typechecking problem for the ToBuffer operator. Caused by an 13106incorrect return type in the internal opcode information table. 13107 13108---------------------------------------- 1310925 January 2005. Summary of changes for version 20050125: 13110 131111) ACPI CA Core Subsystem: 13112 13113Fixed a recently introduced problem with the Global Lock where the 13114underlying semaphore was not created. This problem was introduced in 13115version 20050114, and caused an AE_AML_NO_OPERAND exception during an 13116Acquire() operation on _GL. 13117 13118The local object cache is now optional, and is disabled by default. Both 13119AcpiExec and the iASL compiler enable the cache because they run in user 13120mode and this enhances their performance. #define 13121ACPI_ENABLE_OBJECT_CACHE 13122to enable the local cache. 13123 13124Fixed an issue in the internal function AcpiUtEvaluateObject concerning 13125the 13126optional "implicit return" support where an error was returned if no 13127return 13128object was expected, but one was implicitly returned. AE_OK is now 13129returned 13130in this case and the implicitly returned object is deleted. 13131AcpiUtEvaluateObject is only occasionally used, and only to execute 13132reserved 13133methods such as _STA and _INI where the return type is known up front. 13134 13135Fixed a few issues with the internal convert-to-integer code. It now 13136returns 13137an error if an attempt is made to convert a null string, a string of only 13138blanks/tabs, or a zero-length buffer. This affects both implicit 13139conversion 13140and explicit conversion via the ToInteger() operator. 13141 13142The internal debug code in AcpiUtAcquireMutex has been commented out. It 13143is 13144not needed for normal operation and should increase the performance of 13145the 13146entire subsystem. The code remains in case it is needed for debug 13147purposes 13148again. 13149 13150The AcpiExec source and makefile are included in the Unix/Linux package 13151for 13152the first time. 13153 13154Code and Data Size: Current and previous core subsystem library sizes are 13155shown below. These are the code and data sizes for the acpica.lib 13156produced 13157by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13158any ACPI driver or OSPM code. The debug version of the code includes the 13159debug output trace mechanism and has a much larger code and data size. 13160Note 13161that these values will vary depending on the efficiency of the compiler 13162and 13163the compiler options used during generation. 13164 13165 Previous Release: 13166 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13167 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13168 Current Release: 13169 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 13170 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 13171 131722) iASL Compiler/Disassembler: 13173 13174Switch/Case support: A warning is now issued if the type of the Switch 13175value 13176cannot be determined at compile time. For example, Switch(Arg0) will 13177generate the warning, and the type is assumed to be an integer. As per 13178the 13179ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 13180the 13181warning. 13182 13183Switch/Case support: Implemented support for buffer and string objects as 13184the switch value. This is an ACPI 3.0 feature, now that LEqual supports 13185buffers and strings. 13186 13187Switch/Case support: The emitted code for the LEqual() comparisons now 13188uses 13189the switch value as the first operand, not the second. The case value is 13190now 13191the second operand, and this allows the case value to be implicitly 13192converted to the type of the switch value, not the other way around. 13193 13194Switch/Case support: Temporary variables are now emitted immediately 13195within 13196the control method, not at the global level. This means that there are 13197now 1319836 temps available per-method, not 36 temps per-module as was the case 13199with 13200the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 13201 13202---------------------------------------- 1320314 January 2005. Summary of changes for version 20050114: 13204 13205Added 2005 copyright to all module headers. This affects every module in 13206the core subsystem, iASL compiler, and the utilities. 13207 132081) ACPI CA Core Subsystem: 13209 13210Fixed an issue with the String-to-Buffer conversion code where the string 13211null terminator was not included in the buffer after conversion, but 13212there 13213is existing ASL that assumes the string null terminator is included. This 13214is 13215the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 13216introduced in the previous version when the code was updated to correctly 13217set the converted buffer size as per the ACPI specification. The ACPI 13218spec 13219is ambiguous and will be updated to specify that the null terminator must 13220be 13221included in the converted buffer. This also affects the ToBuffer() ASL 13222operator. 13223 13224Fixed a problem with the Mid() ASL/AML operator where it did not work 13225correctly on Buffer objects. Newly created sub-buffers were not being 13226marked 13227as initialized. 13228 13229 13230Fixed a problem in AcpiTbFindTable where incorrect string compares were 13231performed on the OemId and OemTableId table header fields. These fields 13232are 13233not null terminated, so strncmp is now used instead of strcmp. 13234 13235Implemented a restriction on the Store() ASL/AML operator to align the 13236behavior with the ACPI specification. Previously, any object could be 13237used 13238as the source operand. Now, the only objects that may be used are 13239Integers, 13240Buffers, Strings, Packages, Object References, and DDB Handles. If 13241necessary, the original behavior can be restored by enabling the 13242EnableInterpreterSlack flag. 13243 13244Enhanced the optional "implicit return" support to allow an implicit 13245return 13246value from methods that are invoked externally via the AcpiEvaluateObject 13247interface. This enables implicit returns from the _STA and _INI methods, 13248for example. 13249 13250Changed the Revision() ASL/AML operator to return the current version of 13251the 13252AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13253returned 13254the supported ACPI version (This is the function of the _REV method). 13255 13256Updated the _REV predefined method to return the currently supported 13257version 13258of ACPI, now 3. 13259 13260Implemented batch mode option for the AcpiExec utility (-b). 13261 13262Code and Data Size: Current and previous core subsystem library sizes are 13263shown below. These are the code and data sizes for the acpica.lib 13264produced 13265by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13266any ACPI driver or OSPM code. The debug version of the code includes the 13267debug output trace mechanism and has a much larger code and data size. 13268Note 13269that these values will vary depending on the efficiency of the compiler 13270and 13271the compiler options used during generation. 13272 13273 Previous Release: 13274 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13275 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13276 Current Release: 13277 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13278 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13279 13280---------------------------------------- 1328110 December 2004. Summary of changes for version 20041210: 13282 13283ACPI 3.0 support is nearing completion in both the iASL compiler and the 13284ACPI CA core subsystem. 13285 132861) ACPI CA Core Subsystem: 13287 13288Fixed a problem in the ToDecimalString operator where the resulting 13289string 13290length was incorrectly calculated. The length is now calculated exactly, 13291eliminating incorrect AE_STRING_LIMIT exceptions. 13292 13293Fixed a problem in the ToHexString operator to allow a maximum 200 13294character 13295string to be produced. 13296 13297Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13298copy 13299routine where the length of the resulting buffer was not truncated to the 13300new size (if the target buffer already existed). 13301 13302Code and Data Size: Current and previous core subsystem library sizes are 13303shown below. These are the code and data sizes for the acpica.lib 13304produced 13305by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13306any ACPI driver or OSPM code. The debug version of the code includes the 13307debug output trace mechanism and has a much larger code and data size. 13308Note 13309that these values will vary depending on the efficiency of the compiler 13310and 13311the compiler options used during generation. 13312 13313 Previous Release: 13314 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13315 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13316 Current Release: 13317 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13318 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13319 13320 133212) iASL Compiler/Disassembler: 13322 13323Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13324ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13325Includes support in the disassembler. 13326 13327Implemented support for the new (ACPI 3.0) parameter to the Register 13328macro, 13329AccessSize. 13330 13331Fixed a problem where the _HE resource name for the Interrupt macro was 13332referencing bit 0 instead of bit 1. 13333 13334Implemented check for maximum 255 interrupts in the Interrupt macro. 13335 13336Fixed a problem with the predefined resource descriptor names where 13337incorrect AML code was generated if the offset within the resource buffer 13338was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13339but did not update the surrounding package lengths. 13340 13341Changes to the Dma macro: All channels within the channel list must be 13342in 13343the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13344optional (default is BusMaster). 13345 13346Implemented check for maximum 7 data bytes for the VendorShort macro. 13347 13348The ReadWrite parameter is now optional for the Memory32 and similar 13349macros. 13350 13351---------------------------------------- 1335203 December 2004. Summary of changes for version 20041203: 13353 133541) ACPI CA Core Subsystem: 13355 13356The low-level field insertion/extraction code (exfldio) has been 13357completely 13358rewritten to eliminate unnecessary complexity, bugs, and boundary 13359conditions. 13360 13361Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13362ToDecimalString 13363operators where the input operand could be inadvertently deleted if no 13364conversion was necessary (e.g., if the input to ToInteger was an Integer 13365object.) 13366 13367Fixed a problem with the ToDecimalString and ToHexString where an 13368incorrect 13369exception code was returned if the resulting string would be > 200 chars. 13370AE_STRING_LIMIT is now returned. 13371 13372Fixed a problem with the Concatenate operator where AE_OK was always 13373returned, even if the operation failed. 13374 13375Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13376semaphores to be allocated. 13377 13378Code and Data Size: Current and previous core subsystem library sizes are 13379shown below. These are the code and data sizes for the acpica.lib 13380produced 13381by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13382any ACPI driver or OSPM code. The debug version of the code includes the 13383debug output trace mechanism and has a much larger code and data size. 13384Note 13385that these values will vary depending on the efficiency of the compiler 13386and 13387the compiler options used during generation. 13388 13389 Previous Release: 13390 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13391 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13392 Current Release: 13393 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13394 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13395 13396 133972) iASL Compiler/Disassembler: 13398 13399Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13400recently introduced in 20041119. 13401 13402Fixed a problem with the ToUUID macro where the upper nybble of each 13403buffer 13404byte was inadvertently set to zero. 13405 13406---------------------------------------- 1340719 November 2004. Summary of changes for version 20041119: 13408 134091) ACPI CA Core Subsystem: 13410 13411Fixed a problem in the internal ConvertToInteger routine where new 13412integers 13413were not truncated to 32 bits for 32-bit ACPI tables. This routine 13414converts 13415buffers and strings to integers. 13416 13417Implemented support to store a value to an Index() on a String object. 13418This 13419is an ACPI 2.0 feature that had not yet been implemented. 13420 13421Implemented new behavior for storing objects to individual package 13422elements 13423(via the Index() operator). The previous behavior was to invoke the 13424implicit 13425conversion rules if an object was already present at the index. The new 13426behavior is to simply delete any existing object and directly store the 13427new 13428object. Although the ACPI specification seems unclear on this subject, 13429other 13430ACPI implementations behave in this manner. (This is the root of the 13431AE_BAD_HEX_CONSTANT issue.) 13432 13433Modified the RSDP memory scan mechanism to support the extended checksum 13434for 13435ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 13436RSDP signature is found with a valid checksum. 13437 13438Code and Data Size: Current and previous core subsystem library sizes are 13439shown below. These are the code and data sizes for the acpica.lib 13440produced 13441by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13442any ACPI driver or OSPM code. The debug version of the code includes the 13443debug output trace mechanism and has a much larger code and data size. 13444Note 13445that these values will vary depending on the efficiency of the compiler 13446and 13447the compiler options used during generation. 13448 13449 Previous Release: 13450 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13451 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13452 Current Release: 13453 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13454 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13455 13456 134572) iASL Compiler/Disassembler: 13458 13459Fixed a missing semicolon in the aslcompiler.y file. 13460 13461---------------------------------------- 1346205 November 2004. Summary of changes for version 20041105: 13463 134641) ACPI CA Core Subsystem: 13465 13466Implemented support for FADT revision 2. This was an interim table 13467(between 13468ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13469 13470Implemented optional support to allow uninitialized LocalX and ArgX 13471variables in a control method. The variables are initialized to an 13472Integer 13473object with a value of zero. This support is enabled by setting the 13474AcpiGbl_EnableInterpreterSlack flag to TRUE. 13475 13476Implemented support for Integer objects for the SizeOf operator. Either 134774 13478or 8 is returned, depending on the current integer size (32-bit or 64- 13479bit, 13480depending on the parent table revision). 13481 13482Fixed a problem in the implementation of the SizeOf and ObjectType 13483operators 13484where the operand was resolved to a value too early, causing incorrect 13485return values for some objects. 13486 13487Fixed some possible memory leaks during exceptional conditions. 13488 13489Code and Data Size: Current and previous core subsystem library sizes are 13490shown below. These are the code and data sizes for the acpica.lib 13491produced 13492by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13493any ACPI driver or OSPM code. The debug version of the code includes the 13494debug output trace mechanism and has a much larger code and data size. 13495Note 13496that these values will vary depending on the efficiency of the compiler 13497and 13498the compiler options used during generation. 13499 13500 Previous Release: 13501 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13502 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13503 Current Release: 13504 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13505 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13506 13507 135082) iASL Compiler/Disassembler: 13509 13510Implemented support for all ACPI 3.0 reserved names and methods. 13511 13512Implemented all ACPI 3.0 grammar elements in the front-end, including 13513support for semicolons. 13514 13515Implemented the ACPI 3.0 Function() and ToUUID() macros 13516 13517Fixed a problem in the disassembler where a Scope() operator would not be 13518emitted properly if the target of the scope was in another table. 13519 13520---------------------------------------- 1352115 October 2004. Summary of changes for version 20041015: 13522 13523Note: ACPI CA is currently undergoing an in-depth and complete formal 13524evaluation to test/verify the following areas. Other suggestions are 13525welcome. This will result in an increase in the frequency of releases and 13526the number of bug fixes in the next few months. 13527 - Functional tests for all ASL/AML operators 13528 - All implicit/explicit type conversions 13529 - Bit fields and operation regions 13530 - 64-bit math support and 32-bit-only "truncated" math support 13531 - Exceptional conditions, both compiler and interpreter 13532 - Dynamic object deletion and memory leaks 13533 - ACPI 3.0 support when implemented 13534 - External interfaces to the ACPI subsystem 13535 13536 135371) ACPI CA Core Subsystem: 13538 13539Fixed two alignment issues on 64-bit platforms - within debug statements 13540in 13541AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13542Address 13543field within the non-aligned ACPI generic address structure. 13544 13545Fixed a problem in the Increment and Decrement operators where incorrect 13546operand resolution could result in the inadvertent modification of the 13547original integer when the integer is passed into another method as an 13548argument and the arg is then incremented/decremented. 13549 13550Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13551bit 13552BCD number were truncated during conversion. 13553 13554Fixed a problem in the ToDecimal operator where the length of the 13555resulting 13556string could be set incorrectly too long if the input operand was a 13557Buffer 13558object. 13559 13560Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13561(0) 13562within a buffer would prematurely terminate a compare between buffer 13563objects. 13564 13565Added a check for string overflow (>200 characters as per the ACPI 13566specification) during the Concatenate operator with two string operands. 13567 13568Code and Data Size: Current and previous core subsystem library sizes are 13569shown below. These are the code and data sizes for the acpica.lib 13570produced 13571by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13572any ACPI driver or OSPM code. The debug version of the code includes the 13573debug output trace mechanism and has a much larger code and data size. 13574Note 13575that these values will vary depending on the efficiency of the compiler 13576and 13577the compiler options used during generation. 13578 13579 Previous Release: 13580 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13581 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13582 Current Release: 13583 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13584 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13585 13586 13587 135882) iASL Compiler/Disassembler: 13589 13590Allow the use of the ObjectType operator on uninitialized Locals and Args 13591(returns 0 as per the ACPI specification). 13592 13593Fixed a problem where the compiler would fault if there was a syntax 13594error 13595in the FieldName of all of the various CreateXXXField operators. 13596 13597Disallow the use of lower case letters within the EISAID macro, as per 13598the 13599ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13600Where 13601U is an uppercase letter and N is a hex digit. 13602 13603 13604---------------------------------------- 1360506 October 2004. Summary of changes for version 20041006: 13606 136071) ACPI CA Core Subsystem: 13608 13609Implemented support for the ACPI 3.0 Timer operator. This ASL function 13610implements a 64-bit timer with 100 nanosecond granularity. 13611 13612Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13613implement the ACPI 3.0 Timer operator. This allows the host OS to 13614implement 13615the timer with the best clock available. Also, it keeps the core 13616subsystem 13617out of the clock handling business, since the host OS (usually) performs 13618this function. 13619 13620Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13621functions use a 64-bit address which is part of the packed ACPI Generic 13622Address Structure. Since the structure is non-aligned, the alignment 13623macros 13624are now used to extract the address to a local variable before use. 13625 13626Fixed a problem where the ToInteger operator assumed all input strings 13627were 13628hexadecimal. The operator now handles both decimal strings and hex 13629strings 13630(prefixed with "0x"). 13631 13632Fixed a problem where the string length in the string object created as a 13633result of the internal ConvertToString procedure could be incorrect. This 13634potentially affected all implicit conversions and also the 13635ToDecimalString 13636and ToHexString operators. 13637 13638Fixed two problems in the ToString operator. If the length parameter was 13639zero, an incorrect string object was created and the value of the input 13640length parameter was inadvertently changed from zero to Ones. 13641 13642Fixed a problem where the optional ResourceSource string in the 13643ExtendedIRQ 13644resource macro was ignored. 13645 13646Simplified the interfaces to the internal division functions, reducing 13647code 13648size and complexity. 13649 13650Code and Data Size: Current and previous core subsystem library sizes are 13651shown below. These are the code and data sizes for the acpica.lib 13652produced 13653by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13654any ACPI driver or OSPM code. The debug version of the code includes the 13655debug output trace mechanism and has a much larger code and data size. 13656Note 13657that these values will vary depending on the efficiency of the compiler 13658and 13659the compiler options used during generation. 13660 13661 Previous Release: 13662 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13663 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13664 Current Release: 13665 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13666 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13667 13668 136692) iASL Compiler/Disassembler: 13670 13671Implemented support for the ACPI 3.0 Timer operator. 13672 13673Fixed a problem where the Default() operator was inadvertently ignored in 13674a 13675Switch/Case block. This was a problem in the translation of the Switch 13676statement to If...Else pairs. 13677 13678Added support to allow a standalone Return operator, with no parentheses 13679(or 13680operands). 13681 13682Fixed a problem with code generation for the ElseIf operator where the 13683translated Else...If parse tree was improperly constructed leading to the 13684loss of some code. 13685 13686---------------------------------------- 1368722 September 2004. Summary of changes for version 20040922: 13688 136891) ACPI CA Core Subsystem: 13690 13691Fixed a problem with the implementation of the LNot() operator where 13692"Ones" 13693was not returned for the TRUE case. Changed the code to return Ones 13694instead 13695of (!Arg) which was usually 1. This change affects iASL constant folding 13696for 13697this operator also. 13698 13699Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13700not 13701initialized properly -- Now zero the entire buffer in this case where the 13702buffer already exists. 13703 13704Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13705Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13706related code considerably. This will require changes/updates to all OS 13707interface layers (OSLs.) 13708 13709Implemented a new external interface, AcpiInstallExceptionHandler, to 13710allow 13711a system exception handler to be installed. This handler is invoked upon 13712any 13713run-time exception that occurs during control method execution. 13714 13715Added support for the DSDT in AcpiTbFindTable. This allows the 13716DataTableRegion() operator to access the local copy of the DSDT. 13717 13718Code and Data Size: Current and previous core subsystem library sizes are 13719shown below. These are the code and data sizes for the acpica.lib 13720produced 13721by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13722any ACPI driver or OSPM code. The debug version of the code includes the 13723debug output trace mechanism and has a much larger code and data size. 13724Note 13725that these values will vary depending on the efficiency of the compiler 13726and 13727the compiler options used during generation. 13728 13729 Previous Release: 13730 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13731 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13732 Current Release: 13733 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13734 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13735 13736 137372) iASL Compiler/Disassembler: 13738 13739Fixed a problem with constant folding and the LNot operator. LNot was 13740returning 1 in the TRUE case, not Ones as per the ACPI specification. 13741This 13742could result in the generation of an incorrect folded/reduced constant. 13743 13744End-Of-File is now allowed within a "//"-style comment. A parse error no 13745longer occurs if such a comment is at the very end of the input ASL 13746source 13747file. 13748 13749Implemented the "-r" option to override the Revision in the table header. 13750The initial use of this option will be to simplify the evaluation of the 13751AML 13752interpreter by allowing a single ASL source module to be compiled for 13753either 1375432-bit or 64-bit integers. 13755 13756 13757---------------------------------------- 1375827 August 2004. Summary of changes for version 20040827: 13759 137601) ACPI CA Core Subsystem: 13761 13762- Implemented support for implicit object conversion in the non-numeric 13763logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13764and 13765LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13766the second operand is implicitly converted on the fly to match the type 13767of 13768the first operand. For example: 13769 13770 LEqual (Source1, Source2) 13771 13772Source1 and Source2 must each evaluate to an integer, a string, or a 13773buffer. 13774The data type of Source1 dictates the required type of Source2. Source2 13775is 13776implicitly converted if necessary to match the type of Source1. 13777 13778- Updated and corrected the behavior of the string conversion support. 13779The 13780rules concerning conversion of buffers to strings (according to the ACPI 13781specification) are as follows: 13782 13783ToDecimalString - explicit byte-wise conversion of buffer to string of 13784decimal values (0-255) separated by commas. ToHexString - explicit byte- 13785wise 13786conversion of buffer to string of hex values (0-FF) separated by commas. 13787ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13788byte 13789copy with no transform except NULL terminated. Any other implicit buffer- 13790to- 13791string conversion - byte-wise conversion of buffer to string of hex 13792values 13793(0-FF) separated by spaces. 13794 13795- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13796 13797- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13798was 13799one byte too short in the case of a node in the root scope. This could 13800cause a fault during debug output. 13801 13802- Code and Data Size: Current and previous core subsystem library sizes 13803are 13804shown below. These are the code and data sizes for the acpica.lib 13805produced 13806by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13807any ACPI driver or OSPM code. The debug version of the code includes the 13808debug output trace mechanism and has a much larger code and data size. 13809Note 13810that these values will vary depending on the efficiency of the compiler 13811and 13812the compiler options used during generation. 13813 13814 Previous Release: 13815 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13816 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13817 Current Release: 13818 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13819 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13820 13821 138222) iASL Compiler/Disassembler: 13823 13824- Fixed a Linux generation error. 13825 13826 13827---------------------------------------- 1382816 August 2004. Summary of changes for version 20040816: 13829 138301) ACPI CA Core Subsystem: 13831 13832Designed and implemented support within the AML interpreter for the so- 13833called "implicit return". This support returns the result of the last 13834ASL 13835operation within a control method, in the absence of an explicit Return() 13836operator. A few machines depend on this behavior, even though it is not 13837explicitly supported by the ASL language. It is optional support that 13838can 13839be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13840 13841Removed support for the PCI_Config address space from the internal low 13842level 13843hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13844support was not used internally, and would not work correctly anyway 13845because 13846the PCI bus number and segment number were not supported. There are 13847separate interfaces for PCI configuration space access because of the 13848unique 13849interface. 13850 13851Code and Data Size: Current and previous core subsystem library sizes are 13852shown below. These are the code and data sizes for the acpica.lib 13853produced 13854by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13855any ACPI driver or OSPM code. The debug version of the code includes the 13856debug output trace mechanism and has a much larger code and data size. 13857Note 13858that these values will vary depending on the efficiency of the compiler 13859and 13860the compiler options used during generation. 13861 13862 Previous Release: 13863 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13864 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13865 Current Release: 13866 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13867 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13868 13869 138702) iASL Compiler/Disassembler: 13871 13872Fixed a problem where constants in ASL expressions at the root level (not 13873within a control method) could be inadvertently truncated during code 13874generation. This problem was introduced in the 20040715 release. 13875 13876 13877---------------------------------------- 1387815 July 2004. Summary of changes for version 20040715: 13879 138801) ACPI CA Core Subsystem: 13881 13882Restructured the internal HW GPE interfaces to pass/track the current 13883state 13884of interrupts (enabled/disabled) in order to avoid possible deadlock and 13885increase flexibility of the interfaces. 13886 13887Implemented a "lexicographical compare" for String and Buffer objects 13888within 13889the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13890- 13891as per further clarification to the ACPI specification. Behavior is 13892similar 13893to C library "strcmp". 13894 13895Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13896external function. In the 32-bit non-debug case, the stack use has been 13897reduced from 168 bytes to 32 bytes. 13898 13899Deployed a new run-time configuration flag, 13900AcpiGbl_EnableInterpreterSlack, 13901whose purpose is to allow the AML interpreter to forgive certain bad AML 13902constructs. Default setting is FALSE. 13903 13904Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13905IO 13906support code. If enabled, it allows field access to go beyond the end of 13907a 13908region definition if the field is within the region length rounded up to 13909the 13910next access width boundary (a common coding error.) 13911 13912Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13913ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13914these 13915symbols are lowercase by the latest version of the AcpiSrc tool. 13916 13917The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13918rename "Register" to simply "Reg" to prevent certain compilers from 13919complaining. 13920 13921Code and Data Size: Current and previous core subsystem library sizes are 13922shown below. These are the code and data sizes for the acpica.lib 13923produced 13924by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13925any ACPI driver or OSPM code. The debug version of the code includes the 13926debug output trace mechanism and has a much larger code and data size. 13927Note 13928that these values will vary depending on the efficiency of the compiler 13929and 13930the compiler options used during generation. 13931 13932 Previous Release: 13933 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13934 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13935 Current Release: 13936 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13937 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13938 13939 139402) iASL Compiler/Disassembler: 13941 13942Implemented full support for Package objects within the Case() operator. 13943Note: The Break() operator is currently not supported within Case blocks 13944(TermLists) as there is some question about backward compatibility with 13945ACPI 139461.0 interpreters. 13947 13948 13949Fixed a problem where complex terms were not supported properly within 13950the 13951Switch() operator. 13952 13953Eliminated extraneous warning for compiler-emitted reserved names of the 13954form "_T_x". (Used in Switch/Case operators.) 13955 13956Eliminated optimization messages for "_T_x" objects and small constants 13957within the DefinitionBlock operator. 13958 13959 13960---------------------------------------- 1396115 June 2004. Summary of changes for version 20040615: 13962 139631) ACPI CA Core Subsystem: 13964 13965Implemented support for Buffer and String objects (as per ACPI 2.0) for 13966the 13967following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13968LLessEqual. 13969 13970All directory names in the entire source package are lower case, as they 13971were in earlier releases. 13972 13973Implemented "Disassemble" command in the AML debugger that will 13974disassemble 13975a single control method. 13976 13977Code and Data Size: Current and previous core subsystem library sizes are 13978shown below. These are the code and data sizes for the acpica.lib 13979produced 13980by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13981any ACPI driver or OSPM code. The debug version of the code includes the 13982debug output trace mechanism and has a much larger code and data size. 13983Note 13984that these values will vary depending on the efficiency of the compiler 13985and 13986the compiler options used during generation. 13987 13988 Previous Release: 13989 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13990 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13991 13992 Current Release: 13993 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13994 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13995 13996 139972) iASL Compiler/Disassembler: 13998 13999Implemented support for Buffer and String objects (as per ACPI 2.0) for 14000the 14001following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 14002LLessEqual. 14003 14004All directory names in the entire source package are lower case, as they 14005were in earlier releases. 14006 14007Fixed a fault when using the -g or -d<nofilename> options if the FADT was 14008not found. 14009 14010Fixed an issue with the Windows version of the compiler where later 14011versions 14012of Windows place the FADT in the registry under the name "FADT" and not 14013"FACP" as earlier versions did. This applies when using the -g or - 14014d<nofilename> options. The compiler now looks for both strings as 14015necessary. 14016 14017Fixed a problem with compiler namepath optimization where a namepath 14018within 14019the Scope() operator could not be optimized if the namepath was a subpath 14020of 14021the current scope path. 14022 14023---------------------------------------- 1402427 May 2004. Summary of changes for version 20040527: 14025 140261) ACPI CA Core Subsystem: 14027 14028Completed a new design and implementation for EBDA (Extended BIOS Data 14029Area) 14030support in the RSDP scan code. The original code improperly scanned for 14031the 14032EBDA by simply scanning from memory location 0 to 0x400. The correct 14033method 14034is to first obtain the EBDA pointer from within the BIOS data area, then 14035scan 1K of memory starting at the EBDA pointer. There appear to be few 14036if 14037any machines that place the RSDP in the EBDA, however. 14038 14039Integrated a fix for a possible fault during evaluation of BufferField 14040arguments. Obsolete code that was causing the problem was removed. 14041 14042Found and fixed a problem in the Field Support Code where data could be 14043corrupted on a bit field read that starts on an aligned boundary but does 14044not end on an aligned boundary. Merged the read/write "datum length" 14045calculation code into a common procedure. 14046 14047Rolled in a couple of changes to the FreeBSD-specific header. 14048 14049 14050Code and Data Size: Current and previous core subsystem library sizes are 14051shown below. These are the code and data sizes for the acpica.lib 14052produced 14053by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14054any ACPI driver or OSPM code. The debug version of the code includes the 14055debug output trace mechanism and has a much larger code and data size. 14056Note 14057that these values will vary depending on the efficiency of the compiler 14058and 14059the compiler options used during generation. 14060 14061 Previous Release: 14062 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14063 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14064 Current Release: 14065 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 14066 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 14067 14068 140692) iASL Compiler/Disassembler: 14070 14071Fixed a generation warning produced by some overly-verbose compilers for 14072a 1407364-bit constant. 14074 14075---------------------------------------- 1407614 May 2004. Summary of changes for version 20040514: 14077 140781) ACPI CA Core Subsystem: 14079 14080Fixed a problem where hardware GPE enable bits sometimes not set properly 14081during and after GPE method execution. Result of 04/27 changes. 14082 14083Removed extra "clear all GPEs" when sleeping/waking. 14084 14085Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 14086AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 14087to 14088the new AcpiEv* calls as appropriate. 14089 14090ACPI_OS_NAME was removed from the OS-specific headers. The default name 14091is 14092now "Microsoft Windows NT" for maximum compatibility. However this can 14093be 14094changed by modifying the acconfig.h file. 14095 14096Allow a single invocation of AcpiInstallNotifyHandler for a handler that 14097traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 14098 14099Run _INI methods on ThermalZone objects. This is against the ACPI 14100specification, but there is apparently ASL code in the field that has 14101these 14102_INI methods, and apparently "other" AML interpreters execute them. 14103 14104Performed a full 16/32/64 bit lint that resulted in some small changes. 14105 14106Added a sleep simulation command to the AML debugger to test sleep code. 14107 14108Code and Data Size: Current and previous core subsystem library sizes are 14109shown below. These are the code and data sizes for the acpica.lib 14110produced 14111by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14112any ACPI driver or OSPM code. The debug version of the code includes the 14113debug output trace mechanism and has a much larger code and data size. 14114Note 14115that these values will vary depending on the efficiency of the compiler 14116and 14117the compiler options used during generation. 14118 14119 Previous Release: 14120 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14121 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14122 Current Release: 14123 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14124 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 14125 14126---------------------------------------- 1412727 April 2004. Summary of changes for version 20040427: 14128 141291) ACPI CA Core Subsystem: 14130 14131Completed a major overhaul of the GPE handling within ACPI CA. There are 14132now three types of GPEs: wake-only, runtime-only, and combination 14133wake/run. 14134The only GPEs allowed to be combination wake/run are for button-style 14135devices such as a control-method power button, control-method sleep 14136button, 14137or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 14138not 14139referenced by any _PRW methods are marked for "runtime" and hardware 14140enabled. Any GPE that is referenced by a _PRW method is marked for 14141"wake" 14142(and disabled at runtime). However, at sleep time, only those GPEs that 14143have been specifically enabled for wake via the AcpiEnableGpe interface 14144will 14145actually be hardware enabled. 14146 14147A new external interface has been added, AcpiSetGpeType(), that is meant 14148to 14149be used by device drivers to force a GPE to a particular type. It will 14150be 14151especially useful for the drivers for the button devices mentioned above. 14152 14153Completed restructuring of the ACPI CA initialization sequence so that 14154default operation region handlers are installed before GPEs are 14155initialized 14156and the _PRW methods are executed. This will prevent errors when the 14157_PRW 14158methods attempt to access system memory or I/O space. 14159 14160GPE enable/disable no longer reads the GPE enable register. We now keep 14161the 14162enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 14163thus no longer depend on the hardware to maintain these bits. 14164 14165Always clear the wake status and fixed/GPE status bits before sleep, even 14166for state S5. 14167 14168Improved the AML debugger output for displaying the GPE blocks and their 14169current status. 14170 14171Added new strings for the _OSI method, of the form "Windows 2001 SPx" 14172where 14173x = 0,1,2,3,4. 14174 14175Fixed a problem where the physical address was incorrectly calculated 14176when 14177the Load() operator was used to directly load from an Operation Region 14178(vs. 14179loading from a Field object.) Also added check for minimum table length 14180for 14181this case. 14182 14183Fix for multiple mutex acquisition. Restore original thread SyncLevel on 14184mutex release. 14185 14186Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 14187consistency with the other fields returned. 14188 14189Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 14190structure for each GPE in the system, so the size of this structure is 14191important. 14192 14193CPU stack requirement reduction: Cleaned up the method execution and 14194object 14195evaluation paths so that now a parameter structure is passed, instead of 14196copying the various method parameters over and over again. 14197 14198In evregion.c: Correctly exit and reenter the interpreter region if and 14199only if dispatching an operation region request to a user-installed 14200handler. 14201Do not exit/reenter when dispatching to a default handler (e.g., default 14202system memory or I/O handlers) 14203 14204 14205Notes for updating drivers for the new GPE support. The following 14206changes 14207must be made to ACPI-related device drivers that are attached to one or 14208more 14209GPEs: (This information will be added to the ACPI CA Programmer 14210Reference.) 14211 142121) AcpiInstallGpeHandler no longer automatically enables the GPE, you 14213must 14214explicitly call AcpiEnableGpe. 142152) There is a new interface called AcpiSetGpeType. This should be called 14216before enabling the GPE. Also, this interface will automatically disable 14217the GPE if it is currently enabled. 142183) AcpiEnableGpe no longer supports a GPE type flag. 14219 14220Specific drivers that must be changed: 142211) EC driver: 14222 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 14223AeGpeHandler, NULL); 14224 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 14225 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 14226 142272) Button Drivers (Power, Lid, Sleep): 14228Run _PRW method under parent device 14229If _PRW exists: /* This is a control-method button */ 14230 Extract GPE number and possibly GpeDevice 14231 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 14232 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 14233 14234For all other devices that have _PRWs, we automatically set the GPE type 14235to 14236ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 14237This 14238must be done on a selective basis, usually requiring some kind of user 14239app 14240to allow the user to pick the wake devices. 14241 14242 14243Code and Data Size: Current and previous core subsystem library sizes are 14244shown below. These are the code and data sizes for the acpica.lib 14245produced 14246by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14247any ACPI driver or OSPM code. The debug version of the code includes the 14248debug output trace mechanism and has a much larger code and data size. 14249Note 14250that these values will vary depending on the efficiency of the compiler 14251and 14252the compiler options used during generation. 14253 14254 Previous Release: 14255 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14256 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14257 Current Release: 14258 14259 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14260 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14261 14262 14263 14264---------------------------------------- 1426502 April 2004. Summary of changes for version 20040402: 14266 142671) ACPI CA Core Subsystem: 14268 14269Fixed an interpreter problem where an indirect store through an ArgX 14270parameter was incorrectly applying the "implicit conversion rules" during 14271the store. From the ACPI specification: "If the target is a method local 14272or 14273argument (LocalX or ArgX), no conversion is performed and the result is 14274stored directly to the target". The new behavior is to disable implicit 14275conversion during ALL stores to an ArgX. 14276 14277Changed the behavior of the _PRW method scan to ignore any and all errors 14278returned by a given _PRW. This prevents the scan from aborting from the 14279failure of any single _PRW. 14280 14281Moved the runtime configuration parameters from the global init procedure 14282to 14283static variables in acglobal.h. This will allow the host to override the 14284default values easily. 14285 14286Code and Data Size: Current and previous core subsystem library sizes are 14287shown below. These are the code and data sizes for the acpica.lib 14288produced 14289by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14290any ACPI driver or OSPM code. The debug version of the code includes the 14291debug output trace mechanism and has a much larger code and data size. 14292Note 14293that these values will vary depending on the efficiency of the compiler 14294and 14295the compiler options used during generation. 14296 14297 Previous Release: 14298 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14299 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14300 Current Release: 14301 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14302 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14303 14304 143052) iASL Compiler/Disassembler: 14306 14307iASL now fully disassembles SSDTs. However, External() statements are 14308not 14309generated automatically for unresolved symbols at this time. This is a 14310planned feature for future implementation. 14311 14312Fixed a scoping problem in the disassembler that occurs when the type of 14313the 14314target of a Scope() operator is overridden. This problem caused an 14315incorrectly nested internal namespace to be constructed. 14316 14317Any warnings or errors that are emitted during disassembly are now 14318commented 14319out automatically so that the resulting file can be recompiled without 14320any 14321hand editing. 14322 14323---------------------------------------- 1432426 March 2004. Summary of changes for version 20040326: 14325 143261) ACPI CA Core Subsystem: 14327 14328Implemented support for "wake" GPEs via interaction between GPEs and the 14329_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14330identified as a WAKE GPE and by default will no longer be enabled at 14331runtime. Previously, we were blindly enabling all GPEs with a 14332corresponding 14333_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14334We 14335believe this has been the cause of thousands of "spurious" GPEs on some 14336systems. 14337 14338This new GPE behavior is can be reverted to the original behavior (enable 14339ALL GPEs at runtime) via a runtime flag. 14340 14341Fixed a problem where aliased control methods could not access objects 14342properly. The proper scope within the namespace was not initialized 14343(transferred to the target of the aliased method) before executing the 14344target method. 14345 14346Fixed a potential race condition on internal object deletion on the 14347return 14348object in AcpiEvaluateObject. 14349 14350Integrated a fix for resource descriptors where both _MEM and _MTP were 14351being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14352wide, 0x0F instead of 0x03.) 14353 14354Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14355preventing 14356a 14357fault in some cases. 14358 14359Updated Notify() values for debug statements in evmisc.c 14360 14361Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14362 14363Code and Data Size: Current and previous core subsystem library sizes are 14364shown below. These are the code and data sizes for the acpica.lib 14365produced 14366by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14367any ACPI driver or OSPM code. The debug version of the code includes the 14368debug output trace mechanism and has a much larger code and data size. 14369Note 14370that these values will vary depending on the efficiency of the compiler 14371and 14372the compiler options used during generation. 14373 14374 Previous Release: 14375 14376 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14377 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14378 Current Release: 14379 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14380 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14381 14382---------------------------------------- 1438311 March 2004. Summary of changes for version 20040311: 14384 143851) ACPI CA Core Subsystem: 14386 14387Fixed a problem where errors occurring during the parse phase of control 14388method execution did not abort cleanly. For example, objects created and 14389installed in the namespace were not deleted. This caused all subsequent 14390invocations of the method to return the AE_ALREADY_EXISTS exception. 14391 14392Implemented a mechanism to force a control method to "Serialized" 14393execution 14394if the method attempts to create namespace objects. (The root of the 14395AE_ALREADY_EXISTS problem.) 14396 14397Implemented support for the predefined _OSI "internal" control method. 14398Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14399and 14400"Windows 2001.1", and can be easily upgraded for new strings as 14401necessary. 14402This feature will allow "other" operating systems to execute the fully 14403tested, "Windows" code path through the ASL code 14404 14405Global Lock Support: Now allows multiple acquires and releases with any 14406internal thread. Removed concept of "owning thread" for this special 14407mutex. 14408 14409Fixed two functions that were inappropriately declaring large objects on 14410the 14411CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 14412during 14413method execution considerably. 14414 14415Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 14416S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 14417 14418Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 14419defined on the machine. 14420 14421Implemented two runtime options: One to force all control method 14422execution 14423to "Serialized" to mimic Windows behavior, another to disable _OSI 14424support 14425if it causes problems on a given machine. 14426 14427Code and Data Size: Current and previous core subsystem library sizes are 14428shown below. These are the code and data sizes for the acpica.lib 14429produced 14430by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14431any ACPI driver or OSPM code. The debug version of the code includes the 14432debug output trace mechanism and has a much larger code and data size. 14433Note 14434that these values will vary depending on the efficiency of the compiler 14435and 14436the compiler options used during generation. 14437 14438 Previous Release: 14439 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14440 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14441 Current Release: 14442 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14443 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14444 144452) iASL Compiler/Disassembler: 14446 14447Fixed an array size problem for FreeBSD that would cause the compiler to 14448fault. 14449 14450---------------------------------------- 1445120 February 2004. Summary of changes for version 20040220: 14452 14453 144541) ACPI CA Core Subsystem: 14455 14456Implemented execution of _SxD methods for Device objects in the 14457GetObjectInfo interface. 14458 14459Fixed calls to _SST method to pass the correct arguments. 14460 14461Added a call to _SST on wake to restore to "working" state. 14462 14463Check for End-Of-Buffer failure case in the WalkResources interface. 14464 14465Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14466structures to the beginning of the file. 14467 14468After wake, clear GPE status register(s) before enabling GPEs. 14469 14470After wake, clear/enable power button. (Perhaps we should clear/enable 14471all 14472fixed events upon wake.) 14473 14474Fixed a couple of possible memory leaks in the Namespace manager. 14475 14476Integrated latest acnetbsd.h file. 14477 14478---------------------------------------- 1447911 February 2004. Summary of changes for version 20040211: 14480 14481 144821) ACPI CA Core Subsystem: 14483 14484Completed investigation and implementation of the call-by-reference 14485mechanism for control method arguments. 14486 14487Fixed a problem where a store of an object into an indexed package could 14488fail if the store occurs within a different method than the method that 14489created the package. 14490 14491Fixed a problem where the ToDecimal operator could return incorrect 14492results. 14493 14494Fixed a problem where the CopyObject operator could fail on some of the 14495more 14496obscure objects (e.g., Reference objects.) 14497 14498Improved the output of the Debug object to display buffer, package, and 14499index objects. 14500 14501Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14502return 14503the expected result. 14504 14505Added permanent ACPI_REPORT_ERROR macros for all instances of the 14506ACPI_AML_INTERNAL exception. 14507 14508Integrated latest version of acfreebsd.h 14509 14510---------------------------------------- 1451116 January 2004. Summary of changes for version 20040116: 14512 14513The purpose of this release is primarily to update the copyright years in 14514each module, thus causing a huge number of diffs. There are a few small 14515functional changes, however. 14516 145171) ACPI CA Core Subsystem: 14518 14519Improved error messages when there is a problem finding one or more of 14520the 14521required base ACPI tables 14522 14523Reintroduced the definition of APIC_HEADER in actbl.h 14524 14525Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14526 14527Removed extraneous reference to NewObj in dsmthdat.c 14528 145292) iASL compiler 14530 14531Fixed a problem introduced in December that disabled the correct 14532disassembly 14533of Resource Templates 14534 14535 14536---------------------------------------- 1453703 December 2003. Summary of changes for version 20031203: 14538 145391) ACPI CA Core Subsystem: 14540 14541Changed the initialization of Operation Regions during subsystem 14542init to perform two entire walks of the ACPI namespace; The first 14543to initialize the regions themselves, the second to execute the 14544_REG methods. This fixed some interdependencies across _REG 14545methods found on some machines. 14546 14547Fixed a problem where a Store(Local0, Local1) could simply update 14548the object reference count, and not create a new copy of the 14549object if the Local1 is uninitialized. 14550 14551Implemented support for the _SST reserved method during sleep 14552transitions. 14553 14554Implemented support to clear the SLP_TYP and SLP_EN bits when 14555waking up, this is apparently required by some machines. 14556 14557When sleeping, clear the wake status only if SleepState is not S5. 14558 14559Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14560pointer arithmetic advanced a string pointer too far. 14561 14562Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14563could be returned if the requested table has not been loaded. 14564 14565Within the support for IRQ resources, restructured the handling of 14566the active and edge/level bits. 14567 14568Fixed a few problems in AcpiPsxExecute() where memory could be 14569leaked under certain error conditions. 14570 14571Improved error messages for the cases where the ACPI mode could 14572not be entered. 14573 14574Code and Data Size: Current and previous core subsystem library 14575sizes are shown below. These are the code and data sizes for the 14576acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14577these values do not include any ACPI driver or OSPM code. The 14578debug version of the code includes the debug output trace 14579mechanism and has a much larger code and data size. Note that 14580these values will vary depending on the efficiency of the compiler 14581and the compiler options used during generation. 14582 14583 Previous Release (20031029): 14584 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14585 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14586 Current Release: 14587 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14588 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14589 145902) iASL Compiler/Disassembler: 14591 14592Implemented a fix for the iASL disassembler where a bad index was 14593generated. This was most noticeable on 64-bit platforms 14594 14595 14596---------------------------------------- 1459729 October 2003. Summary of changes for version 20031029: 14598 145991) ACPI CA Core Subsystem: 14600 14601 14602Fixed a problem where a level-triggered GPE with an associated 14603_Lxx control method was incorrectly cleared twice. 14604 14605Fixed a problem with the Field support code where an access can 14606occur beyond the end-of-region if the field is non-aligned but 14607extends to the very end of the parent region (resulted in an 14608AE_AML_REGION_LIMIT exception.) 14609 14610Fixed a problem with ACPI Fixed Events where an RT Clock handler 14611would not get invoked on an RTC event. The RTC event bitmasks for 14612the PM1 registers were not being initialized properly. 14613 14614Implemented support for executing _STA and _INI methods for 14615Processor objects. Although this is currently not part of the 14616ACPI specification, there is existing ASL code that depends on the 14617init-time execution of these methods. 14618 14619Implemented and deployed a GetDescriptorName function to decode 14620the various types of internal descriptors. Guards against null 14621descriptors during debug output also. 14622 14623Implemented and deployed a GetNodeName function to extract the 4- 14624character namespace node name. This function simplifies the debug 14625and error output, as well as guarding against null pointers during 14626output. 14627 14628Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14629simplify the debug and error output of 64-bit integers. This 14630macro replaces the HIDWORD and LODWORD macros for dumping these 14631integers. 14632 14633Updated the implementation of the Stall() operator to only call 14634AcpiOsStall(), and also return an error if the operand is larger 14635than 255. This preserves the required behavior of not 14636relinquishing the processor, as would happen if AcpiOsSleep() was 14637called for "long stalls". 14638 14639Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14640initialized are now treated as NOOPs. 14641 14642Cleaned up a handful of warnings during 64-bit generation. 14643 14644Fixed a reported error where and incorrect GPE number was passed 14645to the GPE dispatch handler. This value is only used for error 14646output, however. Used this opportunity to clean up and streamline 14647the GPE dispatch code. 14648 14649Code and Data Size: Current and previous core subsystem library 14650sizes are shown below. These are the code and data sizes for the 14651acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14652these values do not include any ACPI driver or OSPM code. The 14653 14654debug version of the code includes the debug output trace 14655mechanism and has a much larger code and data size. Note that 14656these values will vary depending on the efficiency of the compiler 14657and the compiler options used during generation. 14658 14659 Previous Release (20031002): 14660 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14661 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14662 Current Release: 14663 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14664 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14665 14666 146672) iASL Compiler/Disassembler: 14668 14669Updated the iASL compiler to return an error if the operand to the 14670Stall() operator is larger than 255. 14671 14672 14673---------------------------------------- 1467402 October 2003. Summary of changes for version 20031002: 14675 14676 146771) ACPI CA Core Subsystem: 14678 14679Fixed a problem with Index Fields where the index was not 14680incremented for fields that require multiple writes to the 14681index/data registers (Fields that are wider than the data 14682register.) 14683 14684Fixed a problem with all Field objects where a write could go 14685beyond the end-of-field if the field was larger than the access 14686granularity and therefore required multiple writes to complete the 14687request. An extra write beyond the end of the field could happen 14688inadvertently. 14689 14690Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14691would incorrectly be returned if the width of the Data Register 14692was larger than the specified field access width. 14693 14694Completed fixes for LoadTable() and Unload() and verified their 14695operation. Implemented full support for the "DdbHandle" object 14696throughout the ACPI CA subsystem. 14697 14698Implemented full support for the MADT and ECDT tables in the ACPI 14699CA header files. Even though these tables are not directly 14700consumed by ACPI CA, the header definitions are useful for ACPI 14701device drivers. 14702 14703Integrated resource descriptor fixes posted to the Linux ACPI 14704list. This included checks for minimum descriptor length, and 14705support for trailing NULL strings within descriptors that have 14706optional string elements. 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 (20030918): 14718 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14719 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14720 Current Release: 14721 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14722 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14723 14724 147252) iASL Compiler: 14726 14727Implemented detection of non-ASCII characters within the input 14728source ASL file. This catches attempts to compile binary (AML) 14729files early in the compile, with an informative error message. 14730 14731Fixed a problem where the disassembler would fault if the output 14732filename could not be generated or if the output file could not be 14733opened. 14734 14735---------------------------------------- 1473618 September 2003. Summary of changes for version 20030918: 14737 14738 147391) ACPI CA Core Subsystem: 14740 14741Found and fixed a longstanding problem with the late execution of 14742the various deferred AML opcodes (such as Operation Regions, 14743Buffer Fields, Buffers, and Packages). If the name string 14744specified for the name of the new object placed the object in a 14745scope other than the current scope, the initialization/execution 14746of the opcode failed. The solution to this problem was to 14747implement a mechanism where the late execution of such opcodes 14748does not attempt to lookup/create the name a second time in an 14749incorrect scope. This fixes the "region size computed 14750incorrectly" problem. 14751 14752Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14753Global Lock AE_BAD_PARAMETER error. 14754 14755Fixed several 64-bit issues with prototypes, casting and data 14756types. 14757 14758Removed duplicate prototype from acdisasm.h 14759 14760Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14761 14762Code and Data Size: Current and previous core subsystem library 14763sizes are shown below. These are the code and data sizes for the 14764acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14765these values do not include any ACPI driver or OSPM code. The 14766debug version of the code includes the debug output trace 14767mechanism and has a much larger code and data size. Note that 14768these values will vary depending on the efficiency of the compiler 14769and the compiler options used during generation. 14770 14771 Previous Release: 14772 14773 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14774 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14775 Current Release: 14776 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14777 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14778 14779 147802) Linux: 14781 14782Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14783correct sleep time in seconds. 14784 14785---------------------------------------- 1478614 July 2003. Summary of changes for version 20030619: 14787 147881) ACPI CA Core Subsystem: 14789 14790Parse SSDTs in order discovered, as opposed to reverse order 14791(Hrvoje Habjanic) 14792 14793Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14794Klausner, 14795 Nate Lawson) 14796 14797 147982) Linux: 14799 14800Dynamically allocate SDT list (suggested by Andi Kleen) 14801 14802proc function return value cleanups (Andi Kleen) 14803 14804Correctly handle NMI watchdog during long stalls (Andrew Morton) 14805 14806Make it so acpismp=force works (reported by Andrew Morton) 14807 14808 14809---------------------------------------- 1481019 June 2003. Summary of changes for version 20030619: 14811 148121) ACPI CA Core Subsystem: 14813 14814Fix To/FromBCD, eliminating the need for an arch-specific #define. 14815 14816Do not acquire a semaphore in the S5 shutdown path. 14817 14818Fix ex_digits_needed for 0. (Takayoshi Kochi) 14819 14820Fix sleep/stall code reversal. (Andi Kleen) 14821 14822Revert a change having to do with control method calling 14823semantics. 14824 148252) Linux: 14826 14827acpiphp update (Takayoshi Kochi) 14828 14829Export acpi_disabled for sonypi (Stelian Pop) 14830 14831Mention acpismp=force in config help 14832 14833Re-add acpitable.c and acpismp=force. This improves backwards 14834 14835compatibility and also cleans up the code to a significant degree. 14836 14837Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14838 14839---------------------------------------- 1484022 May 2003. Summary of changes for version 20030522: 14841 148421) ACPI CA Core Subsystem: 14843 14844Found and fixed a reported problem where an AE_NOT_FOUND error 14845occurred occasionally during _BST evaluation. This turned out to 14846be an Owner ID allocation issue where a called method did not get 14847a new ID assigned to it. Eventually, (after 64k calls), the Owner 14848ID UINT16 would wraparound so that the ID would be the same as the 14849caller's and the called method would delete the caller's 14850namespace. 14851 14852Implemented extended error reporting for control methods that are 14853aborted due to a run-time exception. Output includes the exact 14854AML instruction that caused the method abort, a dump of the method 14855locals and arguments at the time of the abort, and a trace of all 14856nested control method calls. 14857 14858Modified the interpreter to allow the creation of buffers of zero 14859length from the AML code. Implemented new code to ensure that no 14860attempt is made to actually allocate a memory buffer (of length 14861zero) - instead, a simple buffer object with a NULL buffer pointer 14862and length zero is created. A warning is no longer issued when 14863the AML attempts to create a zero-length buffer. 14864 14865Implemented a workaround for the "leading asterisk issue" in 14866_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14867asterisk is automatically removed if present in any HID, UID, or 14868CID strings. The iASL compiler will still flag this asterisk as 14869an error, however. 14870 14871Implemented full support for _CID methods that return a package of 14872multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14873now additionally returns a device _CID list if present. This 14874required a change to the external interface in order to pass an 14875ACPI_BUFFER object as a parameter since the _CID list is of 14876variable length. 14877 14878Fixed a problem with the new AE_SAME_HANDLER exception where 14879handler initialization code did not know about this exception. 14880 14881Code and Data Size: Current and previous core subsystem library 14882sizes are shown below. These are the code and data sizes for the 14883acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14884these values do not include any ACPI driver or OSPM code. The 14885debug version of the code includes the debug output trace 14886mechanism and has a much larger code and data size. Note that 14887these values will vary depending on the efficiency of the compiler 14888and the compiler options used during generation. 14889 14890 Previous Release (20030509): 14891 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14892 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14893 Current Release: 14894 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14895 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14896 14897 148982) Linux: 14899 14900Fixed a bug in which we would reinitialize the ACPI interrupt 14901after it was already working, thus disabling all ACPI and the IRQs 14902for any other device sharing the interrupt. (Thanks to Stian 14903Jordet) 14904 14905Toshiba driver update (John Belmonte) 14906 14907Return only 0 or 1 for our interrupt handler status (Andrew 14908Morton) 14909 14910 149113) iASL Compiler: 14912 14913Fixed a reported problem where multiple (nested) ElseIf() 14914statements were not handled correctly by the compiler, resulting 14915in incorrect warnings and incorrect AML code. This was a problem 14916in both the ASL parser and the code generator. 14917 14918 149194) Documentation: 14920 14921Added changes to existing interfaces, new exception codes, and new 14922text concerning reference count object management versus garbage 14923collection. 14924 14925---------------------------------------- 1492609 May 2003. Summary of changes for version 20030509. 14927 14928 149291) ACPI CA Core Subsystem: 14930 14931Changed the subsystem initialization sequence to hold off 14932installation of address space handlers until the hardware has been 14933initialized and the system has entered ACPI mode. This is because 14934the installation of space handlers can cause _REG methods to be 14935run. Previously, the _REG methods could potentially be run before 14936ACPI mode was enabled. 14937 14938Fixed some memory leak issues related to address space handler and 14939notify handler installation. There were some problems with the 14940reference count mechanism caused by the fact that the handler 14941objects are shared across several namespace objects. 14942 14943Fixed a reported problem where reference counts within the 14944namespace were not properly updated when named objects created by 14945method execution were deleted. 14946 14947Fixed a reported problem where multiple SSDTs caused a deletion 14948issue during subsystem termination. Restructured the table data 14949structures to simplify the linked lists and the related code. 14950 14951Fixed a problem where the table ID associated with secondary 14952tables (SSDTs) was not being propagated into the namespace objects 14953created by those tables. This would only present a problem for 14954tables that are unloaded at run-time, however. 14955 14956Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14957type as the length parameter (instead of UINT32). 14958 14959Solved a long-standing problem where an ALREADY_EXISTS error 14960appears on various systems. This problem could happen when there 14961are multiple PCI_Config operation regions under a single PCI root 14962bus. This doesn't happen very frequently, but there are some 14963systems that do this in the ASL. 14964 14965Fixed a reported problem where the internal DeleteNode function 14966was incorrectly handling the case where a namespace node was the 14967first in the parent's child list, and had additional peers (not 14968the only child, but first in the list of children.) 14969 14970Code and Data Size: Current core subsystem library sizes are shown 14971below. These are the code and data sizes for the acpica.lib 14972produced by the Microsoft Visual C++ 6.0 compiler, and these 14973values do not include any ACPI driver or OSPM code. The debug 14974version of the code includes the debug output trace mechanism and 14975has a much larger code and data size. Note that these values will 14976vary depending on the efficiency of the compiler and the compiler 14977options used during generation. 14978 14979 Previous Release 14980 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14981 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14982 Current Release: 14983 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14984 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14985 14986 149872) Linux: 14988 14989Allow ":" in OS override string (Ducrot Bruno) 14990 14991Kobject fix (Greg KH) 14992 14993 149943 iASL Compiler/Disassembler: 14995 14996Fixed a problem in the generation of the C source code files (AML 14997is emitted in C source statements for BIOS inclusion) where the 14998Ascii dump that appears within a C comment at the end of each line 14999could cause a compile time error if the AML sequence happens to 15000have an open comment or close comment sequence embedded. 15001 15002 15003---------------------------------------- 1500424 April 2003. Summary of changes for version 20030424. 15005 15006 150071) ACPI CA Core Subsystem: 15008 15009Support for big-endian systems has been implemented. Most of the 15010support has been invisibly added behind big-endian versions of the 15011ACPI_MOVE_* macros. 15012 15013Fixed a problem in AcpiHwDisableGpeBlock() and 15014AcpiHwClearGpeBlock() where an incorrect offset was passed to the 15015low level hardware write routine. The offset parameter was 15016actually eliminated from the low level read/write routines because 15017they had become obsolete. 15018 15019Fixed a problem where a handler object was deleted twice during 15020the removal of a fixed event handler. 15021 15022 150232) Linux: 15024 15025A fix for SMP systems with link devices was contributed by 15026 15027Compaq's Dan Zink. 15028 15029(2.5) Return whether we handled the interrupt in our IRQ handler. 15030(Linux ISRs no longer return void, so we can propagate the handler 15031return value from the ACPI CA core back to the OS.) 15032 15033 15034 150353) Documentation: 15036 15037The ACPI CA Programmer Reference has been updated to reflect new 15038interfaces and changes to existing interfaces. 15039 15040---------------------------------------- 1504128 March 2003. Summary of changes for version 20030328. 15042 150431) ACPI CA Core Subsystem: 15044 15045The GPE Block Device support has been completed. New interfaces 15046are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 15047interfaces (enable, disable, clear, getstatus) have been split 15048into separate interfaces for Fixed Events and General Purpose 15049Events (GPEs) in order to support GPE Block Devices properly. 15050 15051Fixed a problem where the error message "Failed to acquire 15052semaphore" would appear during operations on the embedded 15053controller (EC). 15054 15055Code and Data Size: Current core subsystem library sizes are shown 15056below. These are the code and data sizes for the acpica.lib 15057produced by the Microsoft Visual C++ 6.0 compiler, and these 15058values do not include any ACPI driver or OSPM code. The debug 15059version of the code includes the debug output trace mechanism and 15060has a much larger code and data size. Note that these values will 15061vary depending on the efficiency of the compiler and the compiler 15062options used during generation. 15063 15064 Previous Release 15065 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15066 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15067 Current Release: 15068 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 15069 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 15070 15071 15072---------------------------------------- 1507328 February 2003. Summary of changes for version 20030228. 15074 15075 150761) ACPI CA Core Subsystem: 15077 15078The GPE handling and dispatch code has been completely overhauled 15079in preparation for support of GPE Block Devices (ID ACPI0006). 15080This affects internal data structures and code only; there should 15081be no differences visible externally. One new file has been 15082added, evgpeblk.c 15083 15084The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 15085fields that are used to determine the GPE block lengths. The 15086REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15087structures are ignored. This is per the ACPI specification but it 15088isn't very clear. The full 256 Block 0/1 GPEs are now supported 15089(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 15090 15091In the SCI interrupt handler, removed the read of the PM1_CONTROL 15092register to look at the SCI_EN bit. On some machines, this read 15093causes an SMI event and greatly slows down SCI events. (This may 15094in fact be the cause of slow battery status response on some 15095systems.) 15096 15097Fixed a problem where a store of a NULL string to a package object 15098could cause the premature deletion of the object. This was seen 15099during execution of the battery _BIF method on some systems, 15100resulting in no battery data being returned. 15101 15102Added AcpiWalkResources interface to simplify parsing of resource 15103lists. 15104 15105Code and Data Size: Current core subsystem library sizes are shown 15106below. These are the code and data sizes for the acpica.lib 15107produced by the Microsoft Visual C++ 6.0 compiler, and these 15108values do not include any ACPI driver or OSPM code. The debug 15109version of the code includes the debug output trace mechanism and 15110has a much larger code and data size. Note that these values will 15111vary depending on the efficiency of the compiler and the compiler 15112options used during generation. 15113 15114 Previous Release 15115 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15116 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15117 Current Release: 15118 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 15119 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 15120 15121 151222) Linux 15123 15124S3 fixes (Ole Rohne) 15125 15126Update ACPI PHP driver with to use new acpi_walk_resource API 15127(Bjorn Helgaas) 15128 15129Add S4BIOS support (Pavel Machek) 15130 15131Map in entire table before performing checksum (John Stultz) 15132 15133Expand the mem= cmdline to allow the specification of reserved and 15134ACPI DATA blocks (Pavel Machek) 15135 15136Never use ACPI on VISWS 15137 15138Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 15139 15140Revert a change that allowed P_BLK lengths to be 4 or 5. This is 15141causing us to think that some systems support C2 when they really 15142don't. 15143 15144Do not count processor objects for non-present CPUs (Thanks to 15145Dominik Brodowski) 15146 15147 151483) iASL Compiler: 15149 15150Fixed a problem where ASL include files could not be found and 15151opened. 15152 15153Added support for the _PDC reserved name. 15154 15155 15156---------------------------------------- 1515722 January 2003. Summary of changes for version 20030122. 15158 15159 151601) ACPI CA Core Subsystem: 15161 15162Added a check for constructs of the form: Store (Local0, Local0) 15163where Local0 is not initialized. Apparently, some BIOS 15164programmers believe that this is a NOOP. Since this store doesn't 15165do anything anyway, the new prototype behavior will ignore this 15166error. This is a case where we can relax the strict checking in 15167the interpreter in the name of compatibility. 15168 15169 151702) Linux 15171 15172The AcpiSrc Source Conversion Utility has been released with the 15173Linux package for the first time. This is the utility that is 15174used to convert the ACPI CA base source code to the Linux version. 15175 15176(Both) Handle P_BLK lengths shorter than 6 more gracefully 15177 15178(Both) Move more headers to include/acpi, and delete an unused 15179header. 15180 15181(Both) Move drivers/acpi/include directory to include/acpi 15182 15183(Both) Boot functions don't use cmdline, so don't pass it around 15184 15185(Both) Remove include of unused header (Adrian Bunk) 15186 15187(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 15188the 15189former now also includes the latter, acpiphp.h only needs the one, 15190now. 15191 15192(2.5) Make it possible to select method of bios restoring after S3 15193resume. [=> no more ugly ifdefs] (Pavel Machek) 15194 15195(2.5) Make proc write interfaces work (Pavel Machek) 15196 15197(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 15198 15199(2.5) Break out ACPI Perf code into its own module, under cpufreq 15200(Dominik Brodowski) 15201 15202(2.4) S4BIOS support (Ducrot Bruno) 15203 15204(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 15205Visinoni) 15206 15207 152083) iASL Compiler: 15209 15210Added support to disassemble SSDT and PSDTs. 15211 15212Implemented support to obtain SSDTs from the Windows registry if 15213available. 15214 15215 15216---------------------------------------- 1521709 January 2003. Summary of changes for version 20030109. 15218 152191) ACPI CA Core Subsystem: 15220 15221Changed the behavior of the internal Buffer-to-String conversion 15222function. The current ACPI specification states that the contents 15223of the buffer are "converted to a string of two-character 15224hexadecimal numbers, each separated by a space". Unfortunately, 15225this definition is not backwards compatible with existing ACPI 1.0 15226implementations (although the behavior was not defined in the ACPI 152271.0 specification). The new behavior simply copies data from the 15228buffer to the string until a null character is found or the end of 15229the buffer is reached. The new String object is always null 15230terminated. This problem was seen during the generation of _BIF 15231battery data where incorrect strings were returned for battery 15232type, etc. This will also require an errata to the ACPI 15233specification. 15234 15235Renamed all instances of NATIVE_UINT and NATIVE_INT to 15236ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 15237 15238Copyright in all module headers (both Linux and non-Linux) has be 15239updated to 2003. 15240 15241Code and Data Size: Current core subsystem library sizes are shown 15242below. These are the code and data sizes for the acpica.lib 15243produced by the Microsoft Visual C++ 6.0 compiler, and these 15244values do not include any ACPI driver or OSPM code. The debug 15245version of the code includes the debug output trace mechanism and 15246has a much larger code and data size. Note that these values will 15247vary depending on the efficiency of the compiler and the compiler 15248options used during generation. 15249 15250 Previous Release 15251 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15252 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15253 Current Release: 15254 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15255 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15256 15257 152582) Linux 15259 15260Fixed an oops on module insertion/removal (Matthew Tippett) 15261 15262(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15263 15264(2.5) Replace pr_debug (Randy Dunlap) 15265 15266(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15267 15268(Both) Eliminate spawning of thread from timer callback, in favor 15269of schedule_work() 15270 15271(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15272 15273(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15274 15275(Both) Add missing statics to button.c (Pavel Machek) 15276 15277Several changes have been made to the source code translation 15278utility that generates the Linux Code in order to make the code 15279more "Linux-like": 15280 15281All typedefs on structs and unions have been removed in keeping 15282with the Linux coding style. 15283 15284Removed the non-Linux SourceSafe module revision number from each 15285module header. 15286 15287Completed major overhaul of symbols to be lowercase for linux. 15288Doubled the number of symbols that are lowercase. 15289 15290Fixed a problem where identifiers within procedure headers and 15291within quotes were not fully lower cased (they were left with a 15292starting capital.) 15293 15294Some C macros whose only purpose is to allow the generation of 16- 15295bit code are now completely removed in the Linux code, increasing 15296readability and maintainability. 15297 15298---------------------------------------- 15299 1530012 December 2002. Summary of changes for version 20021212. 15301 15302 153031) ACPI CA Core Subsystem: 15304 15305Fixed a problem where the creation of a zero-length AML Buffer 15306would cause a fault. 15307 15308Fixed a problem where a Buffer object that pointed to a static AML 15309buffer (in an ACPI table) could inadvertently be deleted, causing 15310memory corruption. 15311 15312Fixed a problem where a user buffer (passed in to the external 15313ACPI CA interfaces) could be overwritten if the buffer was too 15314small to complete the operation, causing memory corruption. 15315 15316Fixed a problem in the Buffer-to-String conversion code where a 15317string of length one was always returned, regardless of the size 15318of the input Buffer object. 15319 15320Removed the NATIVE_CHAR data type across the entire source due to 15321lack of need and lack of consistent use. 15322 15323Code and Data Size: Current core subsystem library sizes are shown 15324below. These are the code and data sizes for the acpica.lib 15325produced by the Microsoft Visual C++ 6.0 compiler, and these 15326values do not include any ACPI driver or OSPM code. The debug 15327version of the code includes the debug output trace mechanism and 15328has a much larger code and data size. Note that these values will 15329vary depending on the efficiency of the compiler and the compiler 15330options used during generation. 15331 15332 Previous Release 15333 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15334 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15335 Current Release: 15336 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15337 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15338 15339 15340---------------------------------------- 1534105 December 2002. Summary of changes for version 20021205. 15342 153431) ACPI CA Core Subsystem: 15344 15345Fixed a problem where a store to a String or Buffer object could 15346cause corruption of the DSDT if the object type being stored was 15347the same as the target object type and the length of the object 15348being stored was equal to or smaller than the original (existing) 15349target object. This was seen to cause corruption of battery _BIF 15350buffers if the _BIF method modified the buffer on the fly. 15351 15352Fixed a problem where an internal error was generated if a control 15353method invocation was used in an OperationRegion, Buffer, or 15354Package declaration. This was caused by the deferred parsing of 15355the control method and thus the deferred creation of the internal 15356method object. The solution to this problem was to create the 15357internal method object at the moment the method is encountered in 15358the first pass - so that subsequent references to the method will 15359able to obtain the required parameter count and thus properly 15360parse the method invocation. This problem presented itself as an 15361AE_AML_INTERNAL during the pass 1 parse phase during table load. 15362 15363Fixed a problem where the internal String object copy routine did 15364not always allocate sufficient memory for the target String object 15365and caused memory corruption. This problem was seen to cause 15366"Allocation already present in list!" errors as memory allocation 15367became corrupted. 15368 15369Implemented a new function for the evaluation of namespace objects 15370that allows the specification of the allowable return object 15371types. This simplifies a lot of code that checks for a return 15372object of one or more specific objects returned from the 15373evaluation (such as _STA, etc.) This may become and external 15374function if it would be useful to ACPI-related drivers. 15375 15376Completed another round of prefixing #defines with "ACPI_" for 15377clarity. 15378 15379Completed additional code restructuring to allow more modular 15380linking for iASL compiler and AcpiExec. Several files were split 15381creating new files. New files: nsparse.c dsinit.c evgpe.c 15382 15383Implemented an abort mechanism to terminate an executing control 15384method via the AML debugger. This feature is useful for debugging 15385control methods that depend (wait) for specific hardware 15386responses. 15387 15388Code and Data Size: Current core subsystem library sizes are shown 15389below. These are the code and data sizes for the acpica.lib 15390produced by the Microsoft Visual C++ 6.0 compiler, and these 15391values do not include any ACPI driver or OSPM code. The debug 15392version of the code includes the debug output trace mechanism and 15393has a much larger code and data size. Note that these values will 15394vary depending on the efficiency of the compiler and the compiler 15395options used during generation. 15396 15397 Previous Release 15398 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15399 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15400 Current Release: 15401 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15402 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15403 15404 154052) iASL Compiler/Disassembler 15406 15407Fixed a compiler code generation problem for "Interrupt" Resource 15408Descriptors. If specified in the ASL, the optional "Resource 15409Source Index" and "Resource Source" fields were not inserted into 15410the correct location within the AML resource descriptor, creating 15411an invalid descriptor. 15412 15413Fixed a disassembler problem for "Interrupt" resource descriptors. 15414The optional "Resource Source Index" and "Resource Source" fields 15415were ignored. 15416 15417 15418---------------------------------------- 1541922 November 2002. Summary of changes for version 20021122. 15420 15421 154221) ACPI CA Core Subsystem: 15423 15424Fixed a reported problem where an object stored to a Method Local 15425or Arg was not copied to a new object during the store - the 15426object pointer was simply copied to the Local/Arg. This caused 15427all subsequent operations on the Local/Arg to also affect the 15428original source of the store operation. 15429 15430Fixed a problem where a store operation to a Method Local or Arg 15431was not completed properly if the Local/Arg contained a reference 15432(from RefOf) to a named field. The general-purpose store-to- 15433namespace-node code is now used so that this case is handled 15434automatically. 15435 15436Fixed a problem where the internal object copy routine would cause 15437a protection fault if the object being copied was a Package and 15438contained either 1) a NULL package element or 2) a nested sub- 15439package. 15440 15441Fixed a problem with the GPE initialization that resulted from an 15442ambiguity in the ACPI specification. One section of the 15443specification states that both the address and length of the GPE 15444block must be zero if the block is not supported. Another section 15445implies that only the address need be zero if the block is not 15446supported. The code has been changed so that both the address and 15447the length must be non-zero to indicate a valid GPE block (i.e., 15448if either the address or the length is zero, the GPE block is 15449invalid.) 15450 15451Code and Data Size: Current core subsystem library sizes are shown 15452below. These are the code and data sizes for the acpica.lib 15453produced by the Microsoft Visual C++ 6.0 compiler, and these 15454values do not include any ACPI driver or OSPM code. The debug 15455version of the code includes the debug output trace mechanism and 15456has a much larger code and data size. Note that these values will 15457vary depending on the efficiency of the compiler and the compiler 15458options used during generation. 15459 15460 Previous Release 15461 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15462 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15463 Current Release: 15464 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15465 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15466 15467 154682) Linux 15469 15470Cleaned up EC driver. Exported an external EC read/write 15471interface. By going through this, other drivers (most notably 15472sonypi) will be able to serialize access to the EC. 15473 15474 154753) iASL Compiler/Disassembler 15476 15477Implemented support to optionally generate include files for both 15478ASM and C (the -i switch). This simplifies BIOS development by 15479automatically creating include files that contain external 15480declarations for the symbols that are created within the 15481 15482(optionally generated) ASM and C AML source files. 15483 15484 15485---------------------------------------- 1548615 November 2002. Summary of changes for version 20021115. 15487 154881) ACPI CA Core Subsystem: 15489 15490Fixed a memory leak problem where an error during resolution of 15491 15492method arguments during a method invocation from another method 15493failed to cleanup properly by deleting all successfully resolved 15494argument objects. 15495 15496Fixed a problem where the target of the Index() operator was not 15497correctly constructed if the source object was a package. This 15498problem has not been detected because the use of a target operand 15499with Index() is very rare. 15500 15501Fixed a problem with the Index() operator where an attempt was 15502made to delete the operand objects twice. 15503 15504Fixed a problem where an attempt was made to delete an operand 15505twice during execution of the CondRefOf() operator if the target 15506did not exist. 15507 15508Implemented the first of perhaps several internal create object 15509functions that create and initialize a specific object type. This 15510consolidates duplicated code wherever the object is created, thus 15511shrinking the size of the subsystem. 15512 15513Implemented improved debug/error messages for errors that occur 15514during nested method invocations. All executing method pathnames 15515are displayed (with the error) as the call stack is unwound - thus 15516simplifying debug. 15517 15518Fixed a problem introduced in the 10/02 release that caused 15519premature deletion of a buffer object if a buffer was used as an 15520ASL operand where an integer operand is required (Thus causing an 15521implicit object conversion from Buffer to Integer.) The change in 15522the 10/02 release was attempting to fix a memory leak (albeit 15523incorrectly.) 15524 15525Code and Data Size: Current core subsystem library sizes are shown 15526below. These are the code and data sizes for the acpica.lib 15527produced by the Microsoft Visual C++ 6.0 compiler, and these 15528values do not include any ACPI driver or OSPM code. The debug 15529version of the code includes the debug output trace mechanism and 15530has a much larger code and data size. Note that these values will 15531vary depending on the efficiency of the compiler and the compiler 15532options used during generation. 15533 15534 Previous Release 15535 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15536 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15537 Current Release: 15538 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15539 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15540 15541 155422) Linux 15543 15544Changed the implementation of the ACPI semaphores to use down() 15545instead of down_interruptable(). It is important that the 15546execution of ACPI control methods not be interrupted by signals. 15547Methods must run to completion, or the system may be left in an 15548unknown/unstable state. 15549 15550Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15551(Shawn Starr) 15552 15553 155543) iASL Compiler/Disassembler 15555 15556 15557Changed the default location of output files. All output files 15558are now placed in the current directory by default instead of in 15559the directory of the source file. This change may affect some 15560existing makefiles, but it brings the behavior of the compiler in 15561line with other similar tools. The location of the output files 15562can be overridden with the -p command line switch. 15563 15564 15565---------------------------------------- 1556611 November 2002. Summary of changes for version 20021111. 15567 15568 155690) ACPI Specification 2.0B is released and is now available at: 15570http://www.acpi.info/index.html 15571 15572 155731) ACPI CA Core Subsystem: 15574 15575Implemented support for the ACPI 2.0 SMBus Operation Regions. 15576This includes the early detection and handoff of the request to 15577the SMBus region handler (avoiding all of the complex field 15578support code), and support for the bidirectional return packet 15579from an SMBus write operation. This paves the way for the 15580development of SMBus drivers in each host operating system. 15581 15582Fixed a problem where the semaphore WAIT_FOREVER constant was 15583defined as 32 bits, but must be 16 bits according to the ACPI 15584specification. This had the side effect of causing ASL 15585Mutex/Event timeouts even though the ASL code requested a wait 15586forever. Changed all internal references to the ACPI timeout 15587parameter to 16 bits to prevent future problems. Changed the name 15588of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15589 15590Code and Data Size: Current core subsystem library sizes are shown 15591below. These are the code and data sizes for the acpica.lib 15592produced by the Microsoft Visual C++ 6.0 compiler, and these 15593values do not include any ACPI driver or OSPM code. The debug 15594version of the code includes the debug output trace mechanism and 15595has a much larger code and data size. Note that these values will 15596vary depending on the efficiency of the compiler and the compiler 15597options used during generation. 15598 15599 Previous Release 15600 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15601 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15602 Current Release: 15603 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15604 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15605 15606 156072) Linux 15608 15609Module loading/unloading fixes (John Cagle) 15610 15611 156123) iASL Compiler/Disassembler 15613 15614Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15615 15616Implemented support for the disassembly of all SMBus protocol 15617keywords (SMBQuick, SMBWord, etc.) 15618 15619---------------------------------------- 1562001 November 2002. Summary of changes for version 20021101. 15621 15622 156231) ACPI CA Core Subsystem: 15624 15625Fixed a problem where platforms that have a GPE1 block but no GPE0 15626block were not handled correctly. This resulted in a "GPE 15627overlap" error message. GPE0 is no longer required. 15628 15629Removed code added in the previous release that inserted nodes 15630into the namespace in alphabetical order. This caused some side- 15631effects on various machines. The root cause of the problem is 15632still under investigation since in theory, the internal ordering 15633of the namespace nodes should not matter. 15634 15635 15636Enhanced error reporting for the case where a named object is not 15637found during control method execution. The full ACPI namepath 15638(name reference) of the object that was not found is displayed in 15639this case. 15640 15641Note: as a result of the overhaul of the namespace object types in 15642the previous release, the namespace nodes for the predefined 15643scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15644instead of ACPI_TYPE_ANY. This simplifies the namespace 15645management code but may affect code that walks the namespace tree 15646looking for specific object types. 15647 15648Code and Data Size: Current core subsystem library sizes are shown 15649below. These are the code and data sizes for the acpica.lib 15650produced by the Microsoft Visual C++ 6.0 compiler, and these 15651values do not include any ACPI driver or OSPM code. The debug 15652version of the code includes the debug output trace mechanism and 15653has a much larger code and data size. Note that these values will 15654vary depending on the efficiency of the compiler and the compiler 15655options used during generation. 15656 15657 Previous Release 15658 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15659 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15660 Current Release: 15661 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15662 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15663 15664 156652) Linux 15666 15667Fixed a problem introduced in the previous release where the 15668Processor and Thermal objects were not recognized and installed in 15669/proc. This was related to the scope type change described above. 15670 15671 156723) iASL Compiler/Disassembler 15673 15674Implemented the -g option to get all of the required ACPI tables 15675from the registry and save them to files (Windows version of the 15676compiler only.) The required tables are the FADT, FACS, and DSDT. 15677 15678Added ACPI table checksum validation during table disassembly in 15679order to catch corrupted tables. 15680 15681 15682---------------------------------------- 1568322 October 2002. Summary of changes for version 20021022. 15684 156851) ACPI CA Core Subsystem: 15686 15687Implemented a restriction on the Scope operator that the target 15688must already exist in the namespace at the time the operator is 15689encountered (during table load or method execution). In other 15690words, forward references are not allowed and Scope() cannot 15691create a new object. This changes the previous behavior where the 15692interpreter would create the name if not found. This new behavior 15693correctly enables the search-to-root algorithm during namespace 15694lookup of the target name. Because of this upsearch, this fixes 15695the known Compaq _SB_.OKEC problem and makes both the AML 15696interpreter and iASL compiler compatible with other ACPI 15697implementations. 15698 15699Completed a major overhaul of the internal ACPI object types for 15700the ACPI Namespace and the associated operand objects. Many of 15701these types had become obsolete with the introduction of the two- 15702pass namespace load. This cleanup simplifies the code and makes 15703the entire namespace load mechanism much clearer and easier to 15704understand. 15705 15706Improved debug output for tracking scope opening/closing to help 15707diagnose scoping issues. The old scope name as well as the new 15708scope name are displayed. Also improved error messages for 15709problems with ASL Mutex objects and error messages for GPE 15710problems. 15711 15712Cleaned up the namespace dump code, removed obsolete code. 15713 15714All string output (for all namespace/object dumps) now uses the 15715common ACPI string output procedure which handles escapes properly 15716and does not emit non-printable characters. 15717 15718Fixed some issues with constants in the 64-bit version of the 15719local C library (utclib.c) 15720 15721 157222) Linux 15723 15724EC Driver: No longer attempts to acquire the Global Lock at 15725interrupt level. 15726 15727 157283) iASL Compiler/Disassembler 15729 15730Implemented ACPI 2.0B grammar change that disallows all Type 1 and 157312 opcodes outside of a control method. This means that the 15732"executable" operators (versus the "namespace" operators) cannot 15733be used at the table level; they can only be used within a control 15734method. 15735 15736Implemented the restriction on the Scope() operator where the 15737target must already exist in the namespace at the time the 15738operator is encountered (during ASL compilation). In other words, 15739forward references are not allowed and Scope() cannot create a new 15740object. This makes the iASL compiler compatible with other ACPI 15741implementations and makes the Scope() implementation adhere to the 15742ACPI specification. 15743 15744Fixed a problem where namepath optimization for the Alias operator 15745was optimizing the wrong path (of the two namepaths.) This caused 15746a "Missing alias link" error message. 15747 15748Fixed a problem where an "unknown reserved name" warning could be 15749incorrectly generated for names like "_SB" when the trailing 15750underscore is not used in the original ASL. 15751 15752Fixed a problem where the reserved name check did not handle 15753NamePaths with multiple NameSegs correctly. The first nameseg of 15754the NamePath was examined instead of the last NameSeg. 15755 15756 15757---------------------------------------- 15758 1575902 October 2002. Summary of changes for this release. 15760 15761 157621) ACPI CA Core Subsystem version 20021002: 15763 15764Fixed a problem where a store/copy of a string to an existing 15765string did not always set the string length properly in the String 15766object. 15767 15768Fixed a reported problem with the ToString operator where the 15769behavior was identical to the ToHexString operator instead of just 15770simply converting a raw buffer to a string data type. 15771 15772Fixed a problem where CopyObject and the other "explicit" 15773conversion operators were not updating the internal namespace node 15774type as part of the store operation. 15775 15776Fixed a memory leak during implicit source operand conversion 15777where the original object was not deleted if it was converted to a 15778new object of a different type. 15779 15780Enhanced error messages for all problems associated with namespace 15781lookups. Common procedure generates and prints the lookup name as 15782well as the formatted status. 15783 15784Completed implementation of a new design for the Alias support 15785within the namespace. The existing design did not handle the case 15786where a new object was assigned to one of the two names due to the 15787use of an explicit conversion operator, resulting in the two names 15788pointing to two different objects. The new design simply points 15789the Alias name to the original name node - not to the object. 15790This results in a level of indirection that must be handled in the 15791name resolution mechanism. 15792 15793Code and Data Size: Current core subsystem library sizes are shown 15794below. These are the code and data sizes for the acpica.lib 15795produced by the Microsoft Visual C++ 6.0 compiler, and these 15796values do not include any ACPI driver or OSPM code. The debug 15797version of the code includes the debug output trace mechanism and 15798has a larger code and data size. Note that these values will vary 15799depending on the efficiency of the compiler and the compiler 15800options used during generation. 15801 15802 Previous Release 15803 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15804 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15805 Current Release: 15806 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15807 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15808 15809 158102) Linux 15811 15812Initialize thermal driver's timer before it is used. (Knut 15813Neumann) 15814 15815Allow handling negative celsius values. (Kochi Takayoshi) 15816 15817Fix thermal management and make trip points. R/W (Pavel Machek) 15818 15819Fix /proc/acpi/sleep. (P. Christeas) 15820 15821IA64 fixes. (David Mosberger) 15822 15823Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15824 15825Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15826Brodowski) 15827 15828 158293) iASL Compiler/Disassembler 15830 15831Clarified some warning/error messages. 15832 15833 15834---------------------------------------- 1583518 September 2002. Summary of changes for this release. 15836 15837 158381) ACPI CA Core Subsystem version 20020918: 15839 15840Fixed a reported problem with reference chaining (via the Index() 15841and RefOf() operators) in the ObjectType() and SizeOf() operators. 15842The definition of these operators includes the dereferencing of 15843all chained references to return information on the base object. 15844 15845Fixed a problem with stores to indexed package elements - the 15846existing code would not complete the store if an "implicit 15847conversion" was not performed. In other words, if the existing 15848object (package element) was to be replaced completely, the code 15849didn't handle this case. 15850 15851Relaxed typechecking on the ASL "Scope" operator to allow the 15852target name to refer to an object of type Integer, String, or 15853Buffer, in addition to the scoping object types (Device, 15854predefined Scopes, Processor, PowerResource, and ThermalZone.) 15855This allows existing AML code that has workarounds for a bug in 15856Windows to function properly. A warning is issued, however. This 15857affects both the AML interpreter and the iASL compiler. Below is 15858an example of this type of ASL code: 15859 15860 Name(DEB,0x00) 15861 Scope(DEB) 15862 { 15863 15864Fixed some reported problems with 64-bit integer support in the 15865local implementation of C library functions (clib.c) 15866 15867 158682) Linux 15869 15870Use ACPI fix map region instead of IOAPIC region, since it is 15871undefined in non-SMP. 15872 15873Ensure that the SCI has the proper polarity and trigger, even on 15874systems that do not have an interrupt override entry in the MADT. 15875 158762.5 big driver reorganization (Pat Mochel) 15877 15878Use early table mapping code from acpitable.c (Andi Kleen) 15879 15880New blacklist entries (Andi Kleen) 15881 15882Blacklist improvements. Split blacklist code out into a separate 15883file. Move checking the blacklist to very early. Previously, we 15884would use ACPI tables, and then halfway through init, check the 15885blacklist -- too late. Now, it's early enough to completely fall- 15886back to non-ACPI. 15887 15888 158893) iASL Compiler/Disassembler version 20020918: 15890 15891Fixed a problem where the typechecking code didn't know that an 15892alias could point to a method. In other words, aliases were not 15893being dereferenced during typechecking. 15894 15895 15896---------------------------------------- 1589729 August 2002. Summary of changes for this release. 15898 158991) ACPI CA Core Subsystem Version 20020829: 15900 15901If the target of a Scope() operator already exists, it must be an 15902object type that actually opens a scope -- such as a Device, 15903Method, Scope, etc. This is a fatal runtime error. Similar error 15904check has been added to the iASL compiler also. 15905 15906Tightened up the namespace load to disallow multiple names in the 15907same scope. This previously was allowed if both objects were of 15908the same type. (i.e., a lookup was the same as entering a new 15909name). 15910 15911 159122) Linux 15913 15914Ensure that the ACPI interrupt has the proper trigger and 15915polarity. 15916 15917local_irq_disable is extraneous. (Matthew Wilcox) 15918 15919Make "acpi=off" actually do what it says, and not use the ACPI 15920interpreter *or* the tables. 15921 15922Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15923Takayoshi) 15924 15925 159263) iASL Compiler/Disassembler Version 20020829: 15927 15928Implemented namepath optimization for name declarations. For 15929example, a declaration like "Method (\_SB_.ABCD)" would get 15930optimized to "Method (ABCD)" if the declaration is within the 15931\_SB_ scope. This optimization is in addition to the named 15932reference path optimization first released in the previous 15933version. This would seem to complete all possible optimizations 15934for namepaths within the ASL/AML. 15935 15936If the target of a Scope() operator already exists, it must be an 15937object type that actually opens a scope -- such as a Device, 15938Method, Scope, etc. 15939 15940Implemented a check and warning for unreachable code in the same 15941block below a Return() statement. 15942 15943Fixed a problem where the listing file was not generated if the 15944compiler aborted if the maximum error count was exceeded (200). 15945 15946Fixed a problem where the typechecking of method return values was 15947broken. This includes the check for a return value when the 15948method is invoked as a TermArg (a return value is expected.) 15949 15950Fixed a reported problem where EOF conditions during a quoted 15951string or comment caused a fault. 15952 15953 15954---------------------------------------- 1595515 August 2002. Summary of changes for this release. 15956 159571) ACPI CA Core Subsystem Version 20020815: 15958 15959Fixed a reported problem where a Store to a method argument that 15960contains a reference did not perform the indirect store correctly. 15961This problem was created during the conversion to the new 15962reference object model - the indirect store to a method argument 15963code was not updated to reflect the new model. 15964 15965Reworked the ACPI mode change code to better conform to ACPI 2.0, 15966handle corner cases, and improve code legibility (Kochi Takayoshi) 15967 15968Fixed a problem with the pathname parsing for the carat (^) 15969prefix. The heavy use of the carat operator by the new namepath 15970optimization in the iASL compiler uncovered a problem with the AML 15971interpreter handling of this prefix. In the case where one or 15972more carats precede a single nameseg, the nameseg was treated as 15973standalone and the search rule (to root) was inadvertently 15974applied. This could cause both the iASL compiler and the 15975interpreter to find the wrong object or to miss the error that 15976should occur if the object does not exist at that exact pathname. 15977 15978Found and fixed the problem where the HP Pavilion DSDT would not 15979load. This was a relatively minor tweak to the table loading code 15980(a problem caused by the unexpected encounter with a method 15981invocation not within a control method), but it does not solve the 15982overall issue of the execution of AML code at the table level. 15983This investigation is still ongoing. 15984 15985Code and Data Size: Current core subsystem library sizes are shown 15986below. These are the code and data sizes for the acpica.lib 15987produced by the Microsoft Visual C++ 6.0 compiler, and these 15988values do not include any ACPI driver or OSPM code. The debug 15989version of the code includes the debug output trace mechanism and 15990has a larger code and data size. Note that these values will vary 15991depending on the efficiency of the compiler and the compiler 15992options used during generation. 15993 15994 Previous Release 15995 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15996 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15997 Current Release: 15998 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15999 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 16000 16001 160022) Linux 16003 16004Remove redundant slab.h include (Brad Hards) 16005 16006Fix several bugs in thermal.c (Herbert Nachtnebel) 16007 16008Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 16009 16010Change acpi_system_suspend to use updated irq functions (Pavel 16011Machek) 16012 16013Export acpi_get_firmware_table (Matthew Wilcox) 16014 16015Use proper root proc entry for ACPI (Kochi Takayoshi) 16016 16017Fix early-boot table parsing (Bjorn Helgaas) 16018 16019 160203) iASL Compiler/Disassembler 16021 16022Reworked the compiler options to make them more consistent and to 16023use two-letter options where appropriate. We were running out of 16024sensible letters. This may break some makefiles, so check the 16025current options list by invoking the compiler with no parameters. 16026 16027Completed the design and implementation of the ASL namepath 16028optimization option for the compiler. This option optimizes all 16029references to named objects to the shortest possible path. The 16030first attempt tries to utilize a single nameseg (4 characters) and 16031the "search-to-root" algorithm used by the interpreter. If that 16032cannot be used (because either the name is not in the search path 16033or there is a conflict with another object with the same name), 16034the pathname is optimized using the carat prefix (usually a 16035shorter string than specifying the entire path from the root.) 16036 16037Implemented support to obtain the DSDT from the Windows registry 16038(when the disassembly option is specified with no input file). 16039Added this code as the implementation for AcpiOsTableOverride in 16040the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 16041utility) to scan memory for the DSDT to the AcpiOsTableOverride 16042function in the DOS OSL to make the disassembler truly OS 16043independent. 16044 16045Implemented a new option to disassemble and compile in one step. 16046When used without an input filename, this option will grab the 16047DSDT from the local machine, disassemble it, and compile it in one 16048step. 16049 16050Added a warning message for invalid escapes (a backslash followed 16051by any character other than the allowable escapes). This catches 16052the quoted string error "\_SB_" (which should be "\\_SB_" ). 16053 16054Also, there are numerous instances in the ACPI specification where 16055this error occurs. 16056 16057Added a compiler option to disable all optimizations. This is 16058basically the "compatibility mode" because by using this option, 16059the AML code will come out exactly the same as other ASL 16060compilers. 16061 16062Added error messages for incorrectly ordered dependent resource 16063functions. This includes: missing EndDependentFn macro at end of 16064dependent resource list, nested dependent function macros (both 16065start and end), and missing StartDependentFn macro. These are 16066common errors that should be caught at compile time. 16067 16068Implemented _OSI support for the disassembler and compiler. _OSI 16069must be included in the namespace for proper disassembly (because 16070the disassembler must know the number of arguments.) 16071 16072Added an "optimization" message type that is optional (off by 16073default). This message is used for all optimizations - including 16074constant folding, integer optimization, and namepath optimization. 16075 16076---------------------------------------- 1607725 July 2002. Summary of changes for this release. 16078 16079 160801) ACPI CA Core Subsystem Version 20020725: 16081 16082The AML Disassembler has been enhanced to produce compilable ASL 16083code and has been integrated into the iASL compiler (see below) as 16084well as the single-step disassembly for the AML debugger and the 16085disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 16086resource templates and macros are fully supported. The 16087disassembler has been tested on over 30 different AML files, 16088producing identical AML when the resulting disassembled ASL file 16089is recompiled with the same ASL compiler. 16090 16091Modified the Resource Manager to allow zero interrupts and zero 16092dma channels during the GetCurrentResources call. This was 16093causing problems on some platforms. 16094 16095Added the AcpiOsRedirectOutput interface to the OSL to simplify 16096output redirection for the AcpiOsPrintf and AcpiOsVprintf 16097interfaces. 16098 16099Code and Data Size: Current core subsystem library sizes are shown 16100below. These are the code and data sizes for the acpica.lib 16101produced by the Microsoft Visual C++ 6.0 compiler, and these 16102values do not include any ACPI driver or OSPM code. The debug 16103version of the code includes the debug output trace mechanism and 16104has a larger code and data size. Note that these values will vary 16105depending on the efficiency of the compiler and the compiler 16106options used during generation. 16107 16108 Previous Release 16109 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16110 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16111 Current Release: 16112 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 16113 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 16114 16115 161162) Linux 16117 16118Fixed a panic in the EC driver (Dominik Brodowski) 16119 16120Implemented checksum of the R/XSDT itself during Linux table scan 16121(Richard Schaal) 16122 16123 161243) iASL compiler 16125 16126The AML disassembler is integrated into the compiler. The "-d" 16127option invokes the disassembler to completely disassemble an 16128input AML file, producing as output a text ASL file with the 16129extension ".dsl" (to avoid name collisions with existing .asl 16130source files.) A future enhancement will allow the disassembler 16131to obtain the BIOS DSDT from the registry under Windows. 16132 16133Fixed a problem with the VendorShort and VendorLong resource 16134descriptors where an invalid AML sequence was created. 16135 16136Implemented a fix for BufferData term in the ASL parser. It was 16137inadvertently defined twice, allowing invalid syntax to pass and 16138causing reduction conflicts. 16139 16140Fixed a problem where the Ones opcode could get converted to a 16141value of zero if "Ones" was used where a byte, word or dword value 16142was expected. The 64-bit value is now truncated to the correct 16143size with the correct value. 16144 16145 16146 16147---------------------------------------- 1614802 July 2002. Summary of changes for this release. 16149 16150 161511) ACPI CA Core Subsystem Version 20020702: 16152 16153The Table Manager code has been restructured to add several new 16154features. Tables that are not required by the core subsystem 16155(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 16156validated in any way and are returned from AcpiGetFirmwareTable if 16157requested. The AcpiOsTableOverride interface is now called for 16158each table that is loaded by the subsystem in order to allow the 16159host to override any table it chooses. Previously, only the DSDT 16160could be overridden. Added one new files, tbrsdt.c and 16161tbgetall.c. 16162 16163Fixed a problem with the conversion of internal package objects to 16164external objects (when a package is returned from a control 16165method.) The return buffer length was set to zero instead of the 16166proper length of the package object. 16167 16168Fixed a reported problem with the use of the RefOf and DeRefOf 16169operators when passing reference arguments to control methods. A 16170new type of Reference object is used internally for references 16171produced by the RefOf operator. 16172 16173Added additional error messages in the Resource Manager to explain 16174AE_BAD_DATA errors when they occur during resource parsing. 16175 16176Split the AcpiEnableSubsystem into two primitives to enable a 16177finer granularity initialization sequence. These two calls should 16178be called in this order: AcpiEnableSubsystem (flags), 16179AcpiInitializeObjects (flags). The flags parameter remains the 16180same. 16181 16182 161832) Linux 16184 16185Updated the ACPI utilities module to understand the new style of 16186fully resolved package objects that are now returned from the core 16187subsystem. This eliminates errors of the form: 16188 16189 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 16190 acpi_utils-0430 [145] acpi_evaluate_reference: 16191 Invalid element in package (not a device reference) 16192 16193The method evaluation utility uses the new buffer allocation 16194scheme instead of calling AcpiEvaluate Object twice. 16195 16196Added support for ECDT. This allows the use of the Embedded 16197 16198Controller before the namespace has been fully initialized, which 16199is necessary for ACPI 2.0 support, and for some laptops to 16200initialize properly. (Laptops using ECDT are still rare, so only 16201limited testing was performed of the added functionality.) 16202 16203Fixed memory leaks in the EC driver. 16204 16205Eliminated a brittle code structure in acpi_bus_init(). 16206 16207Eliminated the acpi_evaluate() helper function in utils.c. It is 16208no longer needed since acpi_evaluate_object can optionally 16209allocate memory for the return object. 16210 16211Implemented fix for keyboard hang when getting battery readings on 16212some systems (Stephen White) 16213 16214PCI IRQ routing update (Dominik Brodowski) 16215 16216Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 16217support 16218 16219---------------------------------------- 1622011 June 2002. Summary of changes for this release. 16221 16222 162231) ACPI CA Core Subsystem Version 20020611: 16224 16225Fixed a reported problem where constants such as Zero and One 16226appearing within _PRT packages were not handled correctly within 16227the resource manager code. Originally reported against the ASL 16228compiler because the code generator now optimizes integers to 16229their minimal AML representation (i.e. AML constants if possible.) 16230The _PRT code now handles all AML constant opcodes correctly 16231(Zero, One, Ones, Revision). 16232 16233Fixed a problem with the Concatenate operator in the AML 16234interpreter where a buffer result object was incorrectly marked as 16235not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 16236 16237All package sub-objects are now fully resolved before they are 16238returned from the external ACPI interfaces. This means that name 16239strings are resolved to object handles, and constant operators 16240(Zero, One, Ones, Revision) are resolved to Integers. 16241 16242Implemented immediate resolution of the AML Constant opcodes 16243(Zero, One, Ones, Revision) to Integer objects upon detection 16244within the AML stream. This has simplified and reduced the 16245generated code size of the subsystem by eliminating about 10 16246switch statements for these constants (which previously were 16247contained in Reference objects.) The complicating issues are that 16248the Zero opcode is used as a "placeholder" for unspecified 16249optional target operands and stores to constants are defined to be 16250no-ops. 16251 16252Code and Data Size: Current core subsystem library sizes are shown 16253below. These are the code and data sizes for the acpica.lib 16254produced by the Microsoft Visual C++ 6.0 compiler, and these 16255values do not include any ACPI driver or OSPM code. The debug 16256version of the code includes the debug output trace mechanism and 16257has a larger code and data size. Note that these values will vary 16258depending on the efficiency of the compiler and the compiler 16259options used during generation. 16260 16261 Previous Release 16262 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16263 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16264 Current Release: 16265 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16266 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16267 16268 162692) Linux 16270 16271 16272Added preliminary support for obtaining _TRA data for PCI root 16273bridges (Bjorn Helgaas). 16274 16275 162763) iASL Compiler Version X2046: 16277 16278Fixed a problem where the "_DDN" reserved name was defined to be a 16279control method with one argument. There are no arguments, and 16280_DDN does not have to be a control method. 16281 16282Fixed a problem with the Linux version of the compiler where the 16283source lines printed with error messages were the wrong lines. 16284This turned out to be the "LF versus CR/LF" difference between 16285Windows and Unix. This appears to be the longstanding issue 16286concerning listing output and error messages. 16287 16288Fixed a problem with the Linux version of compiler where opcode 16289names within error messages were wrong. This was caused by a 16290slight difference in the output of the Flex tool on Linux versus 16291Windows. 16292 16293Fixed a problem with the Linux compiler where the hex output files 16294contained some garbage data caused by an internal buffer overrun. 16295 16296 16297---------------------------------------- 1629817 May 2002. Summary of changes for this release. 16299 16300 163011) ACPI CA Core Subsystem Version 20020517: 16302 16303Implemented a workaround to an BIOS bug discovered on the HP 16304OmniBook where the FADT revision number and the table size are 16305inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16306behavior is to fallback to using only the ACPI 1.0 fields of the 16307FADT if the table is too small to be a ACPI 2.0 table as claimed 16308by the revision number. Although this is a BIOS bug, this is a 16309case where the workaround is simple enough and with no side 16310effects, so it seemed prudent to add it. A warning message is 16311issued, however. 16312 16313Implemented minimum size checks for the fixed-length ACPI tables - 16314- the FADT and FACS, as well as consistency checks between the 16315revision number and the table size. 16316 16317Fixed a reported problem in the table override support where the 16318new table pointer was incorrectly treated as a physical address 16319instead of a logical address. 16320 16321Eliminated the use of the AE_AML_ERROR exception and replaced it 16322with more descriptive codes. 16323 16324Fixed a problem where an exception would occur if an ASL Field was 16325defined with no named Field Units underneath it (used by some 16326index fields). 16327 16328Code and Data Size: Current core subsystem library sizes are shown 16329below. These are the code and data sizes for the acpica.lib 16330produced by the Microsoft Visual C++ 6.0 compiler, and these 16331values do not include any ACPI driver or OSPM code. The debug 16332version of the code includes the debug output trace mechanism and 16333has a larger code and data size. Note that these values will vary 16334depending on the efficiency of the compiler and the compiler 16335options used during generation. 16336 16337 Previous Release 16338 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16339 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16340 Current Release: 16341 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16342 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16343 16344 16345 163462) Linux 16347 16348Much work done on ACPI init (MADT and PCI IRQ routing support). 16349(Paul D. and Dominik Brodowski) 16350 16351Fix PCI IRQ-related panic on boot (Sam Revitch) 16352 16353Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16354 16355Fix "MHz" typo (Dominik Brodowski) 16356 16357Fix RTC year 2000 issue (Dominik Brodowski) 16358 16359Preclude multiple button proc entries (Eric Brunet) 16360 16361Moved arch-specific code out of include/platform/aclinux.h 16362 163633) iASL Compiler Version X2044: 16364 16365Implemented error checking for the string used in the EISAID macro 16366(Usually used in the definition of the _HID object.) The code now 16367strictly enforces the PnP format - exactly 7 characters, 3 16368uppercase letters and 4 hex digits. 16369 16370If a raw string is used in the definition of the _HID object 16371(instead of the EISAID macro), the string must contain all 16372alphanumeric characters (e.g., "*PNP0011" is not allowed because 16373of the asterisk.) 16374 16375Implemented checking for invalid use of ACPI reserved names for 16376most of the name creation operators (Name, Device, Event, Mutex, 16377OperationRegion, PowerResource, Processor, and ThermalZone.) 16378Previously, this check was only performed for control methods. 16379 16380Implemented an additional check on the Name operator to emit an 16381error if a reserved name that must be implemented in ASL as a 16382control method is used. We know that a reserved name must be a 16383method if it is defined with input arguments. 16384 16385The warning emitted when a namespace object reference is not found 16386during the cross reference phase has been changed into an error. 16387The "External" directive should be used for names defined in other 16388modules. 16389 16390 163914) Tools and Utilities 16392 16393The 16-bit tools (adump16 and aexec16) have been regenerated and 16394tested. 16395 16396Fixed a problem with the output of both acpidump and adump16 where 16397the indentation of closing parentheses and brackets was not 16398 16399aligned properly with the parent block. 16400 16401 16402---------------------------------------- 1640303 May 2002. Summary of changes for this release. 16404 16405 164061) ACPI CA Core Subsystem Version 20020503: 16407 16408Added support a new OSL interface that allows the host operating 16409 16410system software to override the DSDT found in the firmware - 16411AcpiOsTableOverride. With this interface, the OSL can examine the 16412version of the firmware DSDT and replace it with a different one 16413if desired. 16414 16415Added new external interfaces for accessing ACPI registers from 16416device drivers and other system software - AcpiGetRegister and 16417AcpiSetRegister. This was simply an externalization of the 16418existing AcpiHwBitRegister interfaces. 16419 16420Fixed a regression introduced in the previous build where the 16421ASL/AML CreateField operator always returned an error, 16422"destination must be a NS Node". 16423 16424Extended the maximum time (before failure) to successfully enable 16425ACPI mode to 3 seconds. 16426 16427Code and Data Size: Current core subsystem library sizes are shown 16428below. These are the code and data sizes for the acpica.lib 16429produced by the Microsoft Visual C++ 6.0 compiler, and these 16430values do not include any ACPI driver or OSPM code. The debug 16431version of the code includes the debug output trace mechanism and 16432has a larger code and data size. Note that these values will vary 16433depending on the efficiency of the compiler and the compiler 16434options used during generation. 16435 16436 Previous Release 16437 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16438 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16439 Current Release: 16440 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16441 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16442 16443 164442) Linux 16445 16446Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 16447free. While 3 out of 4 of our in-house systems work fine, the last 16448one still hangs when testing the LAPIC timer. 16449 16450Renamed many files in 2.5 kernel release to omit "acpi_" from the 16451name. 16452 16453Added warning on boot for Presario 711FR. 16454 16455Sleep improvements (Pavel Machek) 16456 16457ACPI can now be built without CONFIG_PCI enabled. 16458 16459IA64: Fixed memory map functions (JI Lee) 16460 16461 164623) iASL Compiler Version X2043: 16463 16464Added support to allow the compiler to be integrated into the MS 16465VC++ development environment for one-button compilation of single 16466files or entire projects -- with error-to-source-line mapping. 16467 16468Implemented support for compile-time constant folding for the 16469Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16470specification. This allows the ASL writer to use expressions 16471instead of Integer/Buffer/String constants in terms that must 16472evaluate to constants at compile time and will also simplify the 16473emitted AML in any such sub-expressions that can be folded 16474(evaluated at compile-time.) This increases the size of the 16475compiler significantly because a portion of the ACPI CA AML 16476interpreter is included within the compiler in order to pre- 16477evaluate constant expressions. 16478 16479 16480Fixed a problem with the "Unicode" ASL macro that caused the 16481compiler to fault. (This macro is used in conjunction with the 16482_STR reserved name.) 16483 16484Implemented an AML opcode optimization to use the Zero, One, and 16485Ones opcodes where possible to further reduce the size of integer 16486constants and thus reduce the overall size of the generated AML 16487code. 16488 16489Implemented error checking for new reserved terms for ACPI version 164902.0A. 16491 16492Implemented the -qr option to display the current list of ACPI 16493reserved names known to the compiler. 16494 16495Implemented the -qc option to display the current list of ASL 16496operators that are allowed within constant expressions and can 16497therefore be folded at compile time if the operands are constants. 16498 16499 165004) Documentation 16501 16502Updated the Programmer's Reference for new interfaces, data types, 16503and memory allocation model options. 16504 16505Updated the iASL Compiler User Reference to apply new format and 16506add information about new features and options. 16507 16508---------------------------------------- 1650919 April 2002. Summary of changes for this release. 16510 165111) ACPI CA Core Subsystem Version 20020419: 16512 16513The source code base for the Core Subsystem has been completely 16514cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16515versions. The Lint option files used are included in the 16516/acpi/generate/lint directory. 16517 16518Implemented enhanced status/error checking across the entire 16519Hardware manager subsystem. Any hardware errors (reported from 16520the OSL) are now bubbled up and will abort a running control 16521method. 16522 16523 16524Fixed a problem where the per-ACPI-table integer width (32 or 64) 16525was stored only with control method nodes, causing a fault when 16526non-control method code was executed during table loading. The 16527solution implemented uses a global variable to indicate table 16528width across the entire ACPI subsystem. Therefore, ACPI CA does 16529not support mixed integer widths across different ACPI tables 16530(DSDT, SSDT). 16531 16532Fixed a problem where NULL extended fields (X fields) in an ACPI 165332.0 ACPI FADT caused the table load to fail. Although the 16534existing ACPI specification is a bit fuzzy on this topic, the new 16535behavior is to fall back on a ACPI 1.0 field if the corresponding 16536ACPI 2.0 X field is zero (even though the table revision indicates 16537a full ACPI 2.0 table.) The ACPI specification will be updated to 16538clarify this issue. 16539 16540Fixed a problem with the SystemMemory operation region handler 16541where memory was always accessed byte-wise even if the AML- 16542specified access width was larger than a byte. This caused 16543problems on systems with memory-mapped I/O. Memory is now 16544accessed with the width specified. On systems that do not support 16545non-aligned transfers, a check is made to guarantee proper address 16546alignment before proceeding in order to avoid an AML-caused 16547alignment fault within the kernel. 16548 16549 16550Fixed a problem with the ExtendedIrq resource where only one byte 16551of the 4-byte Irq field was extracted. 16552 16553Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16554function was out of date and required a rewrite. 16555 16556Code and Data Size: Current core subsystem library sizes are shown 16557below. These are the code and data sizes for the acpica.lib 16558produced by the Microsoft Visual C++ 6.0 compiler, and these 16559values do not include any ACPI driver or OSPM code. The debug 16560version of the code includes the debug output trace mechanism and 16561has a larger code and data size. Note that these values will vary 16562depending on the efficiency of the compiler and the compiler 16563options used during generation. 16564 16565 Previous Release 16566 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16567 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16568 Current Release: 16569 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16570 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16571 16572 165732) Linux 16574 16575PCI IRQ routing fixes (Dominik Brodowski) 16576 16577 165783) iASL Compiler Version X2042: 16579 16580Implemented an additional compile-time error check for a field 16581unit whose size + minimum access width would cause a run-time 16582access beyond the end-of-region. Previously, only the field size 16583itself was checked. 16584 16585The Core subsystem and iASL compiler now share a common parse 16586object in preparation for compile-time evaluation of the type 165873/4/5 ASL operators. 16588 16589 16590---------------------------------------- 16591Summary of changes for this release: 03_29_02 16592 165931) ACPI CA Core Subsystem Version 20020329: 16594 16595Implemented support for late evaluation of TermArg operands to 16596Buffer and Package objects. This allows complex expressions to be 16597used in the declarations of these object types. 16598 16599Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 166001.0, if the field was larger than 32 bits, it was returned as a 16601buffer - otherwise it was returned as an integer. In ACPI 2.0, 16602the field is returned as a buffer only if the field is larger than 1660364 bits. The TableRevision is now considered when making this 16604conversion to avoid incompatibility with existing ASL code. 16605 16606Implemented logical addressing for AcpiOsGetRootPointer. This 16607allows an RSDP with either a logical or physical address. With 16608this support, the host OS can now override all ACPI tables with 16609one logical RSDP. Includes implementation of "typed" pointer 16610support to allow a common data type for both physical and logical 16611pointers internally. This required a change to the 16612AcpiOsGetRootPointer interface. 16613 16614Implemented the use of ACPI 2.0 Generic Address Structures for all 16615GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16616mapped I/O for these ACPI features. 16617 16618Initialization now ignores not only non-required tables (All 16619tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16620not validate the table headers of unrecognized tables. 16621 16622Fixed a problem where a notify handler could only be 16623installed/removed on an object of type Device. All "notify" 16624 16625objects are now supported -- Devices, Processor, Power, and 16626Thermal. 16627 16628Removed most verbosity from the ACPI_DB_INFO debug level. Only 16629critical information is returned when this debug level is enabled. 16630 16631Code and Data Size: Current core subsystem library sizes are shown 16632below. These are the code and data sizes for the acpica.lib 16633produced by the Microsoft Visual C++ 6.0 compiler, and these 16634values do not include any ACPI driver or OSPM code. The debug 16635version of the code includes the debug output trace mechanism and 16636has a larger code and data size. Note that these values will vary 16637depending on the efficiency of the compiler and the compiler 16638options used during generation. 16639 16640 Previous Release 16641 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16642 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16643 Current Release: 16644 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16645 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16646 16647 166482) Linux: 16649 16650The processor driver (acpi_processor.c) now fully supports ACPI 166512.0-based processor performance control (e.g. Intel(R) 16652SpeedStep(TM) technology) Note that older laptops that only have 16653the Intel "applet" interface are not supported through this. The 16654'limit' and 'performance' interface (/proc) are fully functional. 16655[Note that basic policy for controlling performance state 16656transitions will be included in the next version of ospmd.] The 16657idle handler was modified to more aggressively use C2, and PIIX4 16658errata handling underwent a complete overhaul (big thanks to 16659Dominik Brodowski). 16660 16661Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16662based devices in the ACPI namespace are now dynamically bound 16663(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16664This allows, among other things, ACPI to resolve bus numbers for 16665subordinate PCI bridges. 16666 16667Enhanced PCI IRQ routing to get the proper bus number for _PRT 16668entries defined underneath PCI bridges. 16669 16670Added IBM 600E to bad bios list due to invalid _ADR value for 16671PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16672 16673In the process of adding full MADT support (e.g. IOAPIC) for IA32 16674(acpi.c, mpparse.c) -- stay tuned. 16675 16676Added back visual differentiation between fixed-feature and 16677control-method buttons in dmesg. Buttons are also subtyped (e.g. 16678button/power/PWRF) to simplify button identification. 16679 16680We no longer use -Wno-unused when compiling debug. Please ignore 16681any "_THIS_MODULE defined but not used" messages. 16682 16683Can now shut down the system using "magic sysrq" key. 16684 16685 166863) iASL Compiler version 2041: 16687 16688Fixed a problem where conversion errors for hex/octal/decimal 16689constants were not reported. 16690 16691Implemented a fix for the General Register template Address field. 16692This field was 8 bits when it should be 64. 16693 16694Fixed a problem where errors/warnings were no longer being emitted 16695within the listing output file. 16696 16697Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16698exactly 4 characters, alphanumeric only. 16699 16700 16701 16702 16703---------------------------------------- 16704Summary of changes for this release: 03_08_02 16705 16706 167071) ACPI CA Core Subsystem Version 20020308: 16708 16709Fixed a problem with AML Fields where the use of the "AccessAny" 16710keyword could cause an interpreter error due to attempting to read 16711or write beyond the end of the parent Operation Region. 16712 16713Fixed a problem in the SystemMemory Operation Region handler where 16714an attempt was made to map memory beyond the end of the region. 16715This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16716errors on some Linux systems. 16717 16718Fixed a problem where the interpreter/namespace "search to root" 16719algorithm was not functioning for some object types. Relaxed the 16720internal restriction on the search to allow upsearches for all 16721external object types as well as most internal types. 16722 16723 167242) Linux: 16725 16726We now use safe_halt() macro versus individual calls to sti | hlt. 16727 16728Writing to the processor limit interface should now work. "echo 1" 16729will increase the limit, 2 will decrease, and 0 will reset to the 16730 16731default. 16732 16733 167343) ASL compiler: 16735 16736Fixed segfault on Linux version. 16737 16738 16739---------------------------------------- 16740Summary of changes for this release: 02_25_02 16741 167421) ACPI CA Core Subsystem: 16743 16744 16745Fixed a problem where the GPE bit masks were not initialized 16746properly, causing erratic GPE behavior. 16747 16748Implemented limited support for multiple calling conventions. The 16749code can be generated with either the VPL (variable parameter 16750list, or "C") convention, or the FPL (fixed parameter list, or 16751"Pascal") convention. The core subsystem is about 3.4% smaller 16752when generated with FPL. 16753 16754 167552) Linux 16756 16757Re-add some /proc/acpi/event functionality that was lost during 16758the rewrite 16759 16760Resolved issue with /proc events for fixed-feature buttons showing 16761up as the system device. 16762 16763Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16764 16765Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16766 16767Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16768 16769Fixed limit interface & usage to fix bugs with passive cooling 16770hysterisis. 16771 16772Restructured PRT support. 16773 16774 16775---------------------------------------- 16776Summary of changes for this label: 02_14_02 16777 16778 167791) ACPI CA Core Subsystem: 16780 16781Implemented support in AcpiLoadTable to allow loading of FACS and 16782FADT tables. 16783 16784Support for the now-obsolete interim 0.71 64-bit ACPI tables has 16785been removed. All 64-bit platforms should be migrated to the ACPI 167862.0 tables. The actbl71.h header has been removed from the source 16787tree. 16788 16789All C macros defined within the subsystem have been prefixed with 16790"ACPI_" to avoid collision with other system include files. 16791 16792Removed the return value for the two AcpiOsPrint interfaces, since 16793it is never used and causes lint warnings for ignoring the return 16794value. 16795 16796Added error checking to all internal mutex acquire and release 16797calls. Although a failure from one of these interfaces is 16798probably a fatal system error, these checks will cause the 16799immediate abort of the currently executing method or interface. 16800 16801Fixed a problem where the AcpiSetCurrentResources interface could 16802fault. This was a side effect of the deployment of the new memory 16803allocation model. 16804 16805Fixed a couple of problems with the Global Lock support introduced 16806in the last major build. The "common" (1.0/2.0) internal FACS was 16807being overwritten with the FACS signature and clobbering the 16808Global Lock pointer. Also, the actual firmware FACS was being 16809unmapped after construction of the "common" FACS, preventing 16810access to the actual Global Lock field within it. The "common" 16811internal FACS is no longer installed as an actual ACPI table; it 16812is used simply as a global. 16813 16814Code and Data Size: Current core subsystem library sizes are shown 16815below. These are the code and data sizes for the acpica.lib 16816produced by the Microsoft Visual C++ 6.0 compiler, and these 16817values do not include any ACPI driver or OSPM code. The debug 16818version of the code includes the debug output trace mechanism and 16819has a larger code and data size. Note that these values will vary 16820depending on the efficiency of the compiler and the compiler 16821options used during generation. 16822 16823 Previous Release (02_07_01) 16824 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16825 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16826 Current Release: 16827 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16828 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16829 16830 168312) Linux 16832 16833Updated Linux-specific code for core macro and OSL interface 16834changes described above. 16835 16836Improved /proc/acpi/event. It now can be opened only once and has 16837proper poll functionality. 16838 16839Fixed and restructured power management (acpi_bus). 16840 16841Only create /proc "view by type" when devices of that class exist. 16842 16843Fixed "charging/discharging" bug (and others) in acpi_battery. 16844 16845Improved thermal zone code. 16846 16847 168483) ASL Compiler, version X2039: 16849 16850 16851Implemented the new compiler restriction on ASL String hex/octal 16852escapes to non-null, ASCII values. An error results if an invalid 16853value is used. (This will require an ACPI 2.0 specification 16854change.) 16855 16856AML object labels that are output to the optional C and ASM source 16857are now prefixed with both the ACPI table signature and table ID 16858to help guarantee uniqueness within a large BIOS project. 16859 16860 16861---------------------------------------- 16862Summary of changes for this label: 02_01_02 16863 168641) ACPI CA Core Subsystem: 16865 16866ACPI 2.0 support is complete in the entire Core Subsystem and the 16867ASL compiler. All new ACPI 2.0 operators are implemented and all 16868other changes for ACPI 2.0 support are complete. With 16869simultaneous code and data optimizations throughout the subsystem, 16870ACPI 2.0 support has been implemented with almost no additional 16871cost in terms of code and data size. 16872 16873Implemented a new mechanism for allocation of return buffers. If 16874the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16875be allocated on behalf of the caller. Consolidated all return 16876buffer validation and allocation to a common procedure. Return 16877buffers will be allocated via the primary OSL allocation interface 16878since it appears that a separate pool is not needed by most users. 16879If a separate pool is required for these buffers, the caller can 16880still use the original mechanism and pre-allocate the buffer(s). 16881 16882Implemented support for string operands within the DerefOf 16883operator. 16884 16885Restructured the Hardware and Event managers to be table driven, 16886simplifying the source code and reducing the amount of generated 16887code. 16888 16889Split the common read/write low-level ACPI register bitfield 16890procedure into a separate read and write, simplifying the code 16891considerably. 16892 16893Obsoleted the AcpiOsCallocate OSL interface. This interface was 16894used only a handful of times and didn't have enough critical mass 16895for a separate interface. Replaced with a common calloc procedure 16896in the core. 16897 16898Fixed a reported problem with the GPE number mapping mechanism 16899that allows GPE1 numbers to be non-contiguous with GPE0. 16900Reorganized the GPE information and shrunk a large array that was 16901originally large enough to hold info for all possible GPEs (256) 16902to simply large enough to hold all GPEs up to the largest GPE 16903number on the machine. 16904 16905Fixed a reported problem with resource structure alignment on 64- 16906bit platforms. 16907 16908Changed the AcpiEnableEvent and AcpiDisableEvent external 16909interfaces to not require any flags for the common case of 16910enabling/disabling a GPE. 16911 16912Implemented support to allow a "Notify" on a Processor object. 16913 16914Most TBDs in comments within the source code have been resolved 16915and eliminated. 16916 16917 16918Fixed a problem in the interpreter where a standalone parent 16919prefix (^) was not handled correctly in the interpreter and 16920debugger. 16921 16922Removed obsolete and unnecessary GPE save/restore code. 16923 16924Implemented Field support in the ASL Load operator. This allows a 16925table to be loaded from a named field, in addition to loading a 16926table directly from an Operation Region. 16927 16928Implemented timeout and handle support in the external Global Lock 16929interfaces. 16930 16931Fixed a problem in the AcpiDump utility where pathnames were no 16932longer being generated correctly during the dump of named objects. 16933 16934Modified the AML debugger to give a full display of if/while 16935predicates instead of just one AML opcode at a time. (The 16936predicate can have several nested ASL statements.) The old method 16937was confusing during single stepping. 16938 16939Code and Data Size: Current core subsystem library sizes are shown 16940below. These are the code and data sizes for the acpica.lib 16941produced by the Microsoft Visual C++ 6.0 compiler, and these 16942values do not include any ACPI driver or OSPM code. The debug 16943version of the code includes the debug output trace mechanism and 16944has a larger code and data size. Note that these values will vary 16945depending on the efficiency of the compiler and the compiler 16946options used during generation. 16947 16948 Previous Release (12_18_01) 16949 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16950 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16951 Current Release: 16952 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16953 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16954 169552) Linux 16956 16957 Implemented fix for PIIX reverse throttling errata (Processor 16958driver) 16959 16960Added new Limit interface (Processor and Thermal drivers) 16961 16962New thermal policy (Thermal driver) 16963 16964Many updates to /proc 16965 16966Battery "low" event support (Battery driver) 16967 16968Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16969 16970IA32 - IA64 initialization unification, no longer experimental 16971 16972Menuconfig options redesigned 16973 169743) ASL Compiler, version X2037: 16975 16976Implemented several new output features to simplify integration of 16977AML code into firmware: 1) Output the AML in C source code with 16978labels for each named ASL object. The original ASL source code 16979is interleaved as C comments. 2) Output the AML in ASM source code 16980with labels and interleaved ASL source. 3) Output the AML in 16981raw hex table form, in either C or ASM. 16982 16983Implemented support for optional string parameters to the 16984LoadTable operator. 16985 16986Completed support for embedded escape sequences within string 16987literals. The compiler now supports all single character escapes 16988as well as the Octal and Hex escapes. Note: the insertion of a 16989null byte into a string literal (via the hex/octal escape) causes 16990the string to be immediately terminated. A warning is issued. 16991 16992Fixed a problem where incorrect AML was generated for the case 16993where an ASL namepath consists of a single parent prefix ( 16994 16995) with no trailing name segments. 16996 16997The compiler has been successfully generated with a 64-bit C 16998compiler. 16999 17000 17001 17002 17003---------------------------------------- 17004Summary of changes for this label: 12_18_01 17005 170061) Linux 17007 17008Enhanced blacklist with reason and severity fields. Any table's 17009signature may now be used to identify a blacklisted system. 17010 17011Call _PIC control method to inform the firmware which interrupt 17012model the OS is using. Turn on any disabled link devices. 17013 17014Cleaned up busmgr /proc error handling (Andreas Dilger) 17015 17016 2) ACPI CA Core Subsystem: 17017 17018Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 17019while loop) 17020 17021Completed implementation of the ACPI 2.0 "Continue", 17022"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 17023operators. All new ACPI 2.0 operators are now implemented in both 17024the ASL compiler and the AML interpreter. The only remaining ACPI 170252.0 task is support for the String data type in the DerefOf 17026operator. Fixed a problem with AcquireMutex where the status code 17027was lost if the caller had to actually wait for the mutex. 17028 17029Increased the maximum ASL Field size from 64K bits to 4G bits. 17030 17031Completed implementation of the external Global Lock interfaces -- 17032AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 17033Handler parameters were added. 17034 17035Completed another pass at removing warnings and issues when 17036compiling with 64-bit compilers. The code now compiles cleanly 17037with the Intel 64-bit C/C++ compiler. Most notably, the pointer 17038add and subtract (diff) macros have changed considerably. 17039 17040 17041Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1704264-bit platforms, 32-bits on all others. This type is used 17043wherever memory allocation and/or the C sizeof() operator is used, 17044and affects the OSL memory allocation interfaces AcpiOsAllocate 17045and AcpiOsCallocate. 17046 17047Implemented sticky user breakpoints in the AML debugger. 17048 17049Code and Data Size: Current core subsystem library sizes are shown 17050below. These are the code and data sizes for the acpica.lib 17051produced by the Microsoft Visual C++ 6.0 compiler, and these 17052values do not include any ACPI driver or OSPM code. The debug 17053version of the code includes the debug output trace mechanism and 17054has a larger code and data size. Note that these values will vary 17055depending on the efficiency of the compiler and the compiler 17056options used during generation. 17057 17058 Previous Release (12_05_01) 17059 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17060 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17061 Current Release: 17062 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 17063 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 17064 17065 3) ASL Compiler, version X2034: 17066 17067Now checks for (and generates an error if detected) the use of a 17068Break or Continue statement without an enclosing While statement. 17069 17070 17071Successfully generated the compiler with the Intel 64-bit C 17072compiler. 17073 17074 ---------------------------------------- 17075Summary of changes for this label: 12_05_01 17076 17077 1) ACPI CA Core Subsystem: 17078 17079The ACPI 2.0 CopyObject operator is fully implemented. This 17080operator creates a new copy of an object (and is also used to 17081bypass the "implicit conversion" mechanism of the Store operator.) 17082 17083The ACPI 2.0 semantics for the SizeOf operator are fully 17084implemented. The change is that performing a SizeOf on a 17085reference object causes an automatic dereference of the object to 17086tha actual value before the size is evaluated. This behavior was 17087undefined in ACPI 1.0. 17088 17089The ACPI 2.0 semantics for the Extended IRQ resource descriptor 17090have been implemented. The interrupt polarity and mode are now 17091independently set. 17092 17093Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 17094appearing in Package objects were not properly converted to 17095integers when the internal Package was converted to an external 17096object (via the AcpiEvaluateObject interface.) 17097 17098Fixed a problem with the namespace object deletion mechanism for 17099objects created by control methods. There were two parts to this 17100problem: 1) Objects created during the initialization phase method 17101parse were not being deleted, and 2) The object owner ID mechanism 17102to track objects was broken. 17103 17104Fixed a problem where the use of the ASL Scope operator within a 17105control method would result in an invalid opcode exception. 17106 17107Fixed a problem introduced in the previous label where the buffer 17108length required for the _PRT structure was not being returned 17109correctly. 17110 17111Code and Data Size: Current core subsystem library sizes are shown 17112below. These are the code and data sizes for the acpica.lib 17113produced by the Microsoft Visual C++ 6.0 compiler, and these 17114values do not include any ACPI driver or OSPM code. The debug 17115version of the code includes the debug output trace mechanism and 17116has a larger code and data size. Note that these values will vary 17117depending on the efficiency of the compiler and the compiler 17118options used during generation. 17119 17120 Previous Release (11_20_01) 17121 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17122 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17123 17124 Current Release: 17125 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 17126 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 17127 17128 2) Linux: 17129 17130Updated all files to apply cleanly against 2.4.16. 17131 17132Added basic PCI Interrupt Routing Table (PRT) support for IA32 17133(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 17134version supports both static and dynamic PRT entries, but dynamic 17135entries are treated as if they were static (not yet 17136reconfigurable). Architecture- specific code to use this data is 17137absent on IA32 but should be available shortly. 17138 17139Changed the initialization sequence to start the ACPI interpreter 17140(acpi_init) prior to initialization of the PCI driver (pci_init) 17141in init/main.c. This ordering is required to support PRT and 17142facilitate other (future) enhancement. A side effect is that the 17143ACPI bus driver and certain device drivers can no longer be loaded 17144as modules. 17145 17146Modified the 'make menuconfig' options to allow PCI Interrupt 17147Routing support to be included without the ACPI Bus and other 17148device drivers. 17149 17150 3) ASL Compiler, version X2033: 17151 17152Fixed some issues with the use of the new CopyObject and 17153DataTableRegion operators. Both are fully functional. 17154 17155 ---------------------------------------- 17156Summary of changes for this label: 11_20_01 17157 17158 20 November 2001. Summary of changes for this release. 17159 17160 1) ACPI CA Core Subsystem: 17161 17162Updated Index support to match ACPI 2.0 semantics. Storing a 17163Integer, String, or Buffer to an Index of a Buffer will store only 17164the least-significant byte of the source to the Indexed buffer 17165byte. Multiple writes are not performed. 17166 17167Fixed a problem where the access type used in an AccessAs ASL 17168operator was not recorded correctly into the field object. 17169 17170Fixed a problem where ASL Event objects were created in a 17171signalled state. Events are now created in an unsignalled state. 17172 17173The internal object cache is now purged after table loading and 17174initialization to reduce the use of dynamic kernel memory -- on 17175the assumption that object use is greatest during the parse phase 17176of the entire table (versus the run-time use of individual control 17177methods.) 17178 17179ACPI 2.0 variable-length packages are now fully operational. 17180 17181Code and Data Size: Code and Data optimizations have permitted new 17182feature development with an actual reduction in the library size. 17183Current core subsystem library sizes are shown below. These are 17184the code and data sizes for the acpica.lib produced by the 17185Microsoft Visual C++ 6.0 compiler, and these values do not include 17186any ACPI driver or OSPM code. The debug version of the code 17187includes the debug output trace mechanism and has a larger code 17188and data size. Note that these values will vary depending on the 17189efficiency of the compiler and the compiler options used during 17190generation. 17191 17192 Previous Release (11_09_01): 17193 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17194 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17195 17196 Current Release: 17197 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 17198 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 17199 17200 2) Linux: 17201 17202Enhanced the ACPI boot-time initialization code to allow the use 17203of Local APIC tables for processor enumeration on IA-32, and to 17204pave the way for a fully MPS-free boot (on SMP systems) in the 17205near future. This functionality replaces 17206arch/i386/kernel/acpitables.c, which was introduced in an earlier 172072.4.15-preX release. To enable this feature you must add 17208"acpi_boot=on" to the kernel command line -- see the help entry 17209for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 17210the works... 17211 17212Restructured the configuration options to allow boot-time table 17213parsing support without inclusion of the ACPI Interpreter (and 17214other) code. 17215 17216NOTE: This release does not include fixes for the reported events, 17217power-down, and thermal passive cooling issues (coming soon). 17218 17219 3) ASL Compiler: 17220 17221Added additional typechecking for Fields within restricted access 17222Operation Regions. All fields within EC and CMOS regions must be 17223declared with ByteAcc. All fields within SMBus regions must be 17224declared with the BufferAcc access type. 17225 17226Fixed a problem where the listing file output of control methods 17227no longer interleaved the actual AML code with the ASL source 17228code. 17229 17230 17231 17232 17233---------------------------------------- 17234Summary of changes for this label: 11_09_01 17235 172361) ACPI CA Core Subsystem: 17237 17238Implemented ACPI 2.0-defined support for writes to fields with a 17239Buffer, String, or Integer source operand that is smaller than the 17240target field. In these cases, the source operand is zero-extended 17241to fill the target field. 17242 17243Fixed a problem where a Field starting bit offset (within the 17244parent operation region) was calculated incorrectly if the 17245 17246alignment of the field differed from the access width. This 17247affected CreateWordField, CreateDwordField, CreateQwordField, and 17248possibly other fields that use the "AccessAny" keyword. 17249 17250Fixed a problem introduced in the 11_02_01 release where indirect 17251stores through method arguments did not operate correctly. 17252 172532) Linux: 17254 17255Implemented boot-time ACPI table parsing support 17256(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17257facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17258legacy BIOS interfaces (e.g. MPS) for the configuration of system 17259processors, memory, and interrupts during setup_arch(). Note that 17260this patch does not include the required architecture-specific 17261changes required to apply this information -- subsequent patches 17262will be posted for both IA32 and IA64 to achieve this. 17263 17264Added low-level sleep support for IA32 platforms, courtesy of Pat 17265Mochel. This allows IA32 systems to transition to/from various 17266sleeping states (e.g. S1, S3), although the lack of a centralized 17267driver model and power-manageable drivers will prevent its 17268(successful) use on most systems. 17269 17270Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17271submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17272tables" option, etc. 17273 17274Increased the default timeout for the EC driver from 1ms to 10ms 17275(1000 cycles of 10us) to try to address AE_TIME errors during EC 17276transactions. 17277 17278 ---------------------------------------- 17279Summary of changes for this label: 11_02_01 17280 172811) ACPI CA Core Subsystem: 17282 17283ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17284(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17285implemented. 17286 17287OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17288changes to support ACPI 2.0 Qword field access. Read/Write 17289PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17290accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17291the value parameter for the address space handler interface is now 17292an ACPI_INTEGER. OSL implementations of these interfaces must now 17293handle the case where the Width parameter is 64. 17294 17295Index Fields: Fixed a problem where unaligned bit assembly and 17296disassembly for IndexFields was not supported correctly. 17297 17298Index and Bank Fields: Nested Index and Bank Fields are now 17299supported. During field access, a check is performed to ensure 17300that the value written to an Index or Bank register is not out of 17301the range of the register. The Index (or Bank) register is 17302written before each access to the field data. Future support will 17303include allowing individual IndexFields to be wider than the 17304DataRegister width. 17305 17306Fields: Fixed a problem where the AML interpreter was incorrectly 17307attempting to write beyond the end of a Field/OpRegion. This was 17308a boundary case that occurred when a DWORD field was written to a 17309BYTE access OpRegion, forcing multiple writes and causing the 17310interpreter to write one datum too many. 17311 17312Fields: Fixed a problem with Field/OpRegion access where the 17313starting bit address of a field was incorrectly calculated if the 17314current access type was wider than a byte (WordAcc, DwordAcc, or 17315QwordAcc). 17316 17317Fields: Fixed a problem where forward references to individual 17318FieldUnits (individual Field names within a Field definition) were 17319not resolved during the AML table load. 17320 17321Fields: Fixed a problem where forward references from a Field 17322definition to the parent Operation Region definition were not 17323resolved during the AML table load. 17324 17325Fields: Duplicate FieldUnit names within a scope are now detected 17326during AML table load. 17327 17328Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17329returned an incorrect name for the root node. 17330 17331Code and Data Size: Code and Data optimizations have permitted new 17332feature development with an actual reduction in the library size. 17333Current core subsystem library sizes are shown below. These are 17334the code and data sizes for the acpica.lib produced by the 17335Microsoft Visual C++ 6.0 compiler, and these values do not include 17336any ACPI driver or OSPM code. The debug version of the code 17337includes the debug output trace mechanism and has a larger code 17338and data size. Note that these values will vary depending on the 17339efficiency of the compiler and the compiler options used during 17340generation. 17341 17342 Previous Release (10_18_01): 17343 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17344 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17345 17346 Current Release: 17347 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17348 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17349 17350 2) Linux: 17351 17352Improved /proc processor output (Pavel Machek) Re-added 17353MODULE_LICENSE("GPL") to all modules. 17354 17355 3) ASL Compiler version X2030: 17356 17357Duplicate FieldUnit names within a scope are now detected and 17358flagged as errors. 17359 17360 4) Documentation: 17361 17362Programmer Reference updated to reflect OSL and address space 17363handler interface changes described above. 17364 17365---------------------------------------- 17366Summary of changes for this label: 10_18_01 17367 17368ACPI CA Core Subsystem: 17369 17370Fixed a problem with the internal object reference count mechanism 17371that occasionally caused premature object deletion. This resolves 17372all of the outstanding problem reports where an object is deleted 17373in the middle of an interpreter evaluation. Although this problem 17374only showed up in rather obscure cases, the solution to the 17375problem involved an adjustment of all reference counts involving 17376objects attached to namespace nodes. 17377 17378Fixed a problem with Field support in the interpreter where 17379writing to an aligned field whose length is an exact multiple (2 17380or greater) of the field access granularity would cause an attempt 17381to write beyond the end of the field. 17382 17383The top level AML opcode execution functions within the 17384interpreter have been renamed with a more meaningful and 17385consistent naming convention. The modules exmonad.c and 17386exdyadic.c were eliminated. New modules are exoparg1.c, 17387exoparg2.c, exoparg3.c, and exoparg6.c. 17388 17389Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17390 17391Fixed a problem where the AML debugger was causing some internal 17392objects to not be deleted during subsystem termination. 17393 17394Fixed a problem with the external AcpiEvaluateObject interface 17395where the subsystem would fault if the named object to be 17396evaluated referred to a constant such as Zero, Ones, etc. 17397 17398Fixed a problem with IndexFields and BankFields where the 17399subsystem would fault if the index, data, or bank registers were 17400not defined in the same scope as the field itself. 17401 17402Added printf format string checking for compilers that support 17403this feature. Corrected more than 50 instances of issues with 17404format specifiers within invocations of ACPI_DEBUG_PRINT 17405throughout the core subsystem code. 17406 17407The ASL "Revision" operator now returns the ACPI support level 17408implemented in the core - the value "2" since the ACPI 2.0 support 17409is more than 50% implemented. 17410 17411Enhanced the output of the AML debugger "dump namespace" command 17412to output in a more human-readable form. 17413 17414Current core subsystem library code sizes are shown below. These 17415 17416are the code and data sizes for the acpica.lib produced by the 17417Microsoft Visual C++ 6.0 compiler, and these values do not include 17418any ACPI driver or OSPM code. The debug version of the code 17419includes the full debug trace mechanism -- leading to a much 17420 17421larger code and data size. Note that these values will vary 17422depending on the efficiency of the compiler and the compiler 17423options used during generation. 17424 17425 Previous Label (09_20_01): 17426 Non-Debug Version: 65K Code, 5K Data, 70K Total 17427 Debug Version: 138K Code, 58K Data, 196K Total 17428 17429 This Label: 17430 17431 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17432 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17433 17434Linux: 17435 17436Implemented a "Bad BIOS Blacklist" to track machines that have 17437known ASL/AML problems. 17438 17439Enhanced the /proc interface for the thermal zone driver and added 17440support for _HOT (the critical suspend trip point). The 'info' 17441file now includes threshold/policy information, and allows setting 17442of _SCP (cooling preference) and _TZP (polling frequency) values 17443to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 17444frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 17445preference to the passive/quiet mode (if supported by the ASL). 17446 17447Implemented a workaround for a gcc bug that resuted in an OOPs 17448when loading the control method battery driver. 17449 17450 ---------------------------------------- 17451Summary of changes for this label: 09_20_01 17452 17453 ACPI CA Core Subsystem: 17454 17455The AcpiEnableEvent and AcpiDisableEvent interfaces have been 17456modified to allow individual GPE levels to be flagged as wake- 17457enabled (i.e., these GPEs are to remain enabled when the platform 17458sleeps.) 17459 17460The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 17461support wake-enabled GPEs. This means that upon entering the 17462sleep state, all GPEs that are not wake-enabled are disabled. 17463When leaving the sleep state, these GPEs are re-enabled. 17464 17465A local double-precision divide/modulo module has been added to 17466enhance portability to OS kernels where a 64-bit math library is 17467not available. The new module is "utmath.c". 17468 17469Several optimizations have been made to reduce the use of CPU 17470stack. Originally over 2K, the maximum stack usage is now below 174712K at 1860 bytes (1.82k) 17472 17473Fixed a problem with the AcpiGetFirmwareTable interface where the 17474root table pointer was not mapped into a logical address properly. 17475 17476Fixed a problem where a NULL pointer was being dereferenced in the 17477interpreter code for the ASL Notify operator. 17478 17479Fixed a problem where the use of the ASL Revision operator 17480returned an error. This operator now returns the current version 17481of the ACPI CA core subsystem. 17482 17483Fixed a problem where objects passed as control method parameters 17484to AcpiEvaluateObject were always deleted at method termination. 17485However, these objects may end up being stored into the namespace 17486by the called method. The object reference count mechanism was 17487applied to these objects instead of a force delete. 17488 17489Fixed a problem where static strings or buffers (contained in the 17490AML code) that are declared as package elements within the ASL 17491code could cause a fault because the interpreter would attempt to 17492delete them. These objects are now marked with the "static 17493object" flag to prevent any attempt to delete them. 17494 17495Implemented an interpreter optimization to use operands directly 17496from the state object instead of extracting the operands to local 17497variables. This reduces stack use and code size, and improves 17498performance. 17499 17500The module exxface.c was eliminated as it was an unnecessary extra 17501layer of code. 17502 17503Current core subsystem library code sizes are shown below. These 17504are the code and data sizes for the acpica.lib produced by the 17505Microsoft Visual C++ 6.0 compiler, and these values do not include 17506any ACPI driver or OSPM code. The debug version of the code 17507includes the full debug trace mechanism -- leading to a much 17508larger code and data size. Note that these values will vary 17509depending on the efficiency of the compiler and the compiler 17510options used during generation. 17511 17512 Non-Debug Version: 65K Code, 5K Data, 70K Total 17513(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17514Total (Previously 195K) 17515 17516Linux: 17517 17518Support for ACPI 2.0 64-bit integers has been added. All ACPI 17519Integer objects are now 64 bits wide 17520 17521All Acpi data types and structures are now in lower case. Only 17522Acpi macros are upper case for differentiation. 17523 17524 Documentation: 17525 17526Changes to the external interfaces as described above. 17527 17528 ---------------------------------------- 17529Summary of changes for this label: 08_31_01 17530 17531 ACPI CA Core Subsystem: 17532 17533A bug with interpreter implementation of the ASL Divide operator 17534was found and fixed. The implicit function return value (not the 17535explicit store operands) was returning the remainder instead of 17536the quotient. This was a longstanding bug and it fixes several 17537known outstanding issues on various platforms. 17538 17539The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17540been further optimized for size. There are 700 invocations of the 17541DEBUG_PRINT macro alone, so each optimization reduces the size of 17542the debug version of the subsystem significantly. 17543 17544A stack trace mechanism has been implemented. The maximum stack 17545usage is about 2K on 32-bit platforms. The debugger command "stat 17546stack" will display the current maximum stack usage. 17547 17548All public symbols and global variables within the subsystem are 17549now prefixed with the string "Acpi". This keeps all of the 17550symbols grouped together in a kernel map, and avoids conflicts 17551with other kernel subsystems. 17552 17553Most of the internal fixed lookup tables have been moved into the 17554code segment via the const operator. 17555 17556Several enhancements have been made to the interpreter to both 17557reduce the code size and improve performance. 17558 17559Current core subsystem library code sizes are shown below. These 17560are the code and data sizes for the acpica.lib produced by the 17561Microsoft Visual C++ 6.0 compiler, and these values do not include 17562any ACPI driver or OSPM code. The debug version of the code 17563includes the full debug trace mechanism which contains over 700 17564invocations of the DEBUG_PRINT macro, 500 function entry macro 17565invocations, and over 900 function exit macro invocations -- 17566leading to a much larger code and data size. Note that these 17567values will vary depending on the efficiency of the compiler and 17568the compiler options used during generation. 17569 17570 Non-Debug Version: 64K Code, 5K Data, 69K Total 17571Debug Version: 137K Code, 58K Data, 195K Total 17572 17573 Linux: 17574 17575Implemented wbinvd() macro, pending a kernel-wide definition. 17576 17577Fixed /proc/acpi/event to handle poll() and short reads. 17578 17579 ASL Compiler, version X2026: 17580 17581Fixed a problem introduced in the previous label where the AML 17582 17583code emitted for package objects produced packages with zero 17584length. 17585 17586 ---------------------------------------- 17587Summary of changes for this label: 08_16_01 17588 17589ACPI CA Core Subsystem: 17590 17591The following ACPI 2.0 ASL operators have been implemented in the 17592AML interpreter (These are already supported by the Intel ASL 17593compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17594ToBuffer. Support for 64-bit AML constants is implemented in the 17595AML parser, debugger, and disassembler. 17596 17597The internal memory tracking mechanism (leak detection code) has 17598been upgraded to reduce the memory overhead (a separate tracking 17599block is no longer allocated for each memory allocation), and now 17600supports all of the internal object caches. 17601 17602The data structures and code for the internal object caches have 17603been coelesced and optimized so that there is a single cache and 17604memory list data structure and a single group of functions that 17605implement generic cache management. This has reduced the code 17606size in both the debug and release versions of the subsystem. 17607 17608The DEBUG_PRINT macro(s) have been optimized for size and replaced 17609by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17610different, because it generates a single call to an internal 17611function. This results in a savings of about 90 bytes per 17612invocation, resulting in an overall code and data savings of about 1761316% in the debug version of the subsystem. 17614 17615 Linux: 17616 17617Fixed C3 disk corruption problems and re-enabled C3 on supporting 17618machines. 17619 17620Integrated low-level sleep code by Patrick Mochel. 17621 17622Further tweaked source code Linuxization. 17623 17624Other minor fixes. 17625 17626 ASL Compiler: 17627 17628Support for ACPI 2.0 variable length packages is fixed/completed. 17629 17630Fixed a problem where the optional length parameter for the ACPI 176312.0 ToString operator. 17632 17633Fixed multiple extraneous error messages when a syntax error is 17634detected within the declaration line of a control method. 17635 17636 ---------------------------------------- 17637Summary of changes for this label: 07_17_01 17638 17639ACPI CA Core Subsystem: 17640 17641Added a new interface named AcpiGetFirmwareTable to obtain any 17642ACPI table via the ACPI signature. The interface can be called at 17643any time during kernel initialization, even before the kernel 17644virtual memory manager is initialized and paging is enabled. This 17645allows kernel subsystems to obtain ACPI tables very early, even 17646before the ACPI CA subsystem is initialized. 17647 17648Fixed a problem where Fields defined with the AnyAcc attribute 17649could be resolved to the incorrect address under the following 17650conditions: 1) the field width is larger than 8 bits and 2) the 17651parent operation region is not defined on a DWORD boundary. 17652 17653Fixed a problem where the interpreter is not being locked during 17654namespace initialization (during execution of the _INI control 17655methods), causing an error when an attempt is made to release it 17656later. 17657 17658ACPI 2.0 support in the AML Interpreter has begun and will be 17659ongoing throughout the rest of this year. In this label, The Mod 17660operator is implemented. 17661 17662Added a new data type to contain full PCI addresses named 17663ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17664and Function values. 17665 17666 Linux: 17667 17668Enhanced the Linux version of the source code to change most 17669capitalized ACPI type names to lowercase. For example, all 17670instances of ACPI_STATUS are changed to acpi_status. This will 17671result in a large diff, but the change is strictly cosmetic and 17672aligns the CA code closer to the Linux coding standard. 17673 17674OSL Interfaces: 17675 17676The interfaces to the PCI configuration space have been changed to 17677add the PCI Segment number and to split the single 32-bit combined 17678DeviceFunction field into two 16-bit fields. This was 17679accomplished by moving the four values that define an address in 17680PCI configuration space (segment, bus, device, and function) to 17681the new ACPI_PCI_ID structure. 17682 17683The changes to the PCI configuration space interfaces led to a 17684reexamination of the complete set of address space access 17685interfaces for PCI, I/O, and Memory. The previously existing 18 17686interfaces have proven difficult to maintain (any small change 17687must be propagated across at least 6 interfaces) and do not easily 17688allow for future expansion to 64 bits if necessary. Also, on some 17689systems, it would not be appropriate to demultiplex the access 17690width (8, 16, 32,or 64) before calling the OSL if the 17691corresponding native OS interfaces contain a similar access width 17692parameter. For these reasons, the 18 address space interfaces 17693have been replaced by these 6 new ones: 17694 17695AcpiOsReadPciConfiguration 17696AcpiOsWritePciConfiguration 17697AcpiOsReadMemory 17698AcpiOsWriteMemory 17699AcpiOsReadPort 17700AcpiOsWritePort 17701 17702Added a new interface named AcpiOsGetRootPointer to allow the OSL 17703to perform the platform and/or OS-specific actions necessary to 17704obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17705interface will simply call down to the CA core to perform the low- 17706memory search for the table. On IA-64, the RSDP is obtained from 17707EFI. Migrating this interface to the OSL allows the CA core to 17708 17709remain OS and platform independent. 17710 17711Added a new interface named AcpiOsSignal to provide a generic 17712"function code and pointer" interface for various miscellaneous 17713signals and notifications that must be made to the host OS. The 17714first such signals are intended to support the ASL Fatal and 17715Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17716interface has been obsoleted. 17717 17718The definition of the AcpiFormatException interface has been 17719changed to simplify its use. The caller no longer must supply a 17720buffer to the call; A pointer to a const string is now returned 17721directly. This allows the call to be easily used in printf 17722statements, etc. since the caller does not have to manage a local 17723buffer. 17724 17725 17726 ASL Compiler, Version X2025: 17727 17728The ACPI 2.0 Switch/Case/Default operators have been implemented 17729and are fully functional. They will work with all ACPI 1.0 17730interpreters, since the operators are simply translated to If/Else 17731pairs. 17732 17733The ACPI 2.0 ElseIf operator is implemented and will also work 17734with 1.0 interpreters, for the same reason. 17735 17736Implemented support for ACPI 2.0 variable-length packages. These 17737packages have a separate opcode, and their size is determined by 17738the interpreter at run-time. 17739 17740Documentation The ACPI CA Programmer Reference has been updated to 17741reflect the new interfaces and changes to existing interfaces. 17742 17743 ------------------------------------------ 17744Summary of changes for this label: 06_15_01 17745 17746 ACPI CA Core Subsystem: 17747 17748Fixed a problem where a DWORD-accessed field within a Buffer 17749object would get its byte address inadvertently rounded down to 17750the nearest DWORD. Buffers are always Byte-accessible. 17751 17752 ASL Compiler, version X2024: 17753 17754Fixed a problem where the Switch() operator would either fault or 17755hang the compiler. Note however, that the AML code for this ACPI 177562.0 operator is not yet implemented. 17757 17758Compiler uses the new AcpiOsGetTimer interface to obtain compile 17759timings. 17760 17761Implementation of the CreateField operator automatically converts 17762a reference to a named field within a resource descriptor from a 17763byte offset to a bit offset if required. 17764 17765Added some missing named fields from the resource descriptor 17766support. These are the names that are automatically created by the 17767compiler to reference fields within a descriptor. They are only 17768valid at compile time and are not passed through to the AML 17769interpreter. 17770 17771Resource descriptor named fields are now typed as Integers and 17772subject to compile-time typechecking when used in expressions. 17773 17774 ------------------------------------------ 17775Summary of changes for this label: 05_18_01 17776 17777 ACPI CA Core Subsystem: 17778 17779Fixed a couple of problems in the Field support code where bits 17780from adjacent fields could be returned along with the proper field 17781bits. Restructured the field support code to improve performance, 17782readability and maintainability. 17783 17784New DEBUG_PRINTP macro automatically inserts the procedure name 17785into the output, saving hundreds of copies of procedure name 17786strings within the source, shrinking the memory footprint of the 17787debug version of the core subsystem. 17788 17789 Source Code Structure: 17790 17791The source code directory tree was restructured to reflect the 17792current organization of the component architecture. Some files 17793and directories have been moved and/or renamed. 17794 17795 Linux: 17796 17797Fixed leaking kacpidpc processes. 17798 17799Fixed queueing event data even when /proc/acpi/event is not 17800opened. 17801 17802 ASL Compiler, version X2020: 17803 17804Memory allocation performance enhancement - over 24X compile time 17805improvement on large ASL files. Parse nodes and namestring 17806buffers are now allocated from a large internal compiler buffer. 17807 17808The temporary .SRC file is deleted unless the "-s" option is 17809specified 17810 17811The "-d" debug output option now sends all output to the .DBG file 17812instead of the console. 17813 17814"External" second parameter is now optional 17815 17816"ElseIf" syntax now properly allows the predicate 17817 17818Last operand to "Load" now recognized as a Target operand 17819 17820Debug object can now be used anywhere as a normal object. 17821 17822ResourceTemplate now returns an object of type BUFFER 17823 17824EISAID now returns an object of type INTEGER 17825 17826"Index" now works with a STRING operand 17827 17828"LoadTable" now accepts optional parameters 17829 17830"ToString" length parameter is now optional 17831 17832"Interrupt (ResourceType," parse error fixed. 17833 17834"Register" with a user-defined region space parse error fixed 17835 17836Escaped backslash at the end of a string ("\\") scan/parse error 17837fixed 17838 17839"Revision" is now an object of type INTEGER. 17840 17841 17842 17843------------------------------------------ 17844Summary of changes for this label: 05_02_01 17845 17846Linux: 17847 17848/proc/acpi/event now blocks properly. 17849 17850Removed /proc/sys/acpi. You can still dump your DSDT from 17851/proc/acpi/dsdt. 17852 17853 ACPI CA Core Subsystem: 17854 17855Fixed a problem introduced in the previous label where some of the 17856"small" resource descriptor types were not recognized. 17857 17858Improved error messages for the case where an ASL Field is outside 17859the range of the parent operation region. 17860 17861 ASL Compiler, version X2018: 17862 17863 17864Added error detection for ASL Fields that extend beyond the length 17865of the parent operation region (only if the length of the region 17866is known at compile time.) This includes fields that have a 17867minimum access width that is smaller than the parent region, and 17868individual field units that are partially or entirely beyond the 17869extent of the parent. 17870 17871 17872 17873------------------------------------------ 17874Summary of changes for this label: 04_27_01 17875 17876 ACPI CA Core Subsystem: 17877 17878Fixed a problem where the namespace mutex could be released at the 17879wrong time during execution of AcpiRemoveAddressSpaceHandler. 17880 17881Added optional thread ID output for debug traces, to simplify 17882debugging of multiple threads. Added context switch notification 17883when the debug code realizes that a different thread is now 17884executing ACPI code. 17885 17886Some additional external data types have been prefixed with the 17887string "ACPI_" for consistency. This may effect existing code. 17888The data types affected are the external callback typedefs - e.g., 17889 17890WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17891 17892 Linux: 17893 17894Fixed an issue with the OSL semaphore implementation where a 17895thread was waking up with an error from receiving a SIGCHLD 17896signal. 17897 17898Linux version of ACPI CA now uses the system C library for string 17899manipulation routines instead of a local implementation. 17900 17901Cleaned up comments and removed TBDs. 17902 17903 ASL Compiler, version X2017: 17904 17905Enhanced error detection and reporting for all file I/O 17906operations. 17907 17908 Documentation: 17909 17910Programmer Reference updated to version 1.06. 17911 17912 17913 17914------------------------------------------ 17915Summary of changes for this label: 04_13_01 17916 17917 ACPI CA Core Subsystem: 17918 17919Restructured support for BufferFields and RegionFields. 17920BankFields support is now fully operational. All known 32-bit 17921limitations on field sizes have been removed. Both BufferFields 17922and (Operation) RegionFields are now supported by the same field 17923management code. 17924 17925Resource support now supports QWORD address and IO resources. The 1792616/32/64 bit address structures and the Extended IRQ structure 17927have been changed to properly handle Source Resource strings. 17928 17929A ThreadId of -1 is now used to indicate a "mutex not acquired" 17930condition internally and must never be returned by AcpiOsThreadId. 17931This reserved value was changed from 0 since Unix systems allow a 17932thread ID of 0. 17933 17934Linux: 17935 17936Driver code reorganized to enhance portability 17937 17938Added a kernel configuration option to control ACPI_DEBUG 17939 17940Fixed the EC driver to honor _GLK. 17941 17942ASL Compiler, version X2016: 17943 17944Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17945address space was set to 0, not 0x7f as it should be. 17946 17947 ------------------------------------------ 17948Summary of changes for this label: 03_13_01 17949 17950 ACPI CA Core Subsystem: 17951 17952During ACPI initialization, the _SB_._INI method is now run if 17953present. 17954 17955Notify handler fix - notifies are deferred until the parent method 17956completes execution. This fixes the "mutex already acquired" 17957issue seen occasionally. 17958 17959Part of the "implicit conversion" rules in ACPI 2.0 have been 17960found to cause compatibility problems with existing ASL/AML. The 17961convert "result-to-target-type" implementation has been removed 17962for stores to method Args and Locals. Source operand conversion 17963is still fully implemented. Possible changes to ACPI 2.0 17964specification pending. 17965 17966Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17967length. 17968 17969Fix for compiler warnings for 64-bit compiles. 17970 17971 Linux: 17972 17973/proc output aligned for easier parsing. 17974 17975Release-version compile problem fixed. 17976 17977New kernel configuration options documented in Configure.help. 17978 17979IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17980context" message. 17981 17982 OSPM: 17983 17984Power resource driver integrated with bus manager. 17985 17986Fixed kernel fault during active cooling for thermal zones. 17987 17988Source Code: 17989 17990The source code tree has been restructured. 17991 17992 17993 17994------------------------------------------ 17995Summary of changes for this label: 03_02_01 17996 17997 Linux OS Services Layer (OSL): 17998 17999Major revision of all Linux-specific code. 18000 18001Modularized all ACPI-specific drivers. 18002 18003Added new thermal zone and power resource drivers. 18004 18005Revamped /proc interface (new functionality is under /proc/acpi). 18006 18007New kernel configuration options. 18008 18009 Linux known issues: 18010 18011New kernel configuration options not documented in Configure.help 18012yet. 18013 18014 18015Module dependencies not currently implemented. If used, they 18016should be loaded in this order: busmgr, power, ec, system, 18017processor, battery, ac_adapter, button, thermal. 18018 18019Modules will not load if CONFIG_MODVERSION is set. 18020 18021IBM 600E - entering S5 may reboot instead of shutting down. 18022 18023IBM 600E - Sleep button may generate "Invalid <NULL> context" 18024message. 18025 18026Some systems may fail with "execution mutex already acquired" 18027message. 18028 18029 ACPI CA Core Subsystem: 18030 18031Added a new OSL Interface, AcpiOsGetThreadId. This was required 18032for the deadlock detection code. Defined to return a non-zero, 32- 18033bit thread ID for the currently executing thread. May be a non- 18034zero constant integer on single-thread systems. 18035 18036Implemented deadlock detection for internal subsystem mutexes. We 18037may add conditional compilation for this code (debug only) later. 18038 18039ASL/AML Mutex object semantics are now fully supported. This 18040includes multiple acquires/releases by owner and support for the 18041 18042Mutex SyncLevel parameter. 18043 18044A new "Force Release" mechanism automatically frees all ASL 18045Mutexes that have been acquired but not released when a thread 18046exits the interpreter. This forces conformance to the ACPI spec 18047("All mutexes must be released when an invocation exits") and 18048prevents deadlocked ASL threads. This mechanism can be expanded 18049(later) to monitor other resource acquisitions if OEM ASL code 18050continues to misbehave (which it will). 18051 18052Several new ACPI exception codes have been added for the Mutex 18053support. 18054 18055Recursive method calls are now allowed and supported (the ACPI 18056spec does in fact allow recursive method calls.) The number of 18057recursive calls is subject to the restrictions imposed by the 18058SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 18059parameter. 18060 18061Implemented support for the SyncLevel parameter for control 18062methods (ACPI 2.0 feature) 18063 18064Fixed a deadlock problem when multiple threads attempted to use 18065the interpreter. 18066 18067Fixed a problem where the string length of a String package 18068element was not always set in a package returned from 18069AcpiEvaluateObject. 18070 18071Fixed a problem where the length of a String package element was 18072not always included in the length of the overall package returned 18073from AcpiEvaluateObject. 18074 18075Added external interfaces (Acpi*) to the ACPI debug memory 18076manager. This manager keeps a list of all outstanding 18077allocations, and can therefore detect memory leaks and attempts to 18078free memory blocks more than once. Useful for code such as the 18079power manager, etc. May not be appropriate for device drivers. 18080Performance with the debug code enabled is slow. 18081 18082The ACPI Global Lock is now an optional hardware element. 18083 18084 ASL Compiler Version X2015: 18085 18086Integrated changes to allow the compiler to be generated on 18087multiple platforms. 18088 18089Linux makefile added to generate the compiler on Linux 18090 18091 Source Code: 18092 18093All platform-specific headers have been moved to their own 18094subdirectory, Include/Platform. 18095 18096New source file added, Interpreter/ammutex.c 18097 18098New header file, Include/acstruct.h 18099 18100 Documentation: 18101 18102The programmer reference has been updated for the following new 18103interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 18104 18105 ------------------------------------------ 18106Summary of changes for this label: 02_08_01 18107 18108Core ACPI CA Subsystem: Fixed a problem where an error was 18109incorrectly returned if the return resource buffer was larger than 18110the actual data (in the resource interfaces). 18111 18112References to named objects within packages are resolved to the 18113 18114full pathname string before packages are returned directly (via 18115the AcpiEvaluateObject interface) or indirectly via the resource 18116interfaces. 18117 18118Linux OS Services Layer (OSL): 18119 18120Improved /proc battery interface. 18121 18122 18123Added C-state debugging output and other miscellaneous fixes. 18124 18125ASL Compiler Version X2014: 18126 18127All defined method arguments can now be used as local variables, 18128including the ones that are not actually passed in as parameters. 18129The compiler tracks initialization of the arguments and issues an 18130exception if they are used without prior assignment (just like 18131locals). 18132 18133The -o option now specifies a filename prefix that is used for all 18134output files, including the AML output file. Otherwise, the 18135default behavior is as follows: 1) the AML goes to the file 18136specified in the DSDT. 2) all other output files use the input 18137source filename as the base. 18138 18139 ------------------------------------------ 18140Summary of changes for this label: 01_25_01 18141 18142Core ACPI CA Subsystem: Restructured the implementation of object 18143store support within the interpreter. This includes support for 18144the Store operator as well as any ASL operators that include a 18145target operand. 18146 18147Partially implemented support for Implicit Result-to-Target 18148conversion. This is when a result object is converted on the fly 18149to the type of an existing target object. Completion of this 18150support is pending further analysis of the ACPI specification 18151concerning this matter. 18152 18153CPU-specific code has been removed from the subsystem (hardware 18154directory). 18155 18156New Power Management Timer functions added 18157 18158Linux OS Services Layer (OSL): Moved system state transition code 18159to the core, fixed it, and modified Linux OSL accordingly. 18160 18161Fixed C2 and C3 latency calculations. 18162 18163 18164We no longer use the compilation date for the version message on 18165initialization, but retrieve the version from AcpiGetSystemInfo(). 18166 18167Incorporated for fix Sony VAIO machines. 18168 18169Documentation: The Programmer Reference has been updated and 18170reformatted. 18171 18172 18173ASL Compiler: Version X2013: Fixed a problem where the line 18174numbering and error reporting could get out of sync in the 18175presence of multiple include files. 18176 18177 ------------------------------------------ 18178Summary of changes for this label: 01_15_01 18179 18180Core ACPI CA Subsystem: 18181 18182Implemented support for type conversions in the execution of the 18183ASL Concatenate operator (The second operand is converted to 18184match the type of the first operand before concatenation.) 18185 18186Support for implicit source operand conversion is partially 18187implemented. The ASL source operand types Integer, Buffer, and 18188String are freely interchangeable for most ASL operators and are 18189converted by the interpreter on the fly as required. Implicit 18190Target operand conversion (where the result is converted to the 18191target type before storing) is not yet implemented. 18192 18193Support for 32-bit and 64-bit BCD integers is implemented. 18194 18195Problem fixed where a field read on an aligned field could cause a 18196read past the end of the field. 18197 18198New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 18199does not return a value, but the caller expects one. (The ASL 18200compiler flags this as a warning.) 18201 18202ASL Compiler: 18203 18204Version X2011: 182051. Static typechecking of all operands is implemented. This 18206prevents the use of invalid objects (such as using a Package where 18207an Integer is required) at compile time instead of at interpreter 18208run-time. 182092. The ASL source line is printed with ALL errors and warnings. 182103. Bug fix for source EOF without final linefeed. 182114. Debug option is split into a parse trace and a namespace trace. 182125. Namespace output option (-n) includes initial values for 18213integers and strings. 182146. Parse-only option added for quick syntax checking. 182157. Compiler checks for duplicate ACPI name declarations 18216 18217Version X2012: 182181. Relaxed typechecking to allow interchangeability between 18219strings, integers, and buffers. These types are now converted by 18220the interpreter at runtime. 182212. Compiler reports time taken by each internal subsystem in the 18222debug output file. 18223 18224 18225 ------------------------------------------ 18226Summary of changes for this label: 12_14_00 18227 18228ASL Compiler: 18229 18230This is the first official release of the compiler. Since the 18231compiler requires elements of the Core Subsystem, this label 18232synchronizes everything. 18233 18234------------------------------------------ 18235Summary of changes for this label: 12_08_00 18236 18237 18238Fixed a problem where named references within the ASL definition 18239of both OperationRegions and CreateXXXFields did not work 18240properly. The symptom was an AE_AML_OPERAND_TYPE during 18241initialization of the region/field. This is similar (but not 18242related internally) to the problem that was fixed in the last 18243label. 18244 18245Implemented both 32-bit and 64-bit support for the BCD ASL 18246functions ToBCD and FromBCD. 18247 18248Updated all legal headers to include "2000" in the copyright 18249years. 18250 18251 ------------------------------------------ 18252Summary of changes for this label: 12_01_00 18253 18254Fixed a problem where method invocations within the ASL definition 18255of both OperationRegions and CreateXXXFields did not work 18256properly. The symptom was an AE_AML_OPERAND_TYPE during 18257initialization of the region/field: 18258 18259 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18260[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18261(0x3005) 18262 18263Fixed a problem where operators with more than one nested 18264subexpression would fail. The symptoms were varied, by mostly 18265AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18266problem that has gone unnoticed until now. 18267 18268 Subtract (Add (1,2), Multiply (3,4)) 18269 18270Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18271previous build (The prefix part of a relative path was handled 18272incorrectly). 18273 18274Fixed a problem where Operation Region initialization failed if 18275the operation region name was a "namepath" instead of a simple 18276"nameseg". Symptom was an AE_NO_OPERAND error. 18277 18278Fixed a problem where an assignment to a local variable via the 18279indirect RefOf mechanism only worked for the first such 18280assignment. Subsequent assignments were ignored. 18281 18282 ------------------------------------------ 18283Summary of changes for this label: 11_15_00 18284 18285ACPI 2.0 table support with backwards support for ACPI 1.0 and the 182860.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18287the AML interpreter does NOT have support for the new 2.0 ASL 18288grammar terms at this time. 18289 18290All ACPI hardware access is via the GAS structures in the ACPI 2.0 18291FADT. 18292 18293All physical memory addresses across all platforms are now 64 bits 18294wide. Logical address width remains dependent on the platform 18295(i.e., "void *"). 18296 18297AcpiOsMapMemory interface changed to a 64-bit physical address. 18298 18299The AML interpreter integer size is now 64 bits, as per the ACPI 183002.0 specification. 18301 18302For backwards compatibility with ACPI 1.0, ACPI tables with a 18303revision number less than 2 use 32-bit integers only. 18304 18305Fixed a problem where the evaluation of OpRegion operands did not 18306always resolve them to numbers properly. 18307 18308------------------------------------------ 18309Summary of changes for this label: 10_20_00 18310 18311Fix for CBN_._STA issue. This fix will allow correct access to 18312CBN_ OpRegions when the _STA returns 0x8. 18313 18314Support to convert ACPI constants (Ones, Zeros, One) to actual 18315values before a package object is returned 18316 18317Fix for method call as predicate to if/while construct causing 18318incorrect if/while behavior 18319 18320Fix for Else block package lengths sometimes calculated wrong (if 18321block > 63 bytes) 18322 18323Fix for Processor object length field, was always zero 18324 18325Table load abort if FACP sanity check fails 18326 18327Fix for problem with Scope(name) if name already exists 18328 18329Warning emitted if a named object referenced cannot be found 18330(resolved) during method execution. 18331 18332 18333 18334 18335 18336------------------------------------------ 18337Summary of changes for this label: 9_29_00 18338 18339New table initialization interfaces: AcpiInitializeSubsystem no 18340longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18341necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18342>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18343AcpiLoadTables 18344 18345Note: These interface changes require changes to all existing OSDs 18346 18347The PCI_Config default address space handler is always installed 18348at the root namespace object. 18349 18350------------------------------------------- 18351Summary of changes for this label: 09_15_00 18352 18353The new initialization architecture is implemented. New 18354interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18355AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18356 18357(Namespace is automatically loaded when a table is loaded) 18358 18359The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1836052 bytes to 32 bytes. There is usually one of these for every 18361namespace object, so the memory savings is significant. 18362 18363Implemented just-in-time evaluation of the CreateField operators. 18364 18365Bug fixes for IA-64 support have been integrated. 18366 18367Additional code review comments have been implemented 18368 18369The so-called "third pass parse" has been replaced by a final walk 18370through the namespace to initialize all operation regions (address 18371spaces) and fields that have not yet been initialized during the 18372execution of the various _INI and REG methods. 18373 18374New file - namespace/nsinit.c 18375 18376------------------------------------------- 18377Summary of changes for this label: 09_01_00 18378 18379Namespace manager data structures have been reworked to change the 18380primary object from a table to a single object. This has 18381resulted in dynamic memory savings of 3X within the namespace and 183822X overall in the ACPI CA subsystem. 18383 18384Fixed problem where the call to AcpiEvFindPciRootBuses was 18385inadvertently left commented out. 18386 18387Reduced the warning count when generating the source with the GCC 18388compiler. 18389 18390Revision numbers added to each module header showing the 18391SourceSafe version of the file. Please refer to this version 18392number when giving us feedback or comments on individual modules. 18393 18394The main object types within the subsystem have been renamed to 18395clarify their purpose: 18396 18397ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18398ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18399ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18400 18401NOTE: no changes to the initialization sequence are included in 18402this label. 18403 18404------------------------------------------- 18405Summary of changes for this label: 08_23_00 18406 18407Fixed problem where TerminateControlMethod was being called 18408multiple times per method 18409 18410Fixed debugger problem where single stepping caused a semaphore to 18411be oversignalled 18412 18413Improved performance through additional parse object caching - 18414added ACPI_EXTENDED_OP type 18415 18416------------------------------------------- 18417Summary of changes for this label: 08_10_00 18418 18419Parser/Interpreter integration: Eliminated the creation of 18420complete parse trees for ACPI tables and control methods. 18421Instead, parse subtrees are created and then deleted as soon as 18422they are processed (Either entered into the namespace or executed 18423by the interpreter). This reduces the use of dynamic kernel 18424memory significantly. (about 10X) 18425 18426Exception codes broken into classes and renumbered. Be sure to 18427recompile all code that includes acexcep.h. Hopefully we won't 18428have to renumber the codes again now that they are split into 18429classes (environment, programmer, AML code, ACPI table, and 18430internal). 18431 18432Fixed some additional alignment issues in the Resource Manager 18433subcomponent 18434 18435Implemented semaphore tracking in the AcpiExec utility, and fixed 18436several places where mutexes/semaphores were being unlocked 18437without a corresponding lock operation. There are no known 18438semaphore or mutex "leaks" at this time. 18439 18440Fixed the case where an ASL Return operator is used to return an 18441unnamed package. 18442 18443------------------------------------------- 18444Summary of changes for this label: 07_28_00 18445 18446Fixed a problem with the way addresses were calculated in 18447AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 18448manifested itself when a Field was created with WordAccess or 18449DwordAccess, but the field unit defined within the Field was less 18450 18451than a Word or Dword. 18452 18453Fixed a problem in AmlDumpOperands() module's loop to pull 18454operands off of the operand stack to display information. The 18455problem manifested itself as a TLB error on 64-bit systems when 18456accessing an operand stack with two or more operands. 18457 18458Fixed a problem with the PCI configuration space handlers where 18459context was getting confused between accesses. This required a 18460change to the generic address space handler and address space 18461setup definitions. Handlers now get both a global handler context 18462(this is the one passed in by the user when executing 18463AcpiInstallAddressSpaceHandler() and a specific region context 18464that is unique to each region (For example, the _ADR, _SEG and 18465_BBN values associated with a specific region). The generic 18466function definitions have changed to the following: 18467 18468typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18469UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18470*HandlerContext, // This used to be void *Context void 18471*RegionContext); // This is an additional parameter 18472 18473typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18474RegionHandle, UINT32 Function, void *HandlerContext, void 18475**RegionContext); // This used to be **ReturnContext 18476 18477------------------------------------------- 18478Summary of changes for this label: 07_21_00 18479 18480Major file consolidation and rename. All files within the 18481interpreter have been renamed as well as most header files. This 18482was done to prevent collisions with existing files in the host 18483OSs -- filenames such as "config.h" and "global.h" seem to be 18484quite common. The VC project files have been updated. All 18485makefiles will require modification. 18486 18487The parser/interpreter integration continues in Phase 5 with the 18488implementation of a complete 2-pass parse (the AML is parsed 18489twice) for each table; This avoids the construction of a huge 18490parse tree and therefore reduces the amount of dynamic memory 18491required by the subsystem. Greater use of the parse object cache 18492means that performance is unaffected. 18493 18494Many comments from the two code reviews have been rolled in. 18495 18496The 64-bit alignment support is complete. 18497 18498------------------------------------------- 18499Summary of changes for this label: 06_30_00 18500 18501With a nod and a tip of the hat to the technology of yesteryear, 18502we've added support in the source code for 80 column output 18503devices. The code is now mostly constrained to 80 columns or 18504less to support environments and editors that 1) cannot display 18505or print more than 80 characters on a single line, and 2) cannot 18506disable line wrapping. 18507 18508A major restructuring of the namespace data structure has been 18509completed. The result is 1) cleaner and more 18510understandable/maintainable code, and 2) a significant reduction 18511in the dynamic memory requirement for each named ACPI object 18512(almost half). 18513 18514------------------------------------------- 18515Summary of changes for this label: 06_23_00 18516 18517Linux support has been added. In order to obtain approval to get 18518the ACPI CA subsystem into the Linux kernel, we've had to make 18519quite a few changes to the base subsystem that will affect all 18520users (all the changes are generic and OS- independent). The 18521effects of these global changes have been somewhat far reaching. 18522Files have been merged and/or renamed and interfaces have been 18523renamed. The major changes are described below. 18524 18525Osd* interfaces renamed to AcpiOs* to eliminate namespace 18526pollution/confusion within our target kernels. All OSD 18527interfaces must be modified to match the new naming convention. 18528 18529Files merged across the subsystem. A number of the smaller source 18530and header files have been merged to reduce the file count and 18531increase the density of the existing files. There are too many 18532to list here. In general, makefiles that call out individual 18533files will require rebuilding. 18534 18535Interpreter files renamed. All interpreter files now have the 18536prefix am* instead of ie* and is*. 18537 18538Header files renamed: The acapi.h file is now acpixf.h. The 18539acpiosd.h file is now acpiosxf.h. We are removing references to 18540the acronym "API" since it is somewhat windowsy. The new name is 18541"external interface" or xface or xf in the filenames.j 18542 18543 18544All manifest constants have been forced to upper case (some were 18545mixed case.) Also, the string "ACPI_" has been prepended to many 18546(not all) of the constants, typedefs, and structs. 18547 18548The globals "DebugLevel" and "DebugLayer" have been renamed 18549"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18550 18551All other globals within the subsystem are now prefixed with 18552"AcpiGbl_" Internal procedures within the subsystem are now 18553prefixed with "Acpi" (with only a few exceptions). The original 18554two-letter abbreviation for the subcomponent remains after "Acpi" 18555- for example, CmCallocate became AcpiCmCallocate. 18556 18557Added a source code translation/conversion utility. Used to 18558generate the Linux source code, it can be modified to generate 18559other types of source as well. Can also be used to cleanup 18560existing source by removing extraneous spaces and blank lines. 18561Found in tools/acpisrc/* 18562 18563OsdUnMapMemory was renamed to OsdUnmapMemory and then 18564AcpiOsUnmapMemory. (UnMap became Unmap). 18565 18566A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18567When set to one, this indicates that the caller wants to use the 18568 18569semaphore as a mutex, not a counting semaphore. ACPI CA uses 18570both types. However, implementers of this call may want to use 18571different OS primitives depending on the type of semaphore 18572requested. For example, some operating systems provide separate 18573 18574"mutex" and "semaphore" interfaces - where the mutex interface is 18575much faster because it doesn't have all the overhead of a full 18576semaphore implementation. 18577 18578Fixed a deadlock problem where a method that accesses the PCI 18579address space can block forever if it is the first access to the 18580space. 18581 18582------------------------------------------- 18583Summary of changes for this label: 06_02_00 18584 18585Support for environments that cannot handle unaligned data 18586accesses (e.g. firmware and OS environments devoid of alignment 18587handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18588been added (via configurable macros) in these three areas: - 18589Transfer of data from the raw AML byte stream is done via byte 18590moves instead of word/dword/qword moves. - External objects are 18591aligned within the user buffer, including package elements (sub- 18592objects). - Conversion of name strings to UINT32 Acpi Names is now 18593done byte-wise. 18594 18595The Store operator was modified to mimic Microsoft's 18596implementation when storing to a Buffer Field. 18597 18598Added a check of the BM_STS bit before entering C3. 18599 18600The methods subdirectory has been obsoleted and removed. A new 18601file, cmeval.c subsumes the functionality. 18602 18603A 16-bit (DOS) version of AcpiExec has been developed. The 18604makefile is under the acpiexec directory. 18605